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
This commit is contained in:
parent
68a71d75c2
commit
6035018b9a
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user