diff options
author | Haavard Skinnemoen <hskinnemoen@atmel.com> | 2007-03-13 12:59:11 -0400 |
---|---|---|
committer | Haavard Skinnemoen <hskinnemoen@atmel.com> | 2007-04-27 07:44:13 -0400 |
commit | 623b0355d5b1f9c6d05005b649a2f3a7b9fd7816 (patch) | |
tree | 43ef35d4f6e83a49c1fb72df4b538271b650c054 /include/asm-avr32/system.h | |
parent | 3b328c98093702c584692bffabd440800b383d73 (diff) |
[AVR32] Clean up exception handling code
* Use generic BUG() handling
* Remove some useless debug statements
* Use a common function _exception() to send signals or oops when
an exception can't be handled. This makes sure init doesn't
enter an infinite exception loop as well. Borrowed from powerpc.
* Add some basic exception tracing support to the page fault code.
* Rework dump_stack(), show_regs() and friends and move everything
into process.c
* Print information about configuration options and chip type when
oopsing
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Diffstat (limited to 'include/asm-avr32/system.h')
-rw-r--r-- | include/asm-avr32/system.h | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/include/asm-avr32/system.h b/include/asm-avr32/system.h index ac596058697d..a8236bacc878 100644 --- a/include/asm-avr32/system.h +++ b/include/asm-avr32/system.h | |||
@@ -9,6 +9,7 @@ | |||
9 | #define __ASM_AVR32_SYSTEM_H | 9 | #define __ASM_AVR32_SYSTEM_H |
10 | 10 | ||
11 | #include <linux/compiler.h> | 11 | #include <linux/compiler.h> |
12 | #include <linux/linkage.h> | ||
12 | #include <linux/types.h> | 13 | #include <linux/types.h> |
13 | 14 | ||
14 | #include <asm/ptrace.h> | 15 | #include <asm/ptrace.h> |
@@ -140,15 +141,9 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, | |||
140 | sizeof(*(ptr)))) | 141 | sizeof(*(ptr)))) |
141 | 142 | ||
142 | struct pt_regs; | 143 | struct pt_regs; |
143 | extern void __die(const char *, struct pt_regs *, unsigned long, | 144 | void NORET_TYPE die(const char *str, struct pt_regs *regs, long err); |
144 | const char *, const char *, unsigned long); | 145 | void _exception(long signr, struct pt_regs *regs, int code, |
145 | extern void __die_if_kernel(const char *, struct pt_regs *, unsigned long, | 146 | unsigned long addr); |
146 | const char *, const char *, unsigned long); | ||
147 | |||
148 | #define die(msg, regs, err) \ | ||
149 | __die(msg, regs, err, __FILE__ ":", __FUNCTION__, __LINE__) | ||
150 | #define die_if_kernel(msg, regs, err) \ | ||
151 | __die_if_kernel(msg, regs, err, __FILE__ ":", __FUNCTION__, __LINE__) | ||
152 | 147 | ||
153 | #define arch_align_stack(x) (x) | 148 | #define arch_align_stack(x) (x) |
154 | 149 | ||