APPENDIX A - SPARC v7/v8 TRAPS
This is a list of SPARC v7/v8 traps and the associated definitions,
where applicable but note that while this should be accurate for
all SPARC's, it is possible that some implementations may differ.
The table shows the trap number (TRAP), the trap priority (PRI)
and the description. With trap priorities, the lowest number has
the highest priority.
TRAP PRI DESCRIPTION 0x00 1 Reset 0x01 5 Text fault, instruction access exception 0x02 7 Illegal instruction 0x03 6 Privileged instruction 0x04 8 Floating point disabled 0x05 9 Window overflow 0x06 9 Window underflow 0x07 10 Memory address not aligned 0x08 11 Floating point exception 0x09 13 Data fault, data access exception 0x0A 14 Tag overflow 0x0B 8 Watchpoint detected 0x0C - 0x10 Undefined 0x11 31 Interrupt, level 1 - Implementation dependent 0x12 30 Interrupt, level 2 - Sbus/VME level 1 0x13 29 Interrupt, level 3 - Sbus/VME level 2 0x14 28 Interrupt, level 4 - Onboard SCSI 0x15 27 Interrupt, level 5 - Sbus/VME level 3 0x16 26 Interrupt, level 6 - Onboard ethernet 0x17 25 Interrupt, level 7 - Sbus/VME level 4 0x18 24 Interrupt, level 8 - Onboard video 0x19 23 Interrupt, level 9 - Sbus/VME level 5, module 0x1A 22 Interrupt, level 10 - TOD clock 0x1B 21 Interrupt, level 11 - Sbus/VME level 6, floppy 0x1C 20 Interrupt, level 12 - Serial I/O 0x1D 19 Interrupt, level 13 - Sbus/VME level 7, audio, X-Call 0x1E 18 Interrupt, level 14 - Hi-res system timer 0x1F 17 Interrupt, level 15 - Asynchronous memory fault 0x20 4 Register access error (you're hosed!) 0x21 3 Text fault, instruction access error 0x22 - 0x23 Undefined 0x24 8 Coprocessor disabled 0x25 8 FLUSH/IFLUSH not implemented 0x26 - 0x27 Undefined 0x28 11 Coprocessor exception 0x29 12 Data access error 0x2A 15 Division by zero exception 0x2B 2 Data store error 0x2C 12 Data access MMU miss 0x2D - 0x3B Undefined 0x3C 2 Instruction access MMU miss 0x3D - 0x5F Undefined 0x60 - 0x7F Implementation dependentSoftware traps (trap instruction). All at priority 16. This is totally up to the OS designer so these are the SunOS definitions...
0x80 SunOS 4.x system call 0x81 User breakpoint 0x82 Userland divide by zero 0x83 Flush windows 0x84 Clean windows 0x85 Range check 0x86 Handle unaligned references (Grrr!) 0x87 Not used (bad trap) 0x88 System call (ta 0x8) 0x89 Set trap0 address (lwp->lwp_pcb.pcb_trap0addr) 0x8A - 0x9F Not used (bad trap) 0xA0 Get condition codes 0xA1 Set condition codes 0xA2 Get PSR 0xA3 Set PSR (don't get excited...some fields only :-) 0xA4 Get timestamp 0xA5 Get LWP virtual time 0xA6 Not used (bad trap) 0xA7 Get hi-res time 0xA8 - 0xAF Not used (bad trap) 0xB0 - 0xB7 Trap tracing facility 0xB8 - 0xFE Not used (bad trap) 0xFF Drop to prom (or kadb)
This is a list of SPARC v9 traps and the associated definitions,
where applicable but note that while this should be accurate for
all SPARC's, it is possible that some implementations may differ.
The table shows the trap number (TRAP), the trap priority (PRI)
and the description. With trap priorities, the lowest number has
the highest priority.
TRAP PRI DESCRIPTION 0x000 - Reserved 0x001 0 Power on reset (POR) 0x002 1 Watchdog reset (WDR) 0x003 1 Externally initiated reset (XIR) 0x004 1 Software initiated reset (SIR) 0x005 1 RED state exception 0x006 - 0x007 Reserved 0x008 5 Instruction access exception 0x009 2 Instruction access MMU miss 0x00A 3 Instruction access error 0x00B - 0x00F Reserved 0x010 7 Illegal instruction 0x011 6 Privileged opcode (instruction) 0x012 6 Unimplemented LDD 0x013 6 Unimplemented STD 0x014 - 0x01F Reserved 0x020 8 Floating point disabled 0x021 11 IEEE 754 floating point exception 0x022 11 Other floating point exception 0x023 14 Tag overflow 0x024 - 0x027 Clean Window 0x028 15 Division by zero 0x029 4 Internal processor error 0x02A - 0x02F Reserved 0x030 12 Data access Exception 0x031 12 Data access MMU miss 0x032 12 Data access error 0x033 12 Data access protection 0x034 12 Memory address not aligned 0x035 12 LDDF memory address not aligned 0x036 12 STDF memory address not aligned 0x037 12 Privileged action (eg: ASI access) 0x038 12 LDQF memory address not aligned 0x039 12 STQF memory address not aligned 0x03A - 0x03F Reserved 0x040 2 Asynchronous data error (ECC data store error) 0x041 31 Interrupt, level 1 - Implementation dependent 0x042 30 Interrupt, level 2 - Sbus/VME level 1 0x043 29 Interrupt, level 3 - Sbus/VME level 2 0x044 28 Interrupt, level 4 - Onboard SCSI 0x045 27 Interrupt, level 5 - Sbus/VME level 3 0x046 26 Interrupt, level 6 - Onboard ethernet 0x047 25 Interrupt, level 7 - Sbus/VME level 4 0x048 24 Interrupt, level 8 - Onboard video 0x049 23 Interrupt, level 9 - Sbus/VME level 5, module 0x04A 22 Interrupt, level 10 - TOD clock 0x04B 21 Interrupt, level 11 - Sbus/VME level 6, floppy 0x04C 20 Interrupt, level 12 - Serial I/O 0x04D 19 Interrupt, level 13 - Sbus/VME level 7, audio, X-Call 0x04E 18 Interrupt, level 14 - Hi-res system timer 0x04F 17 Interrupt, level 15 - Asynchronous memory fault 0x050 - 0x05F ReservedThese next traps from 0x060 to 0x07F have an implementation dependent priority and definition. The SunOS definitions are listed here...
0x060 Interrupt vector 0x061 Physical address watchpoint 0x062 Virtual address watchpoint 0x063 Corrected ECC error 0x064 Instruction access MMU miss 0x065 - 0x067 Undefined 0x068 Data access MMU miss 0x069 - 0x06B Undefined 0x06C Data access protection 0x06D - 0x07F Undefined 0x060 - 0x07F Implementation dependentThis next wedge of traps are for fills and spills, all of these have a priority of 9. Don't forget that spill/fill trap vectors are 32 instructions long. This supersede the v7/v8 window overflow and underflow traps...
0x080 OTHERWIN=0, WSTATE.NORMAL=0 spill, normal ... 0x09F OTHERWIN=0, WSTATE.NORMAL=7 spill, normal 0x0A0 OTHERWIN!=0, WSTATE.OTHER=0 spill, other ... 0x0BF OTHERWIN!=0, WSTATE.OTHER=7 spill, other 0x0C0 OTHERWIN=0, WSTATE.NORMAL=0 fill, normal ... 0x0DF OTHERWIN=0, WSTATE.NORMAL=7 fill, normal 0x0E0 OTHERWIN!=0, WSTATE.OTHER=0 fill, other ... 0x0FF OTHERWIN!=0, WSTATE.OTHER=7 fill, otherThat concludes the machine originated traps. This next section describes the software traps (trap instruction originated). The uses for these are up to the OS designer so I've documented the SunOS definitions here. These are all at priority 16...
0x100 SunOS 4.x system call 0x101 User breakpoint 0x102 Userland divide by zero 0x103 Flush windows 0x104 Clean windows 0x105 Range check 0x106 Handle unaligned references 0x107 Not used 0x108 System call 0x109 Set trap0 address (lwp->lwp_pcb.pcb_trap0addr) 0x10A - 0x11F Not used 0x120 Get condition codes 0x121 Set condition codes 0x122 Get PSR 0x123 Set PSR (some fields only :-) 0x124 Get timestamp 0x125 Get lwp virtual time 0x126 Self directed cross call 0x127 Get hi-res time 0x128 - 0x12F Not used 0x130 - 0x137 Trap tracing facility 0x138 - 0x17C Not used 0x17D kadb enter 0x17E kadb breakpoint 0x17F OpenBoot Prom breakpointThis last quarter of the trap table is reserved for future use.
0x180 - 0x1FF Reserved