Merge commit 'remotes/wd/master' into newmaster
[oweals/u-boot.git] / cpu / mpc824x / traps.c
index 11f51c250113031784cccf40d4af9ff730372a11..0a7243020b6f648df49a04bdce46a3edd9c47de1 100644 (file)
@@ -120,19 +120,18 @@ MachineCheckException(struct pt_regs *regs)
        printf("Machine check in kernel mode.\n");
        printf("Caused by (from msr): ");
        printf("regs %p ",regs);
-       switch( regs->msr & 0x0000F000)
-       {
-       case (1<<12) :
+       switch( regs->msr & 0x000F0000) {
+       case (0x80000000>>12):
                printf("Machine check signal - probably due to mm fault\n"
                        "with mmu off\n");
                break;
-       case (1<<13) :
+       case (0x80000000>>13):
                printf("Transfer error ack signal\n");
                break;
-       case (1<<14) :
+       case (0x80000000>>14):
                printf("Data parity signal\n");
                break;
-       case (1<<15) :
+       case (0x80000000>>15):
                printf("Address parity signal\n");
                break;
        default:
@@ -176,6 +175,21 @@ UnknownException(struct pt_regs *regs)
        _exception(0, regs);
 }
 
+#if defined(CONFIG_CMD_BEDBUG)
+extern void do_bedbug_breakpoint(struct pt_regs *);
+#endif
+
+void
+DebugException(struct pt_regs *regs)
+{
+
+  printf("Debugger trap at @ %lx\n", regs->nip );
+  show_regs(regs);
+#if defined(CONFIG_CMD_BEDBUG)
+  do_bedbug_breakpoint( regs );
+#endif
+}
+
 /* Probe an address by reading.  If not present, return -1, otherwise
  * return 0.
  */