|
@@ -290,3 +290,72 @@ asmlinkage notrace void trap_c(struct pt_regs *fp)
|
|
|
CHK_DEBUGGER_TRAP_MAYBE();
|
|
|
break;
|
|
|
#else
|
|
|
+ /* 0x29 - Reserved, Caught by default */
|
|
|
+#endif
|
|
|
+ /* 0x2A - Instruction fetch misaligned, handled here */
|
|
|
+ case VEC_MISALI_I:
|
|
|
+ info.si_code = BUS_ADRALN;
|
|
|
+ sig = SIGBUS;
|
|
|
+ strerror = KERN_NOTICE EXC_0x2A(KERN_NOTICE);
|
|
|
+ CHK_DEBUGGER_TRAP_MAYBE();
|
|
|
+ break;
|
|
|
+ /* 0x2B - Instruction CPLB protection violation, handled here */
|
|
|
+ case VEC_CPLB_I_VL:
|
|
|
+ info.si_code = ILL_CPLB_VI;
|
|
|
+ sig = SIGBUS;
|
|
|
+ strerror = KERN_NOTICE EXC_0x2B(KERN_NOTICE);
|
|
|
+ CHK_DEBUGGER_TRAP_MAYBE();
|
|
|
+ break;
|
|
|
+ /* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */
|
|
|
+ case VEC_CPLB_I_M:
|
|
|
+ info.si_code = ILL_CPLB_MISS;
|
|
|
+ sig = SIGBUS;
|
|
|
+ strerror = KERN_NOTICE EXC_0x2C(KERN_NOTICE);
|
|
|
+ break;
|
|
|
+ /* 0x2D - Instruction CPLB Multiple Hits, handled here */
|
|
|
+ case VEC_CPLB_I_MHIT:
|
|
|
+ info.si_code = ILL_CPLB_MULHIT;
|
|
|
+ sig = SIGSEGV;
|
|
|
+#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO
|
|
|
+ if (cpu_pda[cpu].icplb_fault_addr < FIXED_CODE_START)
|
|
|
+ strerror = KERN_NOTICE "Jump to NULL address\n";
|
|
|
+ else
|
|
|
+#endif
|
|
|
+ strerror = KERN_NOTICE EXC_0x2D(KERN_NOTICE);
|
|
|
+ CHK_DEBUGGER_TRAP_MAYBE();
|
|
|
+ break;
|
|
|
+ /* 0x2E - Illegal use of Supervisor Resource, handled here */
|
|
|
+ case VEC_ILL_RES:
|
|
|
+ info.si_code = ILL_PRVOPC;
|
|
|
+ sig = SIGILL;
|
|
|
+ strerror = KERN_NOTICE EXC_0x2E(KERN_NOTICE);
|
|
|
+ CHK_DEBUGGER_TRAP_MAYBE();
|
|
|
+ break;
|
|
|
+ /* 0x2F - Reserved, Caught by default */
|
|
|
+ /* 0x30 - Reserved, Caught by default */
|
|
|
+ /* 0x31 - Reserved, Caught by default */
|
|
|
+ /* 0x32 - Reserved, Caught by default */
|
|
|
+ /* 0x33 - Reserved, Caught by default */
|
|
|
+ /* 0x34 - Reserved, Caught by default */
|
|
|
+ /* 0x35 - Reserved, Caught by default */
|
|
|
+ /* 0x36 - Reserved, Caught by default */
|
|
|
+ /* 0x37 - Reserved, Caught by default */
|
|
|
+ /* 0x38 - Reserved, Caught by default */
|
|
|
+ /* 0x39 - Reserved, Caught by default */
|
|
|
+ /* 0x3A - Reserved, Caught by default */
|
|
|
+ /* 0x3B - Reserved, Caught by default */
|
|
|
+ /* 0x3C - Reserved, Caught by default */
|
|
|
+ /* 0x3D - Reserved, Caught by default */
|
|
|
+ /* 0x3E - Reserved, Caught by default */
|
|
|
+ /* 0x3F - Reserved, Caught by default */
|
|
|
+ case VEC_HWERR:
|
|
|
+ info.si_code = BUS_ADRALN;
|
|
|
+ sig = SIGBUS;
|
|
|
+ switch (fp->seqstat & SEQSTAT_HWERRCAUSE) {
|
|
|
+ /* System MMR Error */
|
|
|
+ case (SEQSTAT_HWERRCAUSE_SYSTEM_MMR):
|
|
|
+ info.si_code = BUS_ADRALN;
|
|
|
+ sig = SIGBUS;
|
|
|
+ strerror = KERN_NOTICE HWC_x2(KERN_NOTICE);
|
|
|
+ break;
|
|
|
+ /* External Memory Addressing Error */
|