diff options
Diffstat (limited to 'arch/mips/kernel/traps.c')
| -rw-r--r-- | arch/mips/kernel/traps.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 4901f0a37fca..a7564b08eb4d 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
| @@ -819,15 +819,30 @@ asmlinkage void do_watch(struct pt_regs *regs) | |||
| 819 | 819 | ||
| 820 | asmlinkage void do_mcheck(struct pt_regs *regs) | 820 | asmlinkage void do_mcheck(struct pt_regs *regs) |
| 821 | { | 821 | { |
| 822 | const int field = 2 * sizeof(unsigned long); | ||
| 823 | int multi_match = regs->cp0_status & ST0_TS; | ||
| 824 | |||
| 822 | show_regs(regs); | 825 | show_regs(regs); |
| 823 | dump_tlb_all(); | 826 | |
| 827 | if (multi_match) { | ||
| 828 | printk("Index : %0x\n", read_c0_index()); | ||
| 829 | printk("Pagemask: %0x\n", read_c0_pagemask()); | ||
| 830 | printk("EntryHi : %0*lx\n", field, read_c0_entryhi()); | ||
| 831 | printk("EntryLo0: %0*lx\n", field, read_c0_entrylo0()); | ||
| 832 | printk("EntryLo1: %0*lx\n", field, read_c0_entrylo1()); | ||
| 833 | printk("\n"); | ||
| 834 | dump_tlb_all(); | ||
| 835 | } | ||
| 836 | |||
| 837 | show_code((unsigned int *) regs->cp0_epc); | ||
| 838 | |||
| 824 | /* | 839 | /* |
| 825 | * Some chips may have other causes of machine check (e.g. SB1 | 840 | * Some chips may have other causes of machine check (e.g. SB1 |
| 826 | * graduation timer) | 841 | * graduation timer) |
| 827 | */ | 842 | */ |
| 828 | panic("Caught Machine Check exception - %scaused by multiple " | 843 | panic("Caught Machine Check exception - %scaused by multiple " |
| 829 | "matching entries in the TLB.", | 844 | "matching entries in the TLB.", |
| 830 | (regs->cp0_status & ST0_TS) ? "" : "not "); | 845 | (multi_match) ? "" : "not "); |
| 831 | } | 846 | } |
| 832 | 847 | ||
| 833 | asmlinkage void do_mt(struct pt_regs *regs) | 848 | asmlinkage void do_mt(struct pt_regs *regs) |
| @@ -902,6 +917,7 @@ static inline void parity_protection_init(void) | |||
| 902 | { | 917 | { |
| 903 | switch (current_cpu_data.cputype) { | 918 | switch (current_cpu_data.cputype) { |
| 904 | case CPU_24K: | 919 | case CPU_24K: |
| 920 | case CPU_34K: | ||
| 905 | case CPU_5KC: | 921 | case CPU_5KC: |
| 906 | write_c0_ecc(0x80000000); | 922 | write_c0_ecc(0x80000000); |
| 907 | back_to_back_c0_hazard(); | 923 | back_to_back_c0_hazard(); |
