diff options
author | jhibbits <jhibbits@FreeBSD.org> | 2015-11-30 02:40:41 +0000 |
---|---|---|
committer | jhibbits <jhibbits@FreeBSD.org> | 2015-11-30 02:40:41 +0000 |
commit | 2ba33d63f5f142cc82b495d4da2b3e5af52009d1 (patch) | |
tree | b43011c60de983fa03c58d8fa3be841374c516a1 /sys/powerpc/powerpc | |
parent | 8cc079e1d84f7c5a4aab0eb09f77b9c634f9c3a0 (diff) | |
download | FreeBSD-src-2ba33d63f5f142cc82b495d4da2b3e5af52009d1.zip FreeBSD-src-2ba33d63f5f142cc82b495d4da2b3e5af52009d1.tar.gz |
Print machine check address for Book-E.
Bits in mcsr indicate if the address is valid, and whether it's a physical
address or effective address.
Sponsored by: Alex Perez/Inertial Computing
Diffstat (limited to 'sys/powerpc/powerpc')
-rw-r--r-- | sys/powerpc/powerpc/trap.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/powerpc/powerpc/trap.c b/sys/powerpc/powerpc/trap.c index 29130ea..a18c293 100644 --- a/sys/powerpc/powerpc/trap.c +++ b/sys/powerpc/powerpc/trap.c @@ -401,6 +401,9 @@ static void printtrap(u_int vector, struct trapframe *frame, int isfatal, int user) { uint16_t ver; +#ifdef BOOKE + vm_paddr_t pa; +#endif printf("\n"); printf("%s %s trap:\n", isfatal ? "fatal" : "handled", @@ -429,7 +432,10 @@ printtrap(u_int vector, struct trapframe *frame, int isfatal, int user) printf(" msssr0 = 0x%lx\n", (u_long)mfspr(SPR_MSSSR0)); #elif defined(BOOKE) - printf(" mcsr = 0x%lx\n", (u_long)mfspr(SPR_MCSR)); + pa = mfspr(SPR_MCARU); + pa = (pa << 32) | mfspr(SPR_MCAR); + printf(" mcsr = 0x%lx\n", (u_long)mfspr(SPR_MCSR)); + printf(" mcar = 0x%jx\n", (uintmax_t)pa); #endif break; } |