aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAlexander van Heukelum <heukelum@fastmail.fm>2008-09-09 15:55:58 -0400
committerIngo Molnar <mingo@elte.hu>2008-10-13 04:20:08 -0400
commitb94da1e4b7d396abe10ce4d566f1a5f623602c21 (patch)
treeccd0e3c5a96501d98d04dcd8e33a7aa4f6c70c8c /arch
parent976382dcbe3a2233f48cda5b0840874f43a30825 (diff)
i386: expand exception 3 DO_TRAP macro
The int3 exception was already takes as an interrupt and do_int3 does not fit in the new DO_ERROR macro. This patch just expands the DO_TRAP macro and rearranges the code a bit. No functional changes intended. Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/traps_32.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/kernel/traps_32.c b/arch/x86/kernel/traps_32.c
index c18824b9d1ab..e3c4809f414a 100644
--- a/arch/x86/kernel/traps_32.c
+++ b/arch/x86/kernel/traps_32.c
@@ -633,9 +633,6 @@ void do_##name(struct pt_regs *regs, long error_code) \
633} 633}
634 634
635DO_VM86_ERROR_INFO(0, SIGFPE, "divide error", divide_error, FPE_INTDIV, regs->ip) 635DO_VM86_ERROR_INFO(0, SIGFPE, "divide error", divide_error, FPE_INTDIV, regs->ip)
636#ifndef CONFIG_KPROBES
637DO_VM86_TRAP(3, SIGTRAP, "int3", int3)
638#endif
639DO_VM86_TRAP(4, SIGSEGV, "overflow", overflow) 636DO_VM86_TRAP(4, SIGSEGV, "overflow", overflow)
640DO_VM86_TRAP(5, SIGSEGV, "bounds", bounds) 637DO_VM86_TRAP(5, SIGSEGV, "bounds", bounds)
641DO_TRAP_INFO(6, SIGILL, "invalid opcode", invalid_op, ILL_ILLOPN, regs->ip, 0) 638DO_TRAP_INFO(6, SIGILL, "invalid opcode", invalid_op, ILL_ILLOPN, regs->ip, 0)
@@ -907,9 +904,9 @@ void restart_nmi(void)
907 acpi_nmi_enable(); 904 acpi_nmi_enable();
908} 905}
909 906
910#ifdef CONFIG_KPROBES
911void __kprobes do_int3(struct pt_regs *regs, long error_code) 907void __kprobes do_int3(struct pt_regs *regs, long error_code)
912{ 908{
909#ifdef CONFIG_KPROBES
913 trace_hardirqs_fixup(); 910 trace_hardirqs_fixup();
914 911
915 if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP) 912 if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP)
@@ -920,10 +917,14 @@ void __kprobes do_int3(struct pt_regs *regs, long error_code)
920 * disabled. Normal trap handlers don't. 917 * disabled. Normal trap handlers don't.
921 */ 918 */
922 conditional_sti(regs); 919 conditional_sti(regs);
920#else
921 if (notify_die(DIE_TRAP, "int3", regs, error_code, 3, SIGTRAP)
922 == NOTIFY_STOP)
923 return;
924#endif
923 925
924 do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL); 926 do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL);
925} 927}
926#endif
927 928
928/* 929/*
929 * Our handling of the processor debug registers is non-trivial. 930 * Our handling of the processor debug registers is non-trivial.