diff options
author | Alexander van Heukelum <heukelum@fastmail.fm> | 2008-09-09 15:55:55 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-13 04:20:02 -0400 |
commit | 762db4347060c5d23e9675846e02f7d95d7f944f (patch) | |
tree | 39267b2c53f6525d8f9a95c1bdb6848205362095 /arch/x86/kernel/traps_32.c | |
parent | 927604c7592473742891dc13e1da09febc06e01b (diff) |
i386: remove kprobes' restore_interrupts in favour of conditional_sti
x86_64 uses a helper function conditional_sti in traps_64.c which
is equal to restore_interrupts in kprobes.h. The only user of
restore_interrupts is in traps_32.c. Introduce conditional_sti
for i386 and remove restore_interrupts.
Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/traps_32.c')
-rw-r--r-- | arch/x86/kernel/traps_32.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/x86/kernel/traps_32.c b/arch/x86/kernel/traps_32.c index 0429c5de5ea9..203b863ac2a8 100644 --- a/arch/x86/kernel/traps_32.c +++ b/arch/x86/kernel/traps_32.c | |||
@@ -84,6 +84,12 @@ static unsigned int code_bytes = 64; | |||
84 | static int ignore_nmis; | 84 | static int ignore_nmis; |
85 | static int die_counter; | 85 | static int die_counter; |
86 | 86 | ||
87 | static inline void conditional_sti(struct pt_regs *regs) | ||
88 | { | ||
89 | if (regs->flags & X86_EFLAGS_IF) | ||
90 | local_irq_enable(); | ||
91 | } | ||
92 | |||
87 | void printk_address(unsigned long address, int reliable) | 93 | void printk_address(unsigned long address, int reliable) |
88 | { | 94 | { |
89 | #ifdef CONFIG_KALLSYMS | 95 | #ifdef CONFIG_KALLSYMS |
@@ -859,7 +865,7 @@ void __kprobes do_int3(struct pt_regs *regs, long error_code) | |||
859 | * This is an interrupt gate, because kprobes wants interrupts | 865 | * This is an interrupt gate, because kprobes wants interrupts |
860 | * disabled. Normal trap handlers don't. | 866 | * disabled. Normal trap handlers don't. |
861 | */ | 867 | */ |
862 | restore_interrupts(regs); | 868 | conditional_sti(regs); |
863 | 869 | ||
864 | do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL); | 870 | do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL); |
865 | } | 871 | } |