hns - 日記自動生成システム - Version 2.19.9

先月 2002年06月 来月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2002年06月07日(金) 旧暦 [n年日記]

#1 [NetBSD] objdump を初めて(意味のあることに)使って見た

wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
trap type 200 at 91c9dc
から、objdump -d ./INSTALL/netbsd
0091c914 <pdc202xx_setup_channel>:
  ...
  91c9bc:       40 82 01 e4     bne     91cba0 <pdc202xx_setup_channel+0x28c>
  91c9c0:       80 1d 00 a8     lwz     r0,168(r29)
  91c9c4:       39 20 00 11     li      r9,17
  91c9c8:       54 00 07 3e     clrlwi  r0,r0,28
  91c9cc:       81 7d 00 ac     lwz     r11,172(r29)
  91c9d0:       7d 29 00 30     slw     r9,r9,r0
  91c9d4:       7f 6b 48 ae     lbzx    r27,r11,r9
  91c9d8:       7c 00 06 ac     eieio
> 91c9dc:       7c 00 04 ac     sync
  91c9e0:       80 7d 00 98     lwz     r3,152(r29)
  91c9e4:       80 9d 00 9c     lwz     r4,156(r29)
  91c9e8:       38 a0 00 50     li      r5,80
  91c9ec:       4b ff 04 0d     bl      90cdf8 <pci_conf_read>
view sys/dev/pci/pciide.c
   3657 void
   3658 pdc202xx_setup_channel(chp)
   3659         struct channel_softc *chp;
   ....
   3678         /* Per channel settings */
   3679         if (PDC_IS_262(sc)) {
   3680                 scr = bus_space_read_1(sc->sc_dma_iot, sc->sc_dma_ioh,
   3681                     PDC262_U66);
   3682                 st = pci_conf_read(sc->sc_pc, sc->sc_tag, PDC2xx_STATE);
sys/arch/macppc/include/bus.h より
 84 #define MACPPC_BUS_STRIDE_MASK  0x0000000f
 88 #define __BA(t, h, o) ((void *)((h) + ((o) << ((t) & MACPPC_BUS_STRIDE_MASK))))
223 #define bus_space_read_1(t, h, o)       (in8(__BA(t, h, o)))
sys/dev/pci/pciide_pdc202xx_reg.h:
#define PDC262_U66    0x11
#define PDC2xx_STATE          0x50
手で少し書加えて見ると:
bne     91cba0 <pdc202xx_setup_channel+0x28c> if (PDC_IS_262(sc)) {
lwz     r0,168(r29)                       sc->sc_dma_ioh    ; (h)
li      r9,17                             PDC262_U66        ; (o)
clrlwi  r0,r0,28       
lwz     r11,172(r29)                      sc->sc_dma_iot    ; (t)
slw     r9,r9,r0       shift left word                      ; (o) <<
lbzx    r27,r11,r9                        bus_space_read_1                       
eieio
sync
lwz     r3,152(r29)	                  sc->sc_pc
lwz     r4,156(r29)                       sc->sc_tag
li      r5,80                             PDC2xx_STATE
bl      90cdf8 <pci_conf_read>
以上 gcc-2.95.3 の場合。gcc-3.x で作って見ようとしているが.. stdarg.h, varargs.h が混乱していて...
__builtin_saveregs not supported by this target
structure has no member named `__va'
と思ったけれど、既に作ってあるものでも同じだったので、gcc-3.2 で:
  34cb60:       40 82 01 e4     bne     34cd44 <pdc202xx_setup_channel+0x2cc>
  34cb64:       80 1c 00 a8     lwz     r0,168(r28)
  34cb68:       39 20 00 11     li      r9,17
  34cb6c:       54 00 07 3e     clrlwi  r0,r0,28
  34cb70:       81 7c 00 ac     lwz     r11,172(r28)
  34cb74:       7d 29 00 30     slw     r9,r9,r0
  34cb78:       7f 6b 48 ae     lbzx    r27,r11,r9
  34cb7c:       7c 00 06 ac     eieio
  34cb80:       7c 00 04 ac     sync
  34cb84:       80 7c 00 98     lwz     r3,152(r28)
  34cb88:       80 9c 00 9c     lwz     r4,156(r28)
  34cb8c:       38 a0 00 50     li      r5,80
  34cb90:       4b fe bf 21     bl      338ab0 <pci_conf_read>
r29 -> r28 は違うのはいいとして、全く同じ。
603e 問題かなぁ。
;the sync operation is not broadcast onto the 603e bus interface.
って書いてあるものがあるので。
The Enforce In-Order Execution of I/O (eieio) instruction is used to ensure memory reordering of noncacheable memory acess. Since the 603e does not reroder noncacheable memory access, the eieio instruction is treated as a no-op.
ともある。最適化を変えて make した方がいいのかな。 何も考えないと -O2 になっている。 -O だと (pciide.o だけ -O ね。gcc-2.95.3)
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
trap type 200 at 34d47c
Press a key to panic.
panic: trap
やはりだめのよう。しかし少し先に行っている
  34d458:       80 1c 00 a8     lwz     r0,168(r28)
  34d45c:       54 00 07 3e     clrlwi  r0,r0,28
  34d460:       39 20 00 11     li      r9,17
  34d464:       7d 29 00 30     slw     r9,r9,r0
  34d468:       81 7c 00 ac     lwz     r11,172(r28)
  34d46c:       7c 00 06 ac     eieio
  34d470:       7c 00 04 ac     sync
  34d474:       7f e9 58 ae     lbzx    r31,r9,r11
  34d478:       80 7c 00 98     lwz     r3,152(r28)
> 34d47c:       80 9c 00 9c     lwz     r4,156(r28)
単に順が入替っているためか。-O 無でやって見よう。
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
trap type 200 at 353d90
Press a key to panic.
ちょっと違うところになっている。
00353d78 <__inb>:
  353d78:       94 21 ff e0     stwu    r1,-32(r1)
  353d7c:       93 e1 00 1c     stw     r31,28(r1)
  353d80:       7c 3f 0b 78     mr      r31,r1
  353d84:       7c 69 1b 78     mr      r9,r3
  353d88:       88 09 00 00     lbz     r0,0(r9)
  353d8c:       98 1f 00 08     stb     r0,8(r31)
 >353d90:       7c 00 06 ac     eieio
  353d94:       7c 00 04 ac     sync
  353d98:       89 7f 00 08     lbz     r11,8(r31)
  353d9c:       55 60 06 3e     clrlwi  r0,r11,24
  353da0:       7c 03 03 78     mr      r3,r0
  353da4:       48 00 00 04     b       353da8 <__inb+0x30>
  353da8:       81 61 00 00     lwz     r11,0(r1)
  353dac:       83 eb ff fc     lwz     r31,-4(r11)
  353db0:       7d 61 5b 78     mr      r1,r11
  353db4:       4e 80 00 20     blr



最近の日記
2024年03月10日
停電 (瞬電)
2024年03月03日
the second try on bare-metal
useradd
2024年02月29日
opendkim and senmail
2024年01月24日
chat/iam 0.0.8
2024年01月21日
uselocale vs setlocale (textproc/R-readxl)
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)