aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/traps.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/traps.c')
-rw-r--r--arch/powerpc/kernel/traps.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index 239f1cde3fff..0dc43f9932cf 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -302,6 +302,16 @@ long machine_check_early(struct pt_regs *regs)
302 return handled; 302 return handled;
303} 303}
304 304
305long hmi_exception_realmode(struct pt_regs *regs)
306{
307 __get_cpu_var(irq_stat).hmi_exceptions++;
308
309 if (ppc_md.hmi_exception_early)
310 ppc_md.hmi_exception_early(regs);
311
312 return 0;
313}
314
305#endif 315#endif
306 316
307/* 317/*
@@ -609,7 +619,7 @@ int machine_check_e500(struct pt_regs *regs)
609 if (reason & MCSR_BUS_RBERR) 619 if (reason & MCSR_BUS_RBERR)
610 printk("Bus - Read Data Bus Error\n"); 620 printk("Bus - Read Data Bus Error\n");
611 if (reason & MCSR_BUS_WBERR) 621 if (reason & MCSR_BUS_WBERR)
612 printk("Bus - Read Data Bus Error\n"); 622 printk("Bus - Write Data Bus Error\n");
613 if (reason & MCSR_BUS_IPERR) 623 if (reason & MCSR_BUS_IPERR)
614 printk("Bus - Instruction Parity Error\n"); 624 printk("Bus - Instruction Parity Error\n");
615 if (reason & MCSR_BUS_RPERR) 625 if (reason & MCSR_BUS_RPERR)
@@ -738,6 +748,20 @@ void SMIException(struct pt_regs *regs)
738 die("System Management Interrupt", regs, SIGABRT); 748 die("System Management Interrupt", regs, SIGABRT);
739} 749}
740 750
751void handle_hmi_exception(struct pt_regs *regs)
752{
753 struct pt_regs *old_regs;
754
755 old_regs = set_irq_regs(regs);
756 irq_enter();
757
758 if (ppc_md.handle_hmi_exception)
759 ppc_md.handle_hmi_exception(regs);
760
761 irq_exit();
762 set_irq_regs(old_regs);
763}
764
741void unknown_exception(struct pt_regs *regs) 765void unknown_exception(struct pt_regs *regs)
742{ 766{
743 enum ctx_state prev_state = exception_enter(); 767 enum ctx_state prev_state = exception_enter();