aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorJustin Hibbits <jhibbits@FreeBSD.org>2015-11-30 02:40:41 +0000
committerJustin Hibbits <jhibbits@FreeBSD.org>2015-11-30 02:40:41 +0000
commit6035018b9ac3ffd797b8ed11ffa73ac2fff5dfaf (patch)
treeb43011c60de983fa03c58d8fa3be841374c516a1 /sys
parent68a71d75c2af574d2c1a9106dbe7f8bf5618fbf6 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/powerpc/include/spr.h2
-rw-r--r--sys/powerpc/powerpc/trap.c8
2 files changed, 9 insertions, 1 deletions
diff --git a/sys/powerpc/include/spr.h b/sys/powerpc/include/spr.h
index ab48a91d13bc..86dac97bc01c 100644
--- a/sys/powerpc/include/spr.h
+++ b/sys/powerpc/include/spr.h
@@ -652,7 +652,9 @@
#elif defined(BOOKE)
+#define SPR_MCARU 0x239 /* ..8 Machine Check Address register upper bits */
#define SPR_MCSR 0x23c /* ..8 Machine Check Syndrome register */
+#define SPR_MCAR 0x23d /* ..8 Machine Check Address register */
#define SPR_ESR 0x003e /* ..8 Exception Syndrome Register */
#define ESR_PIL 0x08000000 /* Program interrupt - illegal */
diff --git a/sys/powerpc/powerpc/trap.c b/sys/powerpc/powerpc/trap.c
index 29130eafb71d..a18c293ff054 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;
}