diff options
Diffstat (limited to 'arch/powerpc/cpu/mpc8220')
-rw-r--r-- | arch/powerpc/cpu/mpc8220/traps.c | 119 |
1 files changed, 57 insertions, 62 deletions
diff --git a/arch/powerpc/cpu/mpc8220/traps.c b/arch/powerpc/cpu/mpc8220/traps.c index 13894c9..19d6cb5 100644 --- a/arch/powerpc/cpu/mpc8220/traps.c +++ b/arch/powerpc/cpu/mpc8220/traps.c @@ -39,7 +39,7 @@ #include <asm/processor.h> /* Returns 0 if exception not found and fixup otherwise. */ -extern unsigned long search_exception_table (unsigned long); +extern unsigned long search_exception_table(unsigned long); /* THIS NEEDS CHANGING to use the board info structure. */ @@ -49,171 +49,166 @@ extern unsigned long search_exception_table (unsigned long); * Trap & Exception support */ -void print_backtrace (unsigned long *sp) +static void print_backtrace(unsigned long *sp) { int cnt = 0; unsigned long i; - printf ("Call backtrace: "); + printf("Call backtrace: "); while (sp) { if ((uint) sp > END_OF_MEM) break; i = sp[1]; if (cnt++ % 7 == 0) - printf ("\n"); - printf ("%08lX ", i); + printf("\n"); + printf("%08lX ", i); if (cnt > 32) break; sp = (unsigned long *) *sp; } - printf ("\n"); + printf("\n"); } -void show_regs (struct pt_regs *regs) +void show_regs(struct pt_regs *regs) { int i; - printf ("NIP: %08lX XER: %08lX LR: %08lX REGS: %p TRAP: %04lx DAR: %08lX\n", + printf("NIP: %08lX XER: %08lX LR: %08lX REGS: %p TRAP: %04lx DAR: %08lX\n", regs->nip, regs->xer, regs->link, regs, regs->trap, regs->dar); - printf ("MSR: %08lx EE: %01x PR: %01x FP: %01x ME: %01x IR/DR: %01x%01x\n", + printf("MSR: %08lx EE: %01x PR: %01x FP: %01x ME: %01x IR/DR: %01x%01x\n", regs->msr, regs->msr & MSR_EE ? 1 : 0, regs->msr & MSR_PR ? 1 : 0, regs->msr & MSR_FP ? 1 : 0, regs->msr & MSR_ME ? 1 : 0, regs->msr & MSR_IR ? 1 : 0, regs->msr & MSR_DR ? 1 : 0); - printf ("\n"); + printf("\n"); for (i = 0; i < 32; i++) { if ((i % 8) == 0) { - printf ("GPR%02d: ", i); + printf("GPR%02d: ", i); } - printf ("%08lX ", regs->gpr[i]); + printf("%08lX ", regs->gpr[i]); if ((i % 8) == 7) { - printf ("\n"); + printf("\n"); } } } -void _exception (int signr, struct pt_regs *regs) +static void _exception(int signr, struct pt_regs *regs) { - show_regs (regs); - print_backtrace ((unsigned long *) regs->gpr[1]); - panic ("Exception in kernel pc %lx signal %d", regs->nip, signr); + show_regs(regs); + print_backtrace((unsigned long *) regs->gpr[1]); + panic("Exception in kernel pc %lx signal %d", regs->nip, signr); } -void MachineCheckException (struct pt_regs *regs) +void MachineCheckException(struct pt_regs *regs) { - unsigned long fixup; + unsigned long fixup = search_exception_table(regs->nip); /* Probing PCI using config cycles cause this exception * when a device is not present. Catch it and return to * the PCI exception handler. */ - if ((fixup = search_exception_table (regs->nip)) != 0) { + if (fixup) { regs->nip = fixup; return; } #if defined(CONFIG_CMD_KGDB) - if (debugger_exception_handler - && (*debugger_exception_handler) (regs)) + if (debugger_exception_handler && (*debugger_exception_handler)(regs)) return; #endif - printf ("Machine check in kernel mode.\n"); - printf ("Caused by (from msr): "); - printf ("regs %p ", regs); + printf("Machine check in kernel mode.\n"); + printf("Caused by (from msr): "); + printf("regs %p ", regs); /* refer to 603e Manual (MPC603EUM/AD), chapter 4.5.2.1 */ switch (regs->msr & 0x000F0000) { case (0x80000000 >> 12): - printf ("Machine check signal - probably due to mm fault\n" + printf("Machine check signal - probably due to mm fault\n" "with mmu off\n"); break; case (0x80000000 >> 13): - printf ("Transfer error ack signal\n"); + printf("Transfer error ack signal\n"); break; case (0x80000000 >> 14): - printf ("Data parity signal\n"); + printf("Data parity signal\n"); break; case (0x80000000 >> 15): - printf ("Address parity signal\n"); + printf("Address parity signal\n"); break; default: - printf ("Unknown values in msr\n"); + printf("Unknown values in msr\n"); } - show_regs (regs); - print_backtrace ((unsigned long *) regs->gpr[1]); - panic ("machine check"); + show_regs(regs); + print_backtrace((unsigned long *) regs->gpr[1]); + panic("machine check"); } -void AlignmentException (struct pt_regs *regs) +void AlignmentException(struct pt_regs *regs) { #if defined(CONFIG_CMD_KGDB) - if (debugger_exception_handler - && (*debugger_exception_handler) (regs)) + if (debugger_exception_handler && (*debugger_exception_handler)(regs)) return; #endif - show_regs (regs); - print_backtrace ((unsigned long *) regs->gpr[1]); - panic ("Alignment Exception"); + show_regs(regs); + print_backtrace((unsigned long *) regs->gpr[1]); + panic("Alignment Exception"); } -void ProgramCheckException (struct pt_regs *regs) +void ProgramCheckException(struct pt_regs *regs) { #if defined(CONFIG_CMD_KGDB) - if (debugger_exception_handler - && (*debugger_exception_handler) (regs)) + if (debugger_exception_handler && (*debugger_exception_handler)(regs)) return; #endif - show_regs (regs); - print_backtrace ((unsigned long *) regs->gpr[1]); - panic ("Program Check Exception"); + show_regs(regs); + print_backtrace((unsigned long *) regs->gpr[1]); + panic("Program Check Exception"); } -void SoftEmuException (struct pt_regs *regs) +void SoftEmuException(struct pt_regs *regs) { #if defined(CONFIG_CMD_KGDB) - if (debugger_exception_handler - && (*debugger_exception_handler) (regs)) + if (debugger_exception_handler && (*debugger_exception_handler)(regs)) return; #endif - show_regs (regs); - print_backtrace ((unsigned long *) regs->gpr[1]); - panic ("Software Emulation Exception"); + show_regs(regs); + print_backtrace((unsigned long *) regs->gpr[1]); + panic("Software Emulation Exception"); } -void UnknownException (struct pt_regs *regs) +void UnknownException(struct pt_regs *regs) { #if defined(CONFIG_CMD_KGDB) - if (debugger_exception_handler - && (*debugger_exception_handler) (regs)) + if (debugger_exception_handler && (*debugger_exception_handler)(regs)) return; #endif - printf ("Bad trap at PC: %lx, SR: %lx, vector=%lx\n", + printf("Bad trap at PC: %lx, SR: %lx, vector=%lx\n", regs->nip, regs->msr, regs->trap); - _exception (0, regs); + _exception(0, regs); } #if defined(CONFIG_CMD_BEDBUG) -extern void do_bedbug_breakpoint (struct pt_regs *); +extern void do_bedbug_breakpoint(struct pt_regs *); #endif -void DebugException (struct pt_regs *regs) +void DebugException(struct pt_regs *regs) { - printf ("Debugger trap at @ %lx\n", regs->nip); - show_regs (regs); + printf("Debugger trap at @ %lx\n", regs->nip); + show_regs(regs); #if defined(CONFIG_CMD_BEDBUG) - do_bedbug_breakpoint (regs); + do_bedbug_breakpoint(regs); #endif } /* Probe an address by reading. If not present, return -1, otherwise * return 0. */ -int addr_probe (uint * addr) +int addr_probe(uint *addr) { #if 0 int retval; |