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

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Ralf Baechle 2006-05-24 16:51:02 +01:00
parent 722ace9dfb
commit cac4bcbce0
1 changed files with 17 additions and 2 deletions

View File

@ -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)