diff options
Diffstat (limited to 'arch/blackfin/kernel/traps.c')
| -rw-r--r-- | arch/blackfin/kernel/traps.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 5b847070dae5..f061f5181623 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
| @@ -67,7 +67,7 @@ void __init trap_init(void) | |||
| 67 | CSYNC(); | 67 | CSYNC(); |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | void *saved_icplb_fault_addr, *saved_dcplb_fault_addr; | 70 | unsigned long saved_icplb_fault_addr, saved_dcplb_fault_addr; |
| 71 | 71 | ||
| 72 | int kstack_depth_to_print = 48; | 72 | int kstack_depth_to_print = 48; |
| 73 | 73 | ||
| @@ -364,13 +364,13 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 364 | /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ | 364 | /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ |
| 365 | case VEC_CPLB_MHIT: | 365 | case VEC_CPLB_MHIT: |
| 366 | info.si_code = ILL_CPLB_MULHIT; | 366 | info.si_code = ILL_CPLB_MULHIT; |
| 367 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO | ||
| 368 | sig = SIGSEGV; | 367 | sig = SIGSEGV; |
| 369 | printk(KERN_NOTICE "NULL pointer access (probably)\n"); | 368 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO |
| 370 | #else | 369 | if (saved_dcplb_fault_addr < FIXED_CODE_START) |
| 371 | sig = SIGILL; | 370 | printk(KERN_NOTICE "NULL pointer access\n"); |
| 372 | printk(KERN_NOTICE EXC_0x27(KERN_NOTICE)); | 371 | else |
| 373 | #endif | 372 | #endif |
| 373 | printk(KERN_NOTICE EXC_0x27(KERN_NOTICE)); | ||
| 374 | CHK_DEBUGGER_TRAP(); | 374 | CHK_DEBUGGER_TRAP(); |
| 375 | break; | 375 | break; |
| 376 | /* 0x28 - Emulation Watchpoint, handled here */ | 376 | /* 0x28 - Emulation Watchpoint, handled here */ |
| @@ -419,13 +419,13 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 419 | /* 0x2D - Instruction CPLB Multiple Hits, handled here */ | 419 | /* 0x2D - Instruction CPLB Multiple Hits, handled here */ |
| 420 | case VEC_CPLB_I_MHIT: | 420 | case VEC_CPLB_I_MHIT: |
| 421 | info.si_code = ILL_CPLB_MULHIT; | 421 | info.si_code = ILL_CPLB_MULHIT; |
| 422 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO | ||
| 423 | sig = SIGSEGV; | 422 | sig = SIGSEGV; |
| 424 | printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n"); | 423 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO |
| 425 | #else | 424 | if (saved_icplb_fault_addr < FIXED_CODE_START) |
| 426 | sig = SIGILL; | 425 | printk(KERN_NOTICE "Jump to NULL address\n"); |
| 427 | printk(KERN_NOTICE EXC_0x2D(KERN_NOTICE)); | 426 | else |
| 428 | #endif | 427 | #endif |
| 428 | printk(KERN_NOTICE EXC_0x2D(KERN_NOTICE)); | ||
| 429 | CHK_DEBUGGER_TRAP(); | 429 | CHK_DEBUGGER_TRAP(); |
| 430 | break; | 430 | break; |
| 431 | /* 0x2E - Illegal use of Supervisor Resource, handled here */ | 431 | /* 0x2E - Illegal use of Supervisor Resource, handled here */ |
| @@ -939,8 +939,6 @@ void panic_cplb_error(int cplb_panic, struct pt_regs *fp) | |||
| 939 | 939 | ||
| 940 | oops_in_progress = 1; | 940 | oops_in_progress = 1; |
| 941 | 941 | ||
| 942 | printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", saved_dcplb_fault_addr); | ||
| 943 | printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", saved_icplb_fault_addr); | ||
| 944 | dump_bfin_process(fp); | 942 | dump_bfin_process(fp); |
| 945 | dump_bfin_mem(fp); | 943 | dump_bfin_mem(fp); |
| 946 | show_regs(fp); | 944 | show_regs(fp); |
