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年05月08日
comparison on ./buildsh tools
2024年05月06日
py-setuptools (python 3.11.9)
make release took 1 hours and 10 min
qemu invocation for 10.99.10
2024年05月05日
Windows 10 version
serial connection
bc bench
2024年05月04日
Trial on 10.99.10
another version (later trial) to succeed
2024年04月29日
dkim
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)