Index: kernel/arch/sparc32/src/exception.c
===================================================================
--- kernel/arch/sparc32/src/exception.c	(revision ef9a2a897b47371cfb43b8b8bb95ad044136eccf)
+++ kernel/arch/sparc32/src/exception.c	(revision 6ac3d27eb625f68dbcec00d5d56ddbd6ca72b413)
@@ -80,4 +80,18 @@
 }
 
+/** Handle fp_exception. (0x08) */
+void fp_exception(int n, istate_t *istate)
+{
+	fault_if_from_uspace(istate, "%s.", __func__);
+	panic_badtrap(istate, n, "%s.", __func__);
+}
+
+/** Handle tag_overflow. (0x0a) */
+void tag_overflow(int n, istate_t *istate)
+{
+	fault_if_from_uspace(istate, "%s.", __func__);
+	panic_badtrap(istate, n, "%s.", __func__);
+}
+
 /** Handle division_by_zero. (0x2a) */
 void division_by_zero(int n, istate_t *istate)
@@ -101,4 +115,17 @@
 }
 
+/** Handle data_store_error. (0x29) */
+void data_store_error(int n, istate_t *istate)
+{
+	fault_if_from_uspace(istate, "%s.", __func__);
+	panic_badtrap(istate, n, "%s.", __func__);
+}
+/** Handle data_access_error. (0x2c) */
+void data_access_mmu_miss(int n, istate_t *istate)
+{
+	fault_if_from_uspace(istate, "%s.", __func__);
+	panic_badtrap(istate, n, "%s.", __func__);
+}
+
 /** Handle mem_address_not_aligned. (0x7) */
 void mem_address_not_aligned(int n, istate_t *istate)
Index: kernel/arch/sparc32/src/trap_table.S
===================================================================
--- kernel/arch/sparc32/src/trap_table.S	(revision ef9a2a897b47371cfb43b8b8bb95ad044136eccf)
+++ kernel/arch/sparc32/src/trap_table.S	(revision 6ac3d27eb625f68dbcec00d5d56ddbd6ca72b413)
@@ -118,8 +118,15 @@
 #define	TRAP(_vector, _handler) \
 	.org trap_table + _vector * TRAP_ENTRY_SIZE; \
-	mov   %psr, %l0 ; \
+	mov %psr, %l0 ; \
 	sethi %hi(_handler), %l4 ; \
-	jmp   %l4+%lo(_handler); \
-	mov   _vector, %l3 ;
+	jmp %l4 + %lo(_handler); \
+	mov _vector, %l3 ;
+
+#define	INTERRUPT(_vector, _priority) \
+	.org trap_table + _vector * TRAP_ENTRY_SIZE; \
+	mov %psr, %l0 ; \
+	mov _priority, %g2 ; \
+	call exc_dispatch ; \
+	nop ;
 
 #define	BADTRAP(_vector) \
@@ -129,107 +136,130 @@
 .align TRAP_TABLE_SIZE
 trap_table:
