diff options
author | Robin Getz <rgetz@blackfin.uclinux.org> | 2008-10-08 04:27:12 -0400 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2008-10-08 04:27:12 -0400 |
commit | 0c7a6b2135c1bcb5139ca9ca87f292caafcb9410 (patch) | |
tree | ee1e8b36a4dba9120035ddac270e63ba91dc649c /arch/blackfin/Kconfig.debug | |
parent | f4585a08479a730fb809606b8ee327a5398c117c (diff) |
Blackfin arch: add supporting for double fault debug handling
Signed-off-by: Robin Getz <rgetz@blackfin.uclinux.org>
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'arch/blackfin/Kconfig.debug')
-rw-r--r-- | arch/blackfin/Kconfig.debug | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/arch/blackfin/Kconfig.debug b/arch/blackfin/Kconfig.debug index c468624d55f0..0afa89818722 100644 --- a/arch/blackfin/Kconfig.debug +++ b/arch/blackfin/Kconfig.debug | |||
@@ -22,6 +22,44 @@ config DEBUG_HWERR | |||
22 | hardware error interrupts and need to know where they are coming | 22 | hardware error interrupts and need to know where they are coming |
23 | from. | 23 | from. |
24 | 24 | ||
25 | config DEBUG_DOUBLEFAULT | ||
26 | bool "Debug Double Faults" | ||
27 | default n | ||
28 | help | ||
29 | If an exception is caused while executing code within the exception | ||
30 | handler, the NMI handler, the reset vector, or in emulator mode, | ||
31 | a double fault occurs. On the Blackfin, this is a unrecoverable | ||
32 | event. You have two options: | ||
33 | - RESET exactly when double fault occurs. The excepting | ||
34 | instruction address is stored in RETX, where the next kernel | ||
35 | boot will print it out. | ||
36 | - Print debug message. This is much more error prone, although | ||
37 | easier to handle. It is error prone since: | ||
38 | - The excepting instruction is not committed. | ||
39 | - All writebacks from the instruction are prevented. | ||
40 | - The generated exception is not taken. | ||
41 | - The EXCAUSE field is updated with an unrecoverable event | ||
42 | The only way to check this is to see if EXCAUSE contains the | ||
43 | unrecoverable event value at every exception return. By selecting | ||
44 | this option, you are skipping over the faulting instruction, and | ||
45 | hoping things stay together enough to print out a debug message. | ||
46 | |||
47 | This does add a little kernel code, but is the only method to debug | ||
48 | double faults - if unsure say "Y" | ||
49 | |||
50 | choice | ||
51 | prompt "Double Fault Failure Method" | ||
52 | default DEBUG_DOUBLEFAULT_PRINT | ||
53 | depends on DEBUG_DOUBLEFAULT | ||
54 | |||
55 | config DEBUG_DOUBLEFAULT_PRINT | ||
56 | bool "Print" | ||
57 | |||
58 | config DEBUG_DOUBLEFAULT_RESET | ||
59 | bool "Reset" | ||
60 | |||
61 | endchoice | ||
62 | |||
25 | config DEBUG_ICACHE_CHECK | 63 | config DEBUG_ICACHE_CHECK |
26 | bool "Check Instruction cache coherency" | 64 | bool "Check Instruction cache coherency" |
27 | depends on DEBUG_KERNEL | 65 | depends on DEBUG_KERNEL |