[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: down in comopen



これたぶん、sc = device_lookup(&com_cd, COMUNIT(dev));の部分で
com_cd.cd_devsの参照ですよね。

800241f0:	3c038028 	lui	v1,0x8028
800241f4:	8c638e90 	lw	v1,-29040(v1) com_cd.cd_devs
800241f8:	00021080 	sll	v0,v0,0x2
800241fc:	00431021 	addu	v0,v0,v1
80024200:	08009083 	j	8002420c <comopen+0x78>
80024204:	8c500000 	lw	s0,0(v0)

intrcnt用の場所をとっておくのを忘れてました。intrcntの更新でcfdriverを
壊してたみたいです。

nm -nすると、

80278de0 D _fdata
80278de0 D audio_cd
80278de0 D eintrcnt
80278de0 D eintrnames
80278de0 D intrcnt
80278de0 D intrnames
80278df0 D ukphy_cd
80278e00 D aic_cd
80278e10 D an_cd
80278e20 D awi_cd
80278e30 D wi_cd
80278e40 D ep_cd

なので、このkernelの場合、audio_cdのcfdriverがintrcntの更新で壊されて
しまいます。

Index: locore_machdep.S
===================================================================
RCS file: /cvsroot/syssrc/sys/arch/hpcmips/hpcmips/locore_machdep.S,v
retrieving revision 1.4
diff -u -r1.4 locore_machdep.S
--- locore_machdep.S	2002/01/31 16:27:35	1.4
+++ locore_machdep.S	2002/05/15 09:20:42
@@ -69,4 +69,5 @@
 _C_LABEL(intrnames):
 _C_LABEL(eintrnames):
 _C_LABEL(intrcnt):
+	.word	0,0,0,0,0,0,0,0,0 /* SOFTCLOCK_INTR, SOFTNET_INTR, HARDCLOCK */
 _C_LABEL(eintrcnt):

これで直ります?
---
UCHIYAMA Yasushi
uch@vnop.net