summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/powerpc
diff options
context:
space:
mode:
authorjhibbits <jhibbits@FreeBSD.org>2015-11-30 02:40:41 +0000
committerjhibbits <jhibbits@FreeBSD.org>2015-11-30 02:40:41 +0000
commit2ba33d63f5f142cc82b495d4da2b3e5af52009d1 (patch)
treeb43011c60de983fa03c58d8fa3be841374c516a1 /sys/powerpc/powerpc
parent8cc079e1d84f7c5a4aab0eb09f77b9c634f9c3a0 (diff)
downloadFreeBSD-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.c8
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;
}
OpenPOWER on IntegriCloud