On Thu, Nov 01, 2001 at 09:09:05AM -0500, Scott A McConnell wrote: > > -- > Scott A. McConnell > X-Mozilla-Status2: 00000000 > Date: Thu, 01 Nov 2001 09:05:52 -0500 > From: Scott A McConnell <samcconn@cotw.com> > X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.4.5-xfs-1.0.1 i686) > X-Accept-Language: en > To: Jun Sun <jsun@mvista.com> > Subject: Re: Kernel panic: Caught reserved exception - should not happen. > > Jun Sun wrote: > > > > Scott A McConnell wrote: > > > > > > I have been getting a fair amount of the above type of errors when > > > compiling on a mipsel box. > > > > > > 2.4.5 kernel on a NEC VR5432 box. Anyone aware of known problems? > > > > > > > What is the exception vector? Is it the "watch exception"? > > No it is not a watch exception it appears to always be an Interrupt > exception. > Try the following patch. It is outdated, and it may not apply cleanly. But you should get an idea about the intention of the fix. Please let me know the result. Jun
This is a possible fix for the R5432 cp0/interrupt bug. Not tested or verified by NEC engineers. Not checked in yet. Pending on more info on this bug. Jun diff -Nru linux/arch/mips/kernel/head.S.orig linux/arch/mips/kernel/head.S --- linux/arch/mips/kernel/head.S.orig Tue Jun 26 16:15:26 2001 +++ linux/arch/mips/kernel/head.S Tue Jun 26 16:27:49 2001 @@ -59,6 +59,12 @@ .set noat LEAF(except_vec0_r4000) .set mips3 +#if defined(CONFIG_CPU_R5432) + la k0, 1f + jr k0 + nop +1: +#endif mfc0 k0, CP0_BADVADDR # Get faulting address srl k0, k0, 22 # get pgd only bits lw k1, current_pgd # get pgd pointer @@ -329,6 +335,12 @@ /* Register saving is delayed as long as we don't know * which registers really need to be saved. */ +#if defined(CONFIG_CPU_R5432) + la k0, 1f + jr k0 + nop +1: +#endif mfc0 k1, CP0_CONTEXT dsra k1, 1 lwu k0, (k1) # May cause another exception @@ -357,6 +369,12 @@ * in the cache, we may not be able to recover. As a * first-order desperate measure, turn off KSEG0 cacheing. */ +#if defined(CONFIG_CPU_R5432) + la k0, 1f + jr k0 + nop +1: +#endif mfc0 k0,CP0_CONFIG li k1,~CONF_CM_CMASK and k0,k0,k1 @@ -374,6 +392,12 @@ /* General exception vector R4000 version. */ NESTED(except_vec3_r4000, 0, sp) .set noat +#if defined(CONFIG_CPU_R5432) + la k0, 1f + jr k0 + nop +1: +#endif mfc0 k1, CP0_CAUSE andi k1, k1, 0x7c li k0, 31<<2 @@ -427,6 +451,12 @@ NESTED(except_vec3_generic, 0, sp) .set noat .set mips0 +#if defined(CONFIG_CPU_R5432) + la k0, 1f + jr k0 + nop +1: +#endif mfc0 k1, CP0_CAUSE la k0, exception_handlers andi k1, k1, 0x7c