diff options
author | Robin Getz <robin.getz@analog.com> | 2007-10-09 05:24:30 -0400 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2007-10-09 05:24:30 -0400 |
commit | 2ebcade590dcf822dcdadcc4f8f68efd3ff2e217 (patch) | |
tree | 38532077386784de87ac65aba73e22c399c96ecb /arch/blackfin/kernel/traps.c | |
parent | 0ae53640b54f2c30e52044f7102ba08915b988a7 (diff) |
Blackfin arch: fix endless loop bug when a double fault happens
Today when a double fault happens (exception during an exception
handling event), we go into an endless loop, with nothing comming out
the UART. With this patch, we actually see that we have commited a
double fault event
Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'arch/blackfin/kernel/traps.c')
-rw-r--r-- | arch/blackfin/kernel/traps.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 1a8a5f171bc8..ba68eb2ec929 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
@@ -132,6 +132,14 @@ static int printk_address(unsigned long address) | |||
132 | } | 132 | } |
133 | #endif | 133 | #endif |
134 | 134 | ||
135 | asmlinkage void double_fault_c(struct pt_regs *fp) | ||
136 | { | ||
137 | printk(KERN_EMERG "\n" KERN_EMERG "Double Fault\n"); | ||
138 | dump_bfin_regs(fp, (void *)fp->retx); | ||
139 | panic("Double Fault - unrecoverable event\n"); | ||
140 | |||
141 | } | ||
142 | |||
135 | asmlinkage void trap_c(struct pt_regs *fp) | 143 | asmlinkage void trap_c(struct pt_regs *fp) |
136 | { | 144 | { |
137 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON | 145 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON |