diff options
-rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 9 | ||||
-rw-r--r-- | arch/powerpc/xmon/xmon.c | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index 80d56f094a0d..e6eba1bf61ad 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S | |||
@@ -693,9 +693,18 @@ slb_miss_user_pseries: | |||
693 | .align 7 | 693 | .align 7 |
694 | .globl machine_check_common | 694 | .globl machine_check_common |
695 | machine_check_common: | 695 | machine_check_common: |
696 | |||
697 | mfspr r10,SPRN_DAR | ||
698 | std r10,PACA_EXGEN+EX_DAR(r13) | ||
699 | mfspr r10,SPRN_DSISR | ||
700 | stw r10,PACA_EXGEN+EX_DSISR(r13) | ||
696 | EXCEPTION_PROLOG_COMMON(0x200, PACA_EXMC) | 701 | EXCEPTION_PROLOG_COMMON(0x200, PACA_EXMC) |
697 | FINISH_NAP | 702 | FINISH_NAP |
698 | DISABLE_INTS | 703 | DISABLE_INTS |
704 | ld r3,PACA_EXGEN+EX_DAR(r13) | ||
705 | lwz r4,PACA_EXGEN+EX_DSISR(r13) | ||
706 | std r3,_DAR(r1) | ||
707 | std r4,_DSISR(r1) | ||
699 | bl .save_nvgprs | 708 | bl .save_nvgprs |
700 | addi r3,r1,STACK_FRAME_OVERHEAD | 709 | addi r3,r1,STACK_FRAME_OVERHEAD |
701 | bl .machine_check_exception | 710 | bl .machine_check_exception |
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index 13f85defabed..51e237c4648f 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c | |||
@@ -1430,7 +1430,7 @@ static void excprint(struct pt_regs *fp) | |||
1430 | printf(" sp: %lx\n", fp->gpr[1]); | 1430 | printf(" sp: %lx\n", fp->gpr[1]); |
1431 | printf(" msr: %lx\n", fp->msr); | 1431 | printf(" msr: %lx\n", fp->msr); |
1432 | 1432 | ||
1433 | if (trap == 0x300 || trap == 0x380 || trap == 0x600) { | 1433 | if (trap == 0x300 || trap == 0x380 || trap == 0x600 || trap == 0x200) { |
1434 | printf(" dar: %lx\n", fp->dar); | 1434 | printf(" dar: %lx\n", fp->dar); |
1435 | if (trap != 0x380) | 1435 | if (trap != 0x380) |
1436 | printf(" dsisr: %lx\n", fp->dsisr); | 1436 | printf(" dsisr: %lx\n", fp->dsisr); |