mirror of https://gitee.com/openkylin/linux.git
[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:
parent
722ace9dfb
commit
cac4bcbce0
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue