diff options
Diffstat (limited to 'arch/x86/include/asm/traps.h')
-rw-r--r-- | arch/x86/include/asm/traps.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/arch/x86/include/asm/traps.h b/arch/x86/include/asm/traps.h new file mode 100644 index 000000000000..6c3dc2c65751 --- /dev/null +++ b/arch/x86/include/asm/traps.h | |||
@@ -0,0 +1,81 @@ | |||
1 | #ifndef ASM_X86__TRAPS_H | ||
2 | #define ASM_X86__TRAPS_H | ||
3 | |||
4 | #include <asm/debugreg.h> | ||
5 | |||
6 | #ifdef CONFIG_X86_32 | ||
7 | #define dotraplinkage | ||
8 | #else | ||
9 | #define dotraplinkage asmlinkage | ||
10 | #endif | ||
11 | |||
12 | asmlinkage void divide_error(void); | ||
13 | asmlinkage void debug(void); | ||
14 | asmlinkage void nmi(void); | ||
15 | asmlinkage void int3(void); | ||
16 | asmlinkage void overflow(void); | ||
17 | asmlinkage void bounds(void); | ||
18 | asmlinkage void invalid_op(void); | ||
19 | asmlinkage void device_not_available(void); | ||
20 | #ifdef CONFIG_X86_64 | ||
21 | asmlinkage void double_fault(void); | ||
22 | #endif | ||
23 | asmlinkage void coprocessor_segment_overrun(void); | ||
24 | asmlinkage void invalid_TSS(void); | ||
25 | asmlinkage void segment_not_present(void); | ||
26 | asmlinkage void stack_segment(void); | ||
27 | asmlinkage void general_protection(void); | ||
28 | asmlinkage void page_fault(void); | ||
29 | asmlinkage void spurious_interrupt_bug(void); | ||
30 | asmlinkage void coprocessor_error(void); | ||
31 | asmlinkage void alignment_check(void); | ||
32 | #ifdef CONFIG_X86_MCE | ||
33 | asmlinkage void machine_check(void); | ||
34 | #endif /* CONFIG_X86_MCE */ | ||
35 | asmlinkage void simd_coprocessor_error(void); | ||
36 | |||
37 | dotraplinkage void do_divide_error(struct pt_regs *, long); | ||
38 | dotraplinkage void do_debug(struct pt_regs *, long); | ||
39 | dotraplinkage void do_nmi(struct pt_regs *, long); | ||
40 | dotraplinkage void do_int3(struct pt_regs *, long); | ||
41 | dotraplinkage void do_overflow(struct pt_regs *, long); | ||
42 | dotraplinkage void do_bounds(struct pt_regs *, long); | ||
43 | dotraplinkage void do_invalid_op(struct pt_regs *, long); | ||
44 | dotraplinkage void do_device_not_available(struct pt_regs *, long); | ||
45 | dotraplinkage void do_coprocessor_segment_overrun(struct pt_regs *, long); | ||
46 | dotraplinkage void do_invalid_TSS(struct pt_regs *, long); | ||
47 | dotraplinkage void do_segment_not_present(struct pt_regs *, long); | ||
48 | dotraplinkage void do_stack_segment(struct pt_regs *, long); | ||
49 | dotraplinkage void do_general_protection(struct pt_regs *, long); | ||
50 | dotraplinkage void do_page_fault(struct pt_regs *, unsigned long); | ||
51 | dotraplinkage void do_spurious_interrupt_bug(struct pt_regs *, long); | ||
52 | dotraplinkage void do_coprocessor_error(struct pt_regs *, long); | ||
53 | dotraplinkage void do_alignment_check(struct pt_regs *, long); | ||
54 | #ifdef CONFIG_X86_MCE | ||
55 | dotraplinkage void do_machine_check(struct pt_regs *, long); | ||
56 | #endif | ||
57 | dotraplinkage void do_simd_coprocessor_error(struct pt_regs *, long); | ||
58 | #ifdef CONFIG_X86_32 | ||
59 | dotraplinkage void do_iret_error(struct pt_regs *, long); | ||
60 | #endif | ||
61 | |||
62 | static inline int get_si_code(unsigned long condition) | ||
63 | { | ||
64 | if (condition & DR_STEP) | ||
65 | return TRAP_TRACE; | ||
66 | else if (condition & (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3)) | ||
67 | return TRAP_HWBKPT; | ||
68 | else | ||
69 | return TRAP_BRKPT; | ||
70 | } | ||
71 | |||
72 | extern int panic_on_unrecovered_nmi; | ||
73 | extern int kstack_depth_to_print; | ||
74 | |||
75 | #ifdef CONFIG_X86_32 | ||
76 | void math_error(void __user *); | ||
77 | unsigned long patch_espfix_desc(unsigned long, unsigned long); | ||
78 | asmlinkage void math_emulate(long); | ||
79 | #endif | ||
80 | |||
81 | #endif /* ASM_X86__TRAPS_H */ | ||