diff options
Diffstat (limited to 'sys/powerpc/powerpc/trap.c')
-rw-r--r-- | sys/powerpc/powerpc/trap.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/powerpc/powerpc/trap.c b/sys/powerpc/powerpc/trap.c index bfbd94d..0895596 100644 --- a/sys/powerpc/powerpc/trap.c +++ b/sys/powerpc/powerpc/trap.c @@ -400,6 +400,7 @@ trap_fatal(struct trapframe *frame) static void printtrap(u_int vector, struct trapframe *frame, int isfatal, int user) { + uint16_t ver; printf("\n"); printf("%s %s trap:\n", isfatal ? "fatal" : "handled", @@ -421,6 +422,17 @@ printtrap(u_int vector, struct trapframe *frame, int isfatal, int user) case EXC_ITMISS: printf(" virtual address = 0x%" PRIxPTR "\n", frame->srr0); break; + case EXC_MCHK: + ver = mfpvr() >> 16; +#if defined(AIM) + if (MPC745X_P(ver)) + printf(" msssr0 = 0x%x\n", + mfspr(SPR_MSSSR0)); +#elif defined(BOOKE) + printf(" mcsr = 0x%x\n", + mfspr(SPR_MCSR)); +#endif + break; } #ifdef BOOKE printf(" esr = 0x%" PRIxPTR "\n", |