Subject: kern/3854: Kernel crashes at boot time on 040 machines
To: None <gnats-bugs@gnats.netbsd.org>
From: Dave Huang <khym@bga.com>
List: netbsd-bugs
Date: 07/12/1997 00:20:22
>Number:         3854
>Category:       kern
>Synopsis:       Kernel crashes at boot time on 040 machines
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    kern-bug-people (Kernel Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jul 11 22:35:01 1997
>Last-Modified:
>Originator:     Dave Huang
>Organization:
Name: Dave Huang     |   Mammal, mammal / their names are called /
INet: khym@bga.com   |   they raise a paw / the bat, the cat /
FurryMUCK: Dahan     |   dolphin and dog / koala bear and hog -- TMBG
Dahan: Hani G Y+C 21 Y++ L+++ W- C++ T++ A+ E+ S++ V++ F- Q+++ P+ B+ PA+ PL++
>Release:        NetBSD-current as of July 11, 1997
>Environment:
	
System: NetBSD gedd.metonymy.com 1.2G NetBSD 1.2G (GEDD) #243: Sat Jul  5 05:22:20 CDT 1997 khym@dahan.metonymy.com:/usr/src.local/sys/arch/mac68k/compile/GEDD

>Description:
Booting a kernel on a 68040 machine (well, on a Centris 660av and
Quadra 610, at least) crashes during the nubus probe with the following:

nubus0 at mainbus0
trap type 1, code = 0, v= 10ccd0
kernel: Address error trap
pid = 0, pc = 000A33BA, ps = 2000, sfc = 0001, dfc = 0001
Registers:
             0        1        2        3        4        5        6        7
dreg: 00000000 0835F000 00000008 00000000 00000000 0010CD0F 00000008 00000000
areg: 0010CCD0 00FFFFFF 00FFFFFF 00000000 0835F000 0010CDAA 0010CD0C FFFFCFFC

Kernel stack (0010CC04):
10CC04: 000A7590 0010CC50 00000080 00000008 00000000 00000000 0010CD0F 00000008
10CC24: 00000000 00FFFFFF 00000000 0835F000 0010CDAA 00C24000 0010CD0C 00003046
10CC44: 00000001 00000000 0010CCD0 00000000 0835F000 00000008 00000000 00000000
10CC64: 0010CD0F 00000008 00000000 0010CCD0 00FFFFFF 00FFFFFF 00000000 0835F000
10CC84: 0010CDAA 0010CD0C FFFFCFFC 00000000 2000000A 33BA7008 0010CCD0 01250005
10CCA4: 00250025 0935EFFF 0010CD00 000A338E 0935EFFF FFFFFFFF 0935EFFF FFFFFFFF
10CCC4: F9FFF000 000A338E 0010CCD0 00000008 00000000 00000000 0010CD0F 00000008
10CCE4: 00000000 00FFFFFF 00000000 0835F000 0010CDAA 0010CD0C 0010CCC8 000A338E
10CD04: 00000040 00000001 0010CD4C 00091C78 00000000 0835F000 00FFFFFF 00000001
10CD24: F9000000 00000000 00000009 0010CDA0 00000000 00000000 0010CDAA 0010CD94
10CD44: 06BA7380 000B70E8 0010CDDC 000917C2 00000000 0835F000 00000009 0010CDAA
10CD64: 00000000 00000000 0010CE26 00000000 000B70E8 06BA79C0 000B2324 000B2320
10CD84: 06BA7380 000B70E8 00000002 0001F8EE 00000000 0010CE26 0835F000 0010CDDC
10CDA4: 0001FC0E 06BA9F20 0000000C 0001FC8C 00000004 00000000 0010CE26 00000000
10CDC4: 00000000 00000009 0008B5B0 06BA7394 06BA7380 000B70F4 0010CE28 000261F4
10CDE4: 06BA79C0 06BA7380 00000000 06BA79C0 00000000 0010CEFA 00000000 000BAD00
panic: Address error

BTW, I think this code came from NetBSD/amiga, so someone might want
to make sure that the problem doesn't exist there too...

>How-To-Repeat:
Try to boot a recent kernel on a 660av or Q610. It looks like this
problem affects all '040 macs though.

>Fix:
The bus error handler and address error handler vectors are switched
around... vector 2 is bus error, and 3 is address error.

--- /usr/src/sys/arch/mac68k/mac68k/machdep.c	Fri Jul 11 06:18:14 1997
+++ machdep.c	Fri Jul 11 23:27:57 1997
@@ -499,14 +499,14 @@
 	switch (cputype) {
 #ifdef M68060
 	case CPU_68060:
-		vectab[2] = addrerr4060;
-		vectab[3] = buserr60;
+		vectab[2] = buserr60;
+		vectab[3] = addrerr4060;
 		break;
 #endif
 #ifdef M68040
 	case CPU_68040:
-		vectab[2] = addrerr4060;
-		vectab[3] = buserr40;
+		vectab[2] = buserr40;
+		vectab[3] = addrerr4060;
 		break;
 #endif
 	default:
>Audit-Trail:
>Unformatted: