Loading arch/mips/kernel/traps.c +17 −2 Original line number Diff line number Diff line Loading @@ -819,15 +819,30 @@ asmlinkage void do_watch(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); 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 * graduation timer) */ panic("Caught Machine Check exception - %scaused by multiple " "matching entries in the TLB.", (regs->cp0_status & ST0_TS) ? "" : "not "); (multi_match) ? "" : "not "); } asmlinkage void do_mt(struct pt_regs *regs) Loading Loading
arch/mips/kernel/traps.c +17 −2 Original line number Diff line number Diff line Loading @@ -819,15 +819,30 @@ asmlinkage void do_watch(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); 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 * graduation timer) */ panic("Caught Machine Check exception - %scaused by multiple " "matching entries in the TLB.", (regs->cp0_status & ST0_TS) ? "" : "not "); (multi_match) ? "" : "not "); } asmlinkage void do_mt(struct pt_regs *regs) Loading