X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cpu%2Fmpc824x%2Ftraps.c;h=0a7243020b6f648df49a04bdce46a3edd9c47de1;hb=607b3ae27efdb709719f0713113fcf4b073676c1;hp=11f51c250113031784cccf40d4af9ff730372a11;hpb=affae2bff825c1a8d2cfeaf7b270188d251d39d2;p=oweals%2Fu-boot.git diff --git a/cpu/mpc824x/traps.c b/cpu/mpc824x/traps.c index 11f51c2501..0a7243020b 100644 --- a/cpu/mpc824x/traps.c +++ b/cpu/mpc824x/traps.c @@ -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. */