diff options
Diffstat (limited to 'arch/powerpc/cpu/mpc512x/traps.c')
| -rw-r--r-- | arch/powerpc/cpu/mpc512x/traps.c | 110 | 
1 files changed, 51 insertions, 59 deletions
| diff --git a/arch/powerpc/cpu/mpc512x/traps.c b/arch/powerpc/cpu/mpc512x/traps.c index 786f4a5a7..15468e582 100644 --- a/arch/powerpc/cpu/mpc512x/traps.c +++ b/arch/powerpc/cpu/mpc512x/traps.c @@ -47,68 +47,65 @@ extern ulong get_effective_memsize(void);   * Trap & Exception support   */ -void -print_backtrace (unsigned long *sp) +static void print_backtrace(unsigned long *sp)  {  	int cnt = 0;  	unsigned long i; -	puts ("Call backtrace: "); +	puts("Call backtrace: ");  	while (sp) {  		if ((uint)sp > END_OF_MEM)  			break;  		i = sp[1];  		if (cnt++ % 7 == 0) -			putc ('\n'); -		printf ("%08lX ", i); +			putc('\n'); +		printf("%08lX ", i);  		if (cnt > 32) break;  		sp = (unsigned long *) *sp;  	} -	putc ('\n'); +	putc('\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); -	putc ('\n'); +	putc('\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) { -			putc ('\n'); +			putc('\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 at pc %lx signal %d", regs->nip,signr); +	show_regs(regs); +	print_backtrace((unsigned long *)regs->gpr[1]); +	panic("Exception at 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); -	if ((fixup = search_exception_table (regs->nip)) != 0) { +	if (fixup) {  		regs->nip = fixup;  		return;  	} @@ -118,95 +115,90 @@ MachineCheckException (struct pt_regs *regs)  		return;  #endif -	puts ("Machine check.\nCaused by (from msr): "); -	printf ("regs %p ",regs); +	puts("Machine check.\nCaused by (from msr): "); +	printf("regs %p ", regs);  	switch (regs->msr & 0x00FF0000) {  	case (0x80000000 >> 10): -		puts ("Instruction cache parity signal\n"); +		puts("Instruction cache parity signal\n");  		break;  	case (0x80000000 >> 11): -		puts ("Data cache parity signal\n"); +		puts("Data cache parity signal\n");  		break;  	case (0x80000000 >> 12): -		puts ("Machine check signal\n"); +		puts("Machine check signal\n");  		break;  	case (0x80000000 >> 13): -		puts ("Transfer error ack signal\n"); +		puts("Transfer error ack signal\n");  		break;  	case (0x80000000 >> 14): -		puts ("Data parity signal\n"); +		puts("Data parity signal\n");  		break;  	case (0x80000000 >> 15): -		puts ("Address parity signal\n"); +		puts("Address parity signal\n");  		break;  	default: -		puts ("Unknown values in msr\n"); +		puts("Unknown values in msr\n");  	} -	show_regs (regs); -	print_backtrace ((unsigned long *)regs->gpr[1]); +	show_regs(regs); +	print_backtrace((unsigned long *)regs->gpr[1]); -	panic ("machine check"); +	panic("machine check");  } -void -AlignmentException (struct pt_regs *regs) +void AlignmentException(struct pt_regs *regs)  {  #ifdef CONFIG_CMD_KGDB  	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)  {  #ifdef CONFIG_CMD_KGDB  	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)  {  #ifdef CONFIG_CMD_KGDB  	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)  {  #ifdef CONFIG_CMD_KGDB  	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);  }  #ifdef 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);  #ifdef CONFIG_CMD_BEDBUG -	do_bedbug_breakpoint (regs); +	do_bedbug_breakpoint(regs);  #endif  } |