-	TRAP(0, reset_trap)
-	BADTRAP(1)
-	TRAP(2, illegal_instruction)
-	TRAP(3, privileged_instruction)
-	TRAP(4, fp_disabled)
-	TRAP(5, window_overflow_trap)
-	TRAP(6, window_underflow_trap)
-	BADTRAP(7)
-	BADTRAP(8)
-	BADTRAP(9)
-	BADTRAP(10)
-	BADTRAP(11)
-	BADTRAP(12)
-	BADTRAP(13)
-	BADTRAP(14)
-	BADTRAP(15)
-	BADTRAP(16)
-        BADTRAP(17)
-        BADTRAP(18)
-        BADTRAP(19)
-        BADTRAP(20)
-        BADTRAP(21)
-        BADTRAP(22)
-        BADTRAP(23)
-        BADTRAP(24)
-        BADTRAP(25)
-        BADTRAP(26)
-        BADTRAP(27)
-        BADTRAP(28)
-        BADTRAP(29)
-        BADTRAP(30)
-        BADTRAP(31)
-        BADTRAP(32)
-        BADTRAP(33)
-        BADTRAP(34)
-        BADTRAP(35)
-        BADTRAP(36)
-        BADTRAP(37)
-        BADTRAP(38)
-        BADTRAP(39)
-        BADTRAP(40)
-        BADTRAP(41)
-        BADTRAP(42)
-        BADTRAP(43)
-        BADTRAP(44)
-        BADTRAP(45)
-        BADTRAP(46)
-        BADTRAP(47)
-        BADTRAP(48)
-        BADTRAP(49)
-        BADTRAP(50)
-        BADTRAP(51)
-        BADTRAP(52)
-        BADTRAP(53)
-        BADTRAP(54)
-        BADTRAP(55)
-        BADTRAP(56)
-        BADTRAP(57)
-        BADTRAP(58)
-        BADTRAP(59)
-        BADTRAP(60)
-        BADTRAP(61)
-        BADTRAP(62)
-        BADTRAP(63)
-        BADTRAP(64)
-        BADTRAP(65)
-        BADTRAP(66)
-        BADTRAP(67)
-        BADTRAP(68)
-        BADTRAP(69)
-        BADTRAP(70)
-        BADTRAP(71)
-        BADTRAP(72)
-        BADTRAP(73)
-        BADTRAP(74)
-        BADTRAP(75)
-        BADTRAP(76)
-        BADTRAP(77)
-        BADTRAP(78)
-        BADTRAP(79)
-        BADTRAP(80)
-        BADTRAP(81)
-        BADTRAP(82)
-        BADTRAP(83)
-        BADTRAP(84)
-        BADTRAP(85)
-        BADTRAP(86)
-        BADTRAP(87)
-        BADTRAP(88)
-        BADTRAP(89)
-        BADTRAP(90)
-        BADTRAP(91)
-        BADTRAP(92)
-        BADTRAP(93)
-        BADTRAP(94)
-        BADTRAP(95)
-        BADTRAP(96)
-        BADTRAP(97)
-        BADTRAP(98)
-        BADTRAP(99)
-        BADTRAP(100)
-        BADTRAP(101)
-        BADTRAP(102)
-        BADTRAP(103)
-
+	TRAP(0x0, reset_trap)
+	TRAP(0x1, instruction_access_exception)
+	TRAP(0x2, illegal_instruction)
+	TRAP(0x3, privileged_instruction)
+	TRAP(0x4, fp_disabled)
+	TRAP(0x5, window_overflow_trap)
+	TRAP(0x6, window_underflow_trap)
+	TRAP(0x7, mem_address_not_aligned)
+	TRAP(0x8, fp_exception)
+	TRAP(0x9, data_access_exception)
+	TRAP(0xa, tag_overflow)
+	BADTRAP(0xb)
+	BADTRAP(0xc)
+	BADTRAP(0xd)
+	BADTRAP(0xe)
+	BADTRAP(0xf)
+	BADTRAP(0x10)
+	INTERRUPT(0x11, 1)
+        INTERRUPT(0x12, 2)
+        INTERRUPT(0x13, 3)
+        INTERRUPT(0x14, 4)
+        INTERRUPT(0x15, 5)
+        INTERRUPT(0x16, 6)
+        INTERRUPT(0x17, 7)
+        INTERRUPT(0x18, 8)
+        INTERRUPT(0x19, 9)
+	INTERRUPT(0x1a, 10)
+	INTERRUPT(0x1b, 11)
+	INTERRUPT(0x1c, 12)
+	INTERRUPT(0x1d, 13)
+	INTERRUPT(0x1e, 14)
+	INTERRUPT(0x1f, 15)
+        TRAP(0x21, instruction_access_error)
+        BADTRAP(0x22)
+        BADTRAP(0x23)
+        BADTRAP(0x24)
+        BADTRAP(0x25)
+        BADTRAP(0x26)
+        BADTRAP(0x27)
+        BADTRAP(0x28)
+        TRAP(0x29, data_access_error)
+	TRAP(0x2a, division_by_zero)
+	TRAP(0x2b, data_store_error)
+	TRAP(0x2c, data_access_mmu_miss)
+	BADTRAP(0x2d)
+	BADTRAP(0x2e)
+	BADTRAP(0x2f)
+	BADTRAP(0x30)
+	BADTRAP(0x31)
+	BADTRAP(0x32)
+	BADTRAP(0x33)
+	BADTRAP(0x34)
+	BADTRAP(0x35)
+	BADTRAP(0x36)
+	BADTRAP(0x37)
+	BADTRAP(0x38)
+	BADTRAP(0x39)
+	BADTRAP(0x3a)
+	BADTRAP(0x3b)
+	BADTRAP(0x3c)
+	BADTRAP(0x3d)
+	BADTRAP(0x3e)
+	BADTRAP(0x3f)
+	BADTRAP(0x40)
+	BADTRAP(0x41)
+	BADTRAP(0x42)
+	BADTRAP(0x43)
+	BADTRAP(0x44)
+	BADTRAP(0x45)
+	BADTRAP(0x46)
+	BADTRAP(0x47)
+	BADTRAP(0x48)
+	BADTRAP(0x49)
+	BADTRAP(0x4a)
+	BADTRAP(0x4b)
+	BADTRAP(0x4c)
+	BADTRAP(0x4d)
+	BADTRAP(0x4e)
+	BADTRAP(0x4f)
+	BADTRAP(0x50)
+	BADTRAP(0x51)
+	BADTRAP(0x52)
+	BADTRAP(0x53)
+	BADTRAP(0x54)
+	BADTRAP(0x55)
+	BADTRAP(0x56)
+	BADTRAP(0x57)
+	BADTRAP(0x58)
+	BADTRAP(0x59)
+	BADTRAP(0x5a)
+	BADTRAP(0x5b)
+	BADTRAP(0x5c)
+	BADTRAP(0x5d)
+	BADTRAP(0x5e)
+	BADTRAP(0x5f)
+	BADTRAP(0x60)
+	BADTRAP(0x61)
+	BADTRAP(0x62)
+	BADTRAP(0x63)
+	BADTRAP(0x64)
+	BADTRAP(0x65)
+	BADTRAP(0x66)
+	BADTRAP(0x67)
+	BADTRAP(0x68)
+	BADTRAP(0x69)
+	BADTRAP(0x6a)
+	BADTRAP(0x6b)
+	BADTRAP(0x6c)
+	BADTRAP(0x6d)
+	BADTRAP(0x6e)
+	BADTRAP(0x6f)
+	BADTRAP(0x70)
+	BADTRAP(0x71)
+	BADTRAP(0x72)
+	BADTRAP(0x73)
+	BADTRAP(0x74)
+	BADTRAP(0x75)
+	BADTRAP(0x76)
+	BADTRAP(0x77)
+	BADTRAP(0x78)
+	BADTRAP(0x79)
+	BADTRAP(0x7a)
+	BADTRAP(0x7b)
+	BADTRAP(0x7c)
+	BADTRAP(0x7d)
+	BADTRAP(0x7e)
+	BADTRAP(0x7f)
+
