Index: kernel/arch/mips32/include/exception.h
===================================================================
--- kernel/arch/mips32/include/exception.h	(revision ccb426c40c1bb63880c8f1dd8edb16e9b19286f9)
+++ kernel/arch/mips32/include/exception.h	(revision ac11ac7ebb0e25fa0031a251504c104ca9341786)
@@ -113,4 +113,6 @@
 extern void exception_init(void);
 
+extern void decode_istate(istate_t *);
+
 #endif
 
Index: kernel/arch/mips32/src/exception.c
===================================================================
--- kernel/arch/mips32/src/exception.c	(revision ccb426c40c1bb63880c8f1dd8edb16e9b19286f9)
+++ kernel/arch/mips32/src/exception.c	(revision ac11ac7ebb0e25fa0031a251504c104ca9341786)
@@ -72,9 +72,16 @@
 };
 
-static void print_regdump(istate_t *istate)
-{
-	printf("PC: %#x(%s) RA: %#x(%s), SP(%p)\n", istate->epc,
-	    symtab_fmt_name_lookup(istate->epc), istate->ra,
-	    symtab_fmt_name_lookup(istate->ra), istate->sp);
+void decode_istate(istate_t *istate)
+{
+	printf("at=%p\tv0=%p\tv1=%p\n", istate->at, istate->v0, istate->v1);
+	printf("a0=%p\ta1=%p\ta2=%p\n", istate->a0, istate->a1, istate->a2);
+	printf("a3=%p\tt0=%p\tt1=%p\n", istate->a3, istate->t0, istate->t1);
+	printf("t2=%p\tt3=%p\tt4=%p\n", istate->t2, istate->t3, istate->t4);
+	printf("t5=%p\tt6=%p\tt7=%p\n", istate->t5, istate->t6, istate->t7);
+	printf("t8=%p\tt9=%p\tgp=%p\n", istate->t8, istate->t9, istate->gp);
+	printf("sp=%p\tra=%p\t\n", istate->sp, istate->ra);
+	printf("lo=%p\thi=%p\t\n", istate->lo, istate->hi);
+	printf("cp0_status=%p\tcp0_epc=%p\tk1=%p\n",
+	    istate->status, istate->epc, istate->k1);
 }
 
@@ -82,7 +89,5 @@
 {
 	fault_if_from_uspace(istate, "Unhandled exception %s.", exctable[n]);
-	
-	print_regdump(istate);
-	panic("Unhandled exception %s.", exctable[n]);
+	panic_badtrap(istate, n, "Unhandled exception %s.", exctable[n]);
 }
 
@@ -125,6 +130,8 @@
 		scheduler_fpu_lazy_request();
 	else {
-		fault_if_from_uspace(istate, "Unhandled Coprocessor Unusable Exception.");
-		panic("Unhandled Coprocessor Unusable Exception.");
+		fault_if_from_uspace(istate,
+		    "Unhandled Coprocessor Unusable Exception.");
+		panic_badtrap(istate, n,
+		    "Unhandled Coprocessor Unusable Exception.");
 	}
 }
@@ -162,5 +169,5 @@
 static void syscall_exception(unsigned int n, istate_t *istate)
 {
-	panic("Syscall is handled through shortcut.");
+	fault_if_from_uspace(istate, "Syscall is handled through shortcut.");
 }
 
Index: kernel/arch/mips32/src/mm/tlb.c
===================================================================
--- kernel/arch/mips32/src/mm/tlb.c	(revision ccb426c40c1bb63880c8f1dd8edb16e9b19286f9)
+++ kernel/arch/mips32/src/mm/tlb.c	(revision ac11ac7ebb0e25fa0031a251504c104ca9341786)
@@ -321,11 +321,8 @@
 void tlb_refill_fail(istate_t *istate)
 {
-	const char *symbol = symtab_fmt_name_lookup(istate->epc);
-	const char *sym2 = symtab_fmt_name_lookup(istate->ra);
-	
-	fault_if_from_uspace(istate, "TLB Refill Exception on %p.",
-	    cp0_badvaddr_read());
-	panic("%x: TLB Refill Exception at %x (%s<-%s).", cp0_badvaddr_read(),
-	    istate->epc, symbol, sym2);
+	uintptr_t va = cp0_badvaddr_read();
+	
+	fault_if_from_uspace(istate, "TLB Refill Exception on %p.", va);
+	panic_memtrap(istate, PF_ACCESS_READ, va, "TLB Refill Exception.");
 }
 
@@ -333,20 +330,16 @@
 void tlb_invalid_fail(istate_t *istate)
 {
-	const char *symbol = symtab_fmt_name_lookup(istate->epc);
-	
-	fault_if_from_uspace(istate, "TLB Invalid Exception on %p.",
-	    cp0_badvaddr_read());
-	panic("%x: TLB Invalid Exception at %x (%s).", cp0_badvaddr_read(),
-	    istate->epc, symbol);
+	uintptr_t va = cp0_badvaddr_read();
+	
+	fault_if_from_uspace(istate, "TLB Invalid Exception on %p.", va);
+	panic_memtrap(istate, PF_ACCESS_READ, va, "TLB Invalid Exception.");
 }
 
 void tlb_modified_fail(istate_t *istate)
 {
-	const char *symbol = symtab_fmt_name_lookup(istate->epc);
-	
-	fault_if_from_uspace(istate, "TLB Modified Exception on %p.",
-	    cp0_badvaddr_read());
-	panic("%x: TLB Modified Exception at %x (%s).", cp0_badvaddr_read(),
-	    istate->epc, symbol);
+	uintptr_t va = cp0_badvaddr_read();
+	
+	fault_if_from_uspace(istate, "TLB Modified Exception on %p.", va);
+	panic_memtrap(istate, PF_ACCESS_WRITE, va, "TLB Modified Exception.");
 }
 
