diff options
Diffstat (limited to 'arch/microblaze/kernel/traps.c')
| -rw-r--r-- | arch/microblaze/kernel/traps.c | 42 | 
1 files changed, 34 insertions, 8 deletions
diff --git a/arch/microblaze/kernel/traps.c b/arch/microblaze/kernel/traps.c index 293ef486013..eaaaf805f31 100644 --- a/arch/microblaze/kernel/traps.c +++ b/arch/microblaze/kernel/traps.c @@ -22,14 +22,6 @@ void trap_init(void)  	__enable_hw_exceptions();  } -void __bad_xchg(volatile void *ptr, int size) -{ -	printk(KERN_INFO "xchg: bad data size: pc 0x%p, ptr 0x%p, size %d\n", -		__builtin_return_address(0), ptr, size); -	BUG(); -} -EXPORT_SYMBOL(__bad_xchg); -  static int kstack_depth_to_print = 24;  static int __init kstack_setup(char *s) @@ -105,3 +97,37 @@ void dump_stack(void)  	show_stack(NULL, NULL);  }  EXPORT_SYMBOL(dump_stack); + +#ifdef CONFIG_MMU +void __bug(const char *file, int line, void *data) +{ +	if (data) +		printk(KERN_CRIT "kernel BUG at %s:%d (data = %p)!\n", +			file, line, data); +	else +		printk(KERN_CRIT "kernel BUG at %s:%d!\n", file, line); + +	machine_halt(); +} + +int bad_trap(int trap_num, struct pt_regs *regs) +{ +	printk(KERN_CRIT +		"unimplemented trap %d called at 0x%08lx, pid %d!\n", +		trap_num, regs->pc, current->pid); +	return -ENOSYS; +} + +int debug_trap(struct pt_regs *regs) +{ +	int i; +	printk(KERN_CRIT "debug trap\n"); +	for (i = 0; i < 32; i++) { +		/* printk("r%i:%08X\t",i,regs->gpr[i]); */ +		if ((i % 4) == 3) +			printk(KERN_CRIT "\n"); +	} +	printk(KERN_CRIT "pc:%08lX\tmsr:%08lX\n", regs->pc, regs->msr); +	return -ENOSYS; +} +#endif  |