Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cac4bcbc authored by Ralf Baechle's avatar Ralf Baechle
Browse files

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

parent 722ace9d
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -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)