Commit cac4bcbc authored by Ralf Baechle's avatar Ralf Baechle

[MIPS] Print more information if we're struck by a machine check exception.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 722ace9d
...@@ -819,15 +819,30 @@ asmlinkage void do_watch(struct pt_regs *regs) ...@@ -819,15 +819,30 @@ asmlinkage void do_watch(struct pt_regs *regs)
asmlinkage void do_mcheck(struct pt_regs *regs) asmlinkage void do_mcheck(struct pt_regs *regs)
{ {
const int field = 2 * sizeof(unsigned long);
int multi_match = regs->cp0_status & ST0_TS;
show_regs(regs); show_regs(regs);
dump_tlb_all();
if (multi_match) {
printk("Index : %0x\n", read_c0_index());
printk("Pagemask: %0x\n", read_c0_pagemask());
printk("EntryHi : %0*lx\n", field, read_c0_entryhi());
printk("EntryLo0: %0*lx\n", field, read_c0_entrylo0());
printk("EntryLo1: %0*lx\n", field, read_c0_entrylo1());
printk("\n");
dump_tlb_all();
}
show_code((unsigned int *) regs->cp0_epc);
/* /*
* Some chips may have other causes of machine check (e.g. SB1 * Some chips may have other causes of machine check (e.g. SB1
* graduation timer) * graduation timer)
*/ */
panic("Caught Machine Check exception - %scaused by multiple " panic("Caught Machine Check exception - %scaused by multiple "
"matching entries in the TLB.", "matching entries in the TLB.",
(regs->cp0_status & ST0_TS) ? "" : "not "); (multi_match) ? "" : "not ");
} }
asmlinkage void do_mt(struct pt_regs *regs) asmlinkage void do_mt(struct pt_regs *regs)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment