通常日記 | 分類別 ABC 順 | 北目式分類 | macppc/ | port-macppc 全文検索 | NetBSD (old) | NetBSD 解説 | PHP+Postgresql | PowerMac7220/4400 雑記帳 | 4400/200

NetBSD/macppc StarMax 専用

macppc の中でも Tanzania 板を使っているものは少し特殊なので、 それに限った記録はこちらに書きます。
(Motorola StarMax, PowerMac 4400 など)
hns - 日記自動生成システム - Version 2.19.9

予定 TODO Link
  • 06/14(金) 日記の日
  • 65 PowerOn の時に自動起動
  • 60 4 Ethernet Port project
  • 50 drivers/atyfb.c
  • 40 1280 x 1024 が使えるようにする。
  • 30 ATP-8 (ACARD,6260) device driver 調整
  • 15 4000/160 32 48 1.5E inn/nat
  • 14 4000/160 48 64
  • 13 4400/200 160 64

先月 2024年05月 来月
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 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2006年11月13日(月) [n年日記] Last Update: "2006/12/12 23:32:31"

#3 [4.99.3] patch for sys/sys/queue.h

as a result, followin patch fix the problem I've been tracing for these month.
Index: sys/sys/queue.h
===================================================================
RCS file: /export/20061008/Repository/src/sys/sys/queue.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 queue.h
--- sys/sys/queue.h	8 Oct 2006 17:09:38 -0000	1.1.1.1
+++ sys/sys/queue.h	13 Nov 2006 08:11:39 -0000
@@ -161,7 +161,7 @@
 
 #define	LIST_FOREACH(var, head, field)					\
 	for ((var) = ((head)->lh_first);				\
-		(var);							\
+		(var != NULL);							\
 		(var) = ((var)->field.le_next))
 
 /*
... no ... still .. there ..
cvs update: Updating graphics/gphoto/files
cvs update: Updating graphics/gphoto/patches
login: Nov 13 17:01:54 livorno getty[559]: /dev/ttyE0: Device not configured
tlp0: transmit underrun; new threshold: 96/256 bytes
trap type 300 at 38dcbc
Stopped in pid 73.1 (cvs) at    netbsd:cache_lookup+0x8c:       lwz     0,32(31)

db> 

Now queue.h patch + -O1 for vfs_cache.c:

U print/libgnomecups/src/dist/smbfs/lib/smb/rq.c
U print/libgnomecups/src/dist/smbfs/lib/smb/subr.c
cvs update: Updating print/libgnomecups/src/dist/smbfs/mount_smbfs
trap type 300 at 3a6170
Stopped in pid 562.1 (cvs) at   netbsd:cache_lookup_entry+0x68: lwz     9,32(9)
db> tlp0: receive ring overrun
bt
at cache_lookup+a8
at ufs_lookup+110
at VOP_LOOKUP+34
at lookup+2f4
at namei+10c
at sys___stat30+50
at syscall_plain+14c
at setfault+c54
db> 

cache_lookup_entry:

003a6108 <cache_lookup_entry>:
  3a6108:       94 21 ff d0     stwu    r1,-48(r1)
  3a610c:       7c 08 02 a6     mflr    r0
  3a6110:       93 e1 00 2c     stw     r31,44(r1)
  3a6114:       90 01 00 34     stw     r0,52(r1)
  3a6118:       7c 3f 0b 78     mr      r31,r1
  3a611c:       90 7f 00 18     stw     r3,24(r31)
  3a6120:       90 9f 00 1c     stw     r4,28(r31)
  3a6124:       81 3f 00 1c     lwz     r9,28(r31)
  3a6128:       81 29 00 1c     lwz     r9,28(r9)
  3a612c:       80 1f 00 18     lwz     r0,24(r31)
  3a6130:       54 00 e8 fe     rlwinm  r0,r0,29,3,31
  3a6134:       7d 2b 02 78     xor     r11,r9,r0
  3a6138:       3d 20 00 61     lis     r9,97
  3a613c:       80 09 61 e0     lwz     r0,25056(r9)
  3a6140:       7d 60 00 38     and     r0,r11,r0
  3a6144:       54 00 10 3a     rlwinm  r0,r0,2,0,29
  3a6148:       7c 0b 03 78     mr      r11,r0
  3a614c:       3d 20 00 61     lis     r9,97
  3a6150:       80 09 61 e4     lwz     r0,25060(r9)
  3a6154:       7c 0b 02 14     add     r0,r11,r0
  3a6158:       90 1f 00 0c     stw     r0,12(r31)
  3a615c:       81 3f 00 0c     lwz     r9,12(r31)
  3a6160:       80 09 00 00     lwz     r0,0(r9)	// ncp = ncpp
  3a6164:       90 1f 00 08     stw     r0,8(r31)
  3a6168:       48 00 00 7c     b       3a61e4 <cache_lookup_entry+0xdc>
(loop) // LIST_FOREACH
  3a616c:       81 3f 00 08     lwz     r9,8(r31)       //
  3a6170:       81 29 00 20     lwz     r9,32(r9)	//  traps here ここで落ちる
  3a6174:       80 1f 00 18     lwz     r0,24(r31)	// 
  3a6178:       7f 89 00 00     cmpw    cr7,r9,r0	// 
  3a617c:       40 9e 00 5c     bne-    cr7,3a61d8 <cache_lookup_entry+0xd0>

  3a6180:       81 3f 00 08     lwz     r9,8(r31)	// if (ncp-> ..
  3a6184:       88 09 00 34     lbz     r0,52(r9)
  3a6188:       54 00 06 3e     clrlwi  r0,r0,24
  3a618c:       7c 0b 03 78     mr      r11,r0
  3a6190:       81 3f 00 1c     lwz     r9,28(r31)
  3a6194:       80 09 00 18     lwz     r0,24(r9)
  3a6198:       7f 8b 00 00     cmpw    cr7,r11,r0
  3a619c:       40 9e 00 3c     bne-    cr7,3a61d8 <cache_lookup_entry+0xd0>
  3a61a0:       81 3f 00 08     lwz     r9,8(r31)	// ncp->nc_name
  3a61a4:       39 69 00 35     addi    r11,r9,53
  3a61a8:       81 3f 00 1c     lwz     r9,28(r31)	// cnp->cn_nameptr
  3a61ac:       81 49 00 14     lwz     r10,20(r9)
  3a61b0:       81 3f 00 08     lwz     r9,8(r31)	//(uint)ncp->nc_nlen
  3a61b4:       88 09 00 34     lbz     r0,52(r9)
  3a61b8:       54 00 06 3e     clrlwi  r0,r0,24
  3a61bc:       7d 63 5b 78     mr      r3,r11		// ncp->nc_name
  3a61c0:       7d 44 53 78     mr      r4,r10		// cnp->cn_nameptr
  3a61c4:       7c 05 03 78     mr      r5,r0		// ncp->nc_nlen
  3a61c8:       48 15 af 05     bl      5010cc <memcmp>
  3a61cc:       7c 60 1b 78     mr      r0,r3
  3a61d0:       2f 80 00 00     cmpwi   cr7,r0,0
  3a61d4:       41 9e 00 1c     beq-    cr7,3a61f0 <cache_lookup_entry+0xe8> // break
  3a61d8:       81 3f 00 08     lwz     r9,8(r31)
  3a61dc:       80 09 00 00     lwz     r0,0(r9)
  3a61e0:       90 1f 00 08     stw     r0,8(r31)
  3a61e4:       80 1f 00 08     lwz     r0,8(r31)
  3a61e8:       2f 80 00 00     cmpwi   cr7,r0,0    // (var) ncp == 0 ?
  3a61ec:       40 9e ff 80     bne+    cr7,3a616c <cache_lookup_entry+0x64>
      // end of LIST_FOREACH
  3a61f0:       80 1f 00 08     lwz     r0,8(r31)
  3a61f4:       7c 03 03 78     mr      r3,r0
  3a61f8:       81 61 00 00     lwz     r11,0(r1)
  3a61fc:       80 0b 00 04     lwz     r0,4(r11)
  3a6200:       7c 08 03 a6     mtlr    r0
  3a6204:       83 eb ff fc     lwz     r31,-4(r11)
  3a6208:       7d 61 5b 78     mr      r1,r11
  3a620c:       4e 80 00 20     blr
Was inline ignored at this compile ? (Probably with -O0)

#2 [4.99.3] 別のところで落ちました

tlp0: transmit underrun; new threshold: 160/1024 bytes
panic: kernel diagnostic assertion "(startoff & PAGE_MASK) == 0 && (endoff & PAGE_MASK) == 0" 
failed: file "/export/20061008/checkout/src/sys/miscfs/genfs/genfs_vnops.c", line 1081
Stopped in pid 6.1 (pagedaemon) at      netbsd:cpu_Debugger+0x14:       addi    1
,1,16
db> bt
at panic+1cc
at __assert+2c
at genfs_putpages+1e8
at VOP_PUTPAGES+40
at uvn_put+c
at uvmpd_scan_queue+158
at uvmpd_scan+4c
at uvm_pageout+168
at cpu_switchto+60
db> 
ここも -O1 ですかね .. で作り直したら、元の問題
trap type 300 at 38f99c
Stopped in pid 663.1 (cvs) at   netbsd:cache_lookup_raw+0xbc:   lwz     0,32(31)

db> tlp0: receive ring overrun
bt
at nfs_lookup+f0
at VOP_LOOKUP+34
at lookup+2f4
at namei+10c
at vn_open+174
at sys_open+e0
at syscall_plain+14c
at setfault+c54
db> 
作った方法は合っていると思う
ttyr4:root@mini 14:42:14/061113(...obj/L2-1M-PB2-SHM)# ls -l netbsd genfs_vnops.o vfs_cache.o
-rw-r--r--  1 root  wheel    23536 Nov 13 14:42 genfs_vnops.o
-rwxr-xr-x  1 root  wheel  5839756 Nov 13 14:42 netbsd*
-rw-r--r--  1 root  wheel     9640 Nov 13 13:56 vfs_cache.o
ttyr4:root@mini DING!/061113(...obj/L2-1M-PB2-SHM)# 
どうも、いつもここで落ちる ?
cvs update: Updating databases/zope-mysql/pkg
cvs update: Updating devel

show register:

db> show register    
r0          0xf8e0099a
r1          0xe548fba0
r2          0
r3          0x169c888
r4          0xe548fe88
r5          0xe548fe9c
r6          0
r7          0
r8          0
r9          0x30
r10         0xc044
r11         0xe0185000
r12         0x22002084
r13         0
r14         0x18a0000
r15         0x18a0000
r16         0x1880000
r17         0x18b7000
r18         0x18b11e0
r19         0xe548fcd8
r20         0
r21         0x20
r22         0
r23         0
r24         0
r25         0xe548fe88
r26         0xe548fe88
r27         0xe548fe9c
r28         0xe548fe9c
r29         0xf
r30         0x169c888
r31         0xd8000000
iar         0x38f99c    cache_lookup_raw+0xbc
msr         0x9032
lr          0x28b520    nfs_lookup+0xf4
ctr         0x28b42c    nfs_lookup
cr          0x22042088
xer         0x9
netbsd:cache_lookup_raw+0xbc:   lwz     0,32(31)
db> 

#1 [4.99.3] trap type 300 at 38f918

10/20 の続き
trap type 300 at 38f918
Stopped in pid 446.1 (cvs) at   netbsd:cache_lookup_raw+0x88:   lwz     0,32(31)

db> bt
at nfs_lookup+f0
at VOP_LOOKUP+34
at lookup+2f4
at namei+10c
at vn_open+174
at sys_open+e0
at syscall_plain+14c
at setfault+c54
db> tlp0: receive ring overrun
show registers
r0          0x5a10e003
r1          0xe55dfba0
r2          0
r3          0x344ec88
r4          0xe55dfe88
r5          0xe55dfe9c
r6          0
r7          0
r8          0x2f
r9          0x30
r10         0xe0185000
r11         0x600000    fragttl_histo+0x8c
r12         0x22002024
r13         0
r14         0x18a0000
r15         0x18a0000
r16         0x1880000
r17         0x18aec00
r18         0x18a8140
r19         0xe55dfcd8
r20         0
r21         0x20
r22         0
r23         0
r24         0x1
r25         0xe55dfe88
r26         0x84044
r27         0xe55dfe88
r28         0xe55dfe9c
r29         0x3
r30         0x344ec88
r31         0x34a80000
iar         0x38f918    cache_lookup_raw+0x88
msr         0x9032
lr          0x28b520    nfs_lookup+0xf4
ctr         0x28b42c    nfs_lookup
cr          0x22022024
xer         0x6
netbsd:cache_lookup_raw+0x88:   lwz     0,32(31)
db> 
lwz     0,32(31)
Load Word and Zero  rD,d(rA) .... r31 + 32 を r0 に読む
r31         0x34a80000
となっているので 「0x34a80020 を読む」かな。確かに大きすぎる。880M ..
> bc
ibase = 16
34A80020
883425312
↓
883,425,312
  M   k

...obj/L2-1M-PB2-SHM)> objdump -S netbsd:

青: 参照
白: 変更(代入)
赤: 問題
0038f88c <cache_lookup_raw>:
  38f88c:       7c 08 02 a6     mflr    r0
  38f890:       94 21 ff d0     stwu    r1,-48(r1)
  38f894:       3d 20 00 60     lis     r9,96
  38f898:       93 61 00 1c     stw     r27,28(r1)
  38f89c:       7c 9b 23 78     mr      r27,r4
  38f8a0:       93 81 00 20     stw     r28,32(r1)
  38f8a4:       7c bc 2b 78     mr      r28,r5
  38f8a8:       93 c1 00 28     stw     r30,40(r1)
  38f8ac:       7c 7e 1b 78     mr      r30,r3
  38f8b0:       93 a1 00 24     stw     r29,36(r1)
  38f8b4:       93 e1 00 2c     stw     r31,44(r1)
  38f8b8:       90 01 00 34     stw     r0,52(r1)
  38f8bc:       81 29 e0 24     lwz     r9,-8156(r9)
  38f8c0:       2f 89 00 00     cmpwi   cr7,r9,0
  38f8c4:       41 9e 01 60     beq-    cr7,38fa24 <cache_lookup_raw+0x198>
  38f8c8:       83 a5 00 18     lwz     r29,24(r5)
  38f8cc:       2f 9d 00 1f     cmpwi   cr7,r29,31
  38f8d0:       41 9d 01 30     bgt-    cr7,38fa00 <cache_lookup_raw+0x174>
-----
  38f8d4:       81 45 00 1c     lwz     r10,28(r5)
  38f8d8:       3d 60 00 60     lis     r11,96
  38f8dc:       80 0b eb f0     lwz     r0,-5136(r11)
  38f8e0:       54 69 e8 fe     rlwinm  r9,r3,29,3,31
  38f8e4:       7d 29 52 78     xor     r9,r9,r10
  38f8e8:       3d 60 00 60     lis     r11,96
  38f8ec:       7d 29 00 38     and     r9,r9,r0
  38f8f0:       81 4b eb f4     lwz     r10,-5132(r11)
  38f8f4:       55 29 10 3a     rlwinm  r9,r9,2,0,29
  38f8f8:       7f e9 50 2e     lwzx    r31,r9,r10
  38f8fc:       2f 9f 00 00     cmpwi   cr7,r31,0
  38f900:       40 be 00 14     bne+    cr7,38f914 <cache_lookup_raw+0x88>
  38f904:       48 00 00 b8     b       38f9bc <cache_lookup_raw+0x130>

  38f908:       83 ff 00 00     lwz     r31,0(r31)
  38f90c:       2f 9f 00 00     cmpwi   cr7,r31,0
  38f910:       41 9e 00 ac     beq-    cr7,38f9bc <cache_lookup_raw+0x130>
  38f914:       80 1f 00 20     lwz     r0,32(r31)
-----
  38f918:       7f 9e 00 00     cmpw    cr7,r30,r0
  38f91c:       40 9e ff ec     bne+    cr7,38f908 <cache_lookup_raw+0x7c>
  38f920:       88 1f 00 34     lbz     r0,52(r31)
  38f924:       7f 9d 00 00     cmpw    cr7,r29,r0
  38f928:       40 9e ff e0     bne+    cr7,38f908 <cache_lookup_raw+0x7c>
  38f92c:       80 9c 00 14     lwz     r4,20(r28)
  38f930:       38 7f 00 35     addi    r3,r31,53
  38f934:       7f a5 eb 78     mr      r5,r29
  38f938:       48 15 ac 31     bl      4ea568 <memcmp>
  38f93c:       2c 03 00 00     cmpwi   r3,0
  38f940:       40 82 ff c8     bne+    38f908 <cache_lookup_raw+0x7c>
  38f944:       81 1f 00 08     lwz     r8,8(r31)
  38f948:       2f 88 00 00     cmpwi   cr7,r8,0
  38f94c:       41 9e 00 38     beq-    cr7,38f984 <cache_lookup_raw+0xf8>
  38f950:       80 1f 00 0c     lwz     r0,12(r31)
  38f954:       3d 60 00 60     lis     r11,96
  38f958:       39 6b ec 04     addi    r11,r11,-5116
0038fc04 <cache_enter>: の中に次の部分がある。これも cache_lookup_entry の inline (らしい)
 ..
  38fc90:       4b ff f7 01     bl      38f390 <cache_remove>
-----
  38fc94:       83 7c 00 1c     lwz     r27,28(r28)
  38fc98:       3f 00 00 60     lis     r24,96
  38fc9c:       57 d9 e8 fe     rlwinm  r25,r30,29,3,31
  38fca0:       80 18 eb f0     lwz     r0,-5136(r24)
  38fca4:       7f 29 da 78     xor     r9,r25,r27
  38fca8:       3e e0 00 60     lis     r23,96
  38fcac:       7d 29 00 38     and     r9,r9,r0
  38fcb0:       81 77 eb f4     lwz     r11,-5132(r23)
  38fcb4:       55 29 10 3a     rlwinm  r9,r9,2,0,29
  38fcb8:       7f e9 58 2e     lwzx    r31,r9,r11
  38fcbc:       2f 9f 00 00     cmpwi   cr7,r31,0
  38fcc0:       40 be 00 14     bne+    cr7,38fcd4 <cache_enter+0xd0>
  38fcc4:       48 00 00 54     b       38fd18 <cache_enter+0x114>
  38fcc8:       83 ff 00 00     lwz     r31,0(r31)
  38fccc:       2f 9f 00 00     cmpwi   cr7,r31,0
  38fcd0:       41 9e 00 48     beq-    cr7,38fd18 <cache_enter+0x114>
  38fcd4:       80 1f 00 20     lwz     r0,32(r31)
-----
  38fcd8:       7f 9e 00 00     cmpw    cr7,r30,r0
  38fcdc:       40 9e ff ec     bne+    cr7,38fcc8 <cache_enter+0xc4>
  38fce0:       88 bf 00 34     lbz     r5,52(r31)
  38fce4:       80 1c 00 18     lwz     r0,24(r28)
  38fce8:       7f 85 00 00     cmpw    cr7,r5,r0
  38fcec:       40 9e ff dc     bne+    cr7,38fcc8 <cache_enter+0xc4>
  38fcf0:       80 9c 00 14     lwz     r4,20(r28)
  38fcf4:       38 7f 00 35     addi    r3,r31,53
  38fcf8:       48 15 a8 71     bl      4ea568 <memcmp>
  38fcfc:       2f 83 00 00     cmpwi   cr7,r3,0
つまり r31 を変更しているのは
static inline struct namecache *
cache_lookup_entry(const struct vnode *dvp, const struct componentname *cnp)
の中。ここだけ最適化を外して作って見よう。

一部だけ cc -O1:

  1. まず普通に kernel を作っておいて
  2. obj/KERNEL に cd して、vfs_cache.o を消す
  3. 引続き Makefile の中の COPTS?= -O2 -pipe の -O2 を -O1 に変更
  4. TOOLDIR 変数に設定して make
   123  13:32   ./build.sh -T /export/20061008/checkout/src/tooldir.NetBSD-3.99.21-powerpc 
                kernel=L2-1M-PB2-SHM
   124  13:53   mv sys/arch/macppc/compile/obj/L2-1M-PB2-SHM/vfs_cache.o 
                   sys/arch/macppc/compile/obj/L2-1M-PB2-SHM/vfs_cache.o-keep2
   125  13:54   cd sys/arch/macppc/compile/obj/L2-1M-PB2-SHM
   126  13:54   vi Makefile
   134  13:56   rm vfs_cache.o
   135  13:56   env TOOLDIR=/export/20061008/checkout/src/tooldir.NetBSD-3.99.21-powerpc 
                make
これで見かけ上問題を回避出来たような気がする。 何故そう思うかと言って cvs update をすると必ず落ちていたのが、落ちなくなった。

ちなみに -O2 を単に消してしまうと mfmsr 等のシンボルが未定義となってしまう。

ld -N -Ttext 100000 -e __start -S -o netbsd ${SYSTEM_OBJ} vers.o
autoconf.o: In function `cpu_configure':
autoconf.c:(.text+0x194): undefined reference to `mfmsr'
autoconf.c:(.text+0x1a4): undefined reference to `mtmsr'
machdep.o: In function `sysctl_machdep_setup':
machdep.c:(.text+0x11f0): undefined reference to `mfpvr'
*** Error code 1

-O1 の時の objdump -d netbsd (cache_look_raw):

0038f8e0 <cache_lookup_raw>:
  38f8e0:       94 21 ff d0     stwu    r1,-48(r1)
  38f8e4:       7c 08 02 a6     mflr    r0
  38f8e8:       93 41 00 18     stw     r26,24(r1)
  38f8ec:       93 61 00 1c     stw     r27,28(r1)
  38f8f0:       93 81 00 20     stw     r28,32(r1)
  38f8f4:       93 a1 00 24     stw     r29,36(r1)
  38f8f8:       93 c1 00 28     stw     r30,40(r1)
  38f8fc:       93 e1 00 2c     stw     r31,44(r1)
  38f900:       90 01 00 34     stw     r0,52(r1)
  38f904:       7c 9a 23 78     mr      r26,r4
  38f908:       7c bc 2b 78     mr      r28,r5
  38f90c:       3d 20 00 60     lis     r9,96
  38f910:       81 29 de 54     lwz     r9,-8620(r9)
  38f914:       2f 89 00 00     cmpwi   cr7,r9,0
  38f918:       40 be 00 1c     bne+    cr7,38f934 <cache_lookup_raw+0x54>
  38f91c:       80 05 00 04     lwz     r0,4(r5)
  38f920:       54 00 04 a0     rlwinm  r0,r0,0,18,16
  38f924:       90 05 00 04     stw     r0,4(r5)
  38f928:       91 24 00 00     stw     r9,0(r4)
  38f92c:       38 60 ff ff     li      r3,-1
  38f930:       48 00 01 a8     b       38fad8 <cache_lookup_raw+0x1f8>
  38f934:       83 a5 00 18     lwz     r29,24(r5)
  38f938:       2f 9d 00 1f     cmpwi   cr7,r29,31
  38f93c:       40 bd 00 28     ble+    cr7,38f964 <cache_lookup_raw+0x84>
-----
  38f940:       3d 20 00 63     lis     r9,99
  38f944:       39 29 e1 a0     addi    r9,r9,-7776
  38f948:       81 69 00 14     lwz     r11,20(r9)
  38f94c:       39 6b 00 01     addi    r11,r11,1
  38f950:       91 69 00 14     stw     r11,20(r9)
  38f954:       80 05 00 04     lwz     r0,4(r5)
  38f958:       54 00 04 a0     rlwinm  r0,r0,0,18,16
  38f95c:       90 05 00 04     stw     r0,4(r5)
  38f960:       48 00 01 6c     b       38facc <cache_lookup_raw+0x1ec>

  38f964:       7c 7e 1b 78     mr      r30,r3
  38f968:       7c bb 2b 78     mr      r27,r5
  38f96c:       54 69 e8 fe     rlwinm  r9,r3,29,3,31
  38f970:       80 05 00 1c     lwz     r0,28(r5)
  38f974:       7d 29 02 78     xor     r9,r9,r0
  38f978:       3d 60 00 60     lis     r11,96
  38f97c:       80 0b ea 20     lwz     r0,-5600(r11)
  38f980:       7d 29 00 38     and     r9,r9,r0
  38f984:       3d 60 00 60     lis     r11,96
  38f988:       81 6b ea 24     lwz     r11,-5596(r11)
  38f98c:       55 29 10 3a     rlwinm  r9,r9,2,0,29
  38f990:       7f e9 58 2e     lwzx    r31,r9,r11
  38f994:       2f 9f 00 00     cmpwi   cr7,r31,0
  38f998:       41 9e 00 40     beq-    cr7,38f9d8 <cache_lookup_raw+0xf8>
  38f99c:       80 1f 00 20     lwz     r0,32(r31)
-----
  38f9a0:       7f 9e 00 00     cmpw    cr7,r30,r0
  38f9a4:       40 be 00 28     bne+    cr7,38f9cc <cache_lookup_raw+0xec>
  38f9a8:       88 1f 00 34     lbz     r0,52(r31)
  38f9ac:       7f 9d 00 00     cmpw    cr7,r29,r0
  38f9b0:       40 be 00 1c     bne+    cr7,38f9cc <cache_lookup_raw+0xec>
  38f9b4:       38 7f 00 35     addi    r3,r31,53
  38f9b8:       80 9b 00 14     lwz     r4,20(r27)
  38f9bc:       7f a5 eb 78     mr      r5,r29
  38f9c0:       48 15 a9 e1     bl      4ea3a0 <memcmp>

-O1 の時の objdump -d netbsd (cache_lookup):

0038f4d8 <cache_lookup>:
  38f4d8:       94 21 ff d0     stwu    r1,-48(r1)
  38f4dc:       7c 08 02 a6     mflr    r0
  38f4e0:       93 21 00 14     stw     r25,20(r1)
  38f4e4:       93 41 00 18     stw     r26,24(r1)
  38f4e8:       93 61 00 1c     stw     r27,28(r1)
  38f4ec:       93 81 00 20     stw     r28,32(r1)
  38f4f0:       93 a1 00 24     stw     r29,36(r1)
  38f4f4:       93 c1 00 28     stw     r30,40(r1)
  38f4f8:       93 e1 00 2c     stw     r31,44(r1)
  38f4fc:       90 01 00 34     stw     r0,52(r1)
  38f500:       7c 7b 1b 78     mr      r27,r3
  38f504:       7c 99 23 78     mr      r25,r4
  38f508:       7c bc 2b 78     mr      r28,r5
  38f50c:       3d 20 00 60     lis     r9,96
  38f510:       81 29 de c4     lwz     r9,-8508(r9)
  38f514:       2f 89 00 00     cmpwi   cr7,r9,0
  38f518:       40 be 00 1c     bne+    cr7,38f534 <cache_lookup+0x5c>
  38f51c:       80 05 00 04     lwz     r0,4(r5)
  38f520:       54 00 04 a0     rlwinm  r0,r0,0,18,16
  38f524:       90 05 00 04     stw     r0,4(r5)
  38f528:       91 24 00 00     stw     r9,0(r4)
  38f52c:       3b c0 ff ff     li      r30,-1
  38f530:       48 00 03 80     b       38f8b0 <cache_lookup+0x3d8>
  38f534:       83 a5 00 18     lwz     r29,24(r5)
  38f538:       2f 9d 00 1f     cmpwi   cr7,r29,31
  38f53c:       40 bd 00 28     ble+    cr7,38f564 <cache_lookup+0x8c>
-----
  38f540:       3d 20 00 63     lis     r9,99
  38f544:       39 29 e2 10     addi    r9,r9,-7664
  38f548:       81 69 00 14     lwz     r11,20(r9)
  38f54c:       39 6b 00 01     addi    r11,r11,1
  38f550:       91 69 00 14     stw     r11,20(r9)
  38f554:       80 05 00 04     lwz     r0,4(r5)
  38f558:       54 00 04 a0     rlwinm  r0,r0,0,18,16
  38f55c:       90 05 00 04     stw     r0,4(r5)
  38f560:       48 00 03 24     b       38f884 <cache_lookup+0x3ac>
  38f564:       7c 7e 1b 78     mr      r30,r3
  38f568:       7c ba 2b 78     mr      r26,r5
  38f56c:       54 69 e8 fe     rlwinm  r9,r3,29,3,31
  38f570:       80 05 00 1c     lwz     r0,28(r5)
  38f574:       7d 29 02 78     xor     r9,r9,r0
  38f578:       3d 60 00 60     lis     r11,96
  38f57c:       80 0b ea 90     lwz     r0,-5488(r11)
  38f580:       7d 29 00 38     and     r9,r9,r0
  38f584:       3d 60 00 60     lis     r11,96
  38f588:       81 6b ea 94     lwz     r11,-5484(r11)
  38f58c:       55 29 10 3a     rlwinm  r9,r9,2,0,29
  38f590:       7f e9 58 2e     lwzx    r31,r9,r11
  38f594:       2f 9f 00 00     cmpwi   cr7,r31,0
  38f598:       41 9e 00 40     beq-    cr7,38f5d8 <cache_lookup+0x100>
  38f59c:       80 1f 00 20     lwz     r0,32(r31)
----
  38f5a0:       7f 9e 00 00     cmpw    cr7,r30,r0
  38f5a4:       40 be 00 28     bne+    cr7,38f5cc <cache_lookup+0xf4>
  38f5a8:       88 1f 00 34     lbz     r0,52(r31)
  38f5ac:       7f 9d 00 00     cmpw    cr7,r29,r0
  38f5b0:       40 be 00 1c     bne+    cr7,38f5cc <cache_lookup+0xf4>
  38f5b4:       38 7f 00 35     addi    r3,r31,53
  38f5b8:       80 9a 00 14     lwz     r4,20(r26)
  38f5bc:       7f a5 eb 78     mr      r5,r29
  38f5c0:       48 15 ae 49     bl      4ea408 <memcmp>
  38f5c4:       2f 83 00 00     cmpwi   cr7,r3,0
  38f5c8:       41 9e 00 28     beq-    cr7,38f5f0 <cache_lookup+0x118>
  38f5cc:       83 ff 00 00     lwz     r31,0(r31)
  38f5d0:       2f 9f 00 00     cmpwi   cr7,r31,0
  38f5d4:       40 9e ff c8     bne+    cr7,38f59c <cache_lookup+0xc4>
  38f5d8:       3d 60 00 63     lis     r11,99
  38f5dc:       39 6b e2 10     addi    r11,r11,-7664
(cache_lookup_raw と cache_lookup を比べていた) ..

2004年11月13日() [n年日記] Last Update: "2004/11/13 08:22:33"

#2

:

db> tr
at panic+1b4
at remrunqueue+8c
at schedcpu+220
at softclock+238
at do_pending_int+128
at spllower+54
at lcsplx+c
at cpu_switchto+40
at mi_switch+158
at sa_switch+178
at ltsleep+400
at biowait+54
at bread+20
at ffs_read+2ac
at ufs_readdir+c4
at vn_readdir+104
at sys_getdents+7c
at syscall_plain+d8
at setfault+c58
db> 

#1



最近の日記
以上、2 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/03/03)