diff options
Diffstat (limited to 'arch/powerpc/cpu/mpc8220')
| -rw-r--r-- | arch/powerpc/cpu/mpc8220/traps.c | 119 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc8220/u-boot.lds | 8 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc8220/uart.c | 9 |
3 files changed, 63 insertions, 73 deletions
diff --git a/arch/powerpc/cpu/mpc8220/traps.c b/arch/powerpc/cpu/mpc8220/traps.c index 13894c905..19d6cb57c 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; diff --git a/arch/powerpc/cpu/mpc8220/u-boot.lds b/arch/powerpc/cpu/mpc8220/u-boot.lds index 39bb42e1c..c1479544f 100644 --- a/arch/powerpc/cpu/mpc8220/u-boot.lds +++ b/arch/powerpc/cpu/mpc8220/u-boot.lds @@ -59,9 +59,11 @@ SECTIONS PROVIDE (edata = .); . = .; - __u_boot_cmd_start = .; - .u_boot_cmd : { *(.u_boot_cmd) } - __u_boot_cmd_end = .; + + . = ALIGN(4); + .u_boot_list : { + #include <u-boot.lst> + } . = .; diff --git a/arch/powerpc/cpu/mpc8220/uart.c b/arch/powerpc/cpu/mpc8220/uart.c index 25d4472ea..772528f82 100644 --- a/arch/powerpc/cpu/mpc8220/uart.c +++ b/arch/powerpc/cpu/mpc8220/uart.c @@ -84,13 +84,6 @@ static void mpc8220_serial_putc(const char c) psc->xmitbuf[0] = c; } -static void mpc8220_serial_puts(const char *s) -{ - while (*s) { - serial_putc (*s++); - } -} - static int mpc8220_serial_getc(void) { volatile psc8220_t *psc = (psc8220_t *) PSC_BASE; @@ -132,7 +125,7 @@ static struct serial_device mpc8220_serial_drv = { .stop = NULL, .setbrg = mpc8220_serial_setbrg, .putc = mpc8220_serial_putc, - .puts = mpc8220_serial_puts, + .puts = default_serial_puts, .getc = mpc8220_serial_getc, .tstc = mpc8220_serial_tstc, }; |