Use correct names for bits in the R3k cp0.status register.
authorMaciej W. Rozycki <macro@linux-mips.org>
Wed, 22 Jun 2005 20:43:29 +0000 (20:43 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Sat, 29 Oct 2005 18:31:29 +0000 (19:31 +0100)
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/traps.c

index b502dc9..46636a2 100644 (file)
@@ -9,7 +9,7 @@
  * Copyright (C) 1999 Silicon Graphics, Inc.
  * Kevin D. Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
  * Copyright (C) 2000, 01 MIPS Technologies, Inc.
- * Copyright (C) 2002, 2003, 2004  Maciej W. Rozycki
+ * Copyright (C) 2002, 2003, 2004, 2005  Maciej W. Rozycki
  */
 #include <linux/config.h>
 #include <linux/init.h>
@@ -203,32 +203,47 @@ void show_regs(struct pt_regs *regs)
 
        printk("Status: %08x    ", (uint32_t) regs->cp0_status);
 
-       if (regs->cp0_status & ST0_KX)
-               printk("KX ");
-       if (regs->cp0_status & ST0_SX)
-               printk("SX ");
-       if (regs->cp0_status & ST0_UX)
-               printk("UX ");
-       switch (regs->cp0_status & ST0_KSU) {
-       case KSU_USER:
-               printk("USER ");
-               break;
-       case KSU_SUPERVISOR:
-               printk("SUPERVISOR ");
-               break;
-       case KSU_KERNEL:
-               printk("KERNEL ");
-               break;
-       default:
-               printk("BAD_MODE ");
-               break;
+       if (current_cpu_data.isa_level == MIPS_CPU_ISA_I) {
+               if (regs->cp0_status & ST0_KUO)
+                       printk("KUo ");
+               if (regs->cp0_status & ST0_IEO)
+                       printk("IEo ");
+               if (regs->cp0_status & ST0_KUP)
+                       printk("KUp ");
+               if (regs->cp0_status & ST0_IEP)
+                       printk("IEp ");
+               if (regs->cp0_status & ST0_KUC)
+                       printk("KUc ");
+               if (regs->cp0_status & ST0_IEC)
+                       printk("IEc ");
+       } else {
+               if (regs->cp0_status & ST0_KX)
+                       printk("KX ");
+               if (regs->cp0_status & ST0_SX)
+                       printk("SX ");
+               if (regs->cp0_status & ST0_UX)
+                       printk("UX ");
+               switch (regs->cp0_status & ST0_KSU) {
+               case KSU_USER:
+                       printk("USER ");
+                       break;
+               case KSU_SUPERVISOR:
+                       printk("SUPERVISOR ");
+                       break;
+               case KSU_KERNEL:
+                       printk("KERNEL ");
+                       break;
+               default:
+                       printk("BAD_MODE ");
+                       break;
+               }
+               if (regs->cp0_status & ST0_ERL)
+                       printk("ERL ");
+               if (regs->cp0_status & ST0_EXL)
+                       printk("EXL ");
+               if (regs->cp0_status & ST0_IE)
+                       printk("IE ");
        }
-       if (regs->cp0_status & ST0_ERL)
-               printk("ERL ");
-       if (regs->cp0_status & ST0_EXL)
-               printk("EXL ");
-       if (regs->cp0_status & ST0_IE)
-               printk("IE ");
        printk("\n");
 
        printk("Cause : %08x\n", cause);