diff options
Diffstat (limited to 'arch/x86_64/kernel/irq.c')
-rw-r--r-- | arch/x86_64/kernel/irq.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/irq.c b/arch/x86_64/kernel/irq.c index 506f27c85ca5..b8a407fcd5d5 100644 --- a/arch/x86_64/kernel/irq.c +++ b/arch/x86_64/kernel/irq.c | |||
@@ -103,7 +103,9 @@ skip: | |||
103 | * handlers). | 103 | * handlers). |
104 | */ | 104 | */ |
105 | asmlinkage unsigned int do_IRQ(struct pt_regs *regs) | 105 | asmlinkage unsigned int do_IRQ(struct pt_regs *regs) |
106 | { | 106 | { |
107 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
108 | |||
107 | /* high bit used in ret_from_ code */ | 109 | /* high bit used in ret_from_ code */ |
108 | unsigned vector = ~regs->orig_rax; | 110 | unsigned vector = ~regs->orig_rax; |
109 | unsigned irq; | 111 | unsigned irq; |
@@ -121,9 +123,10 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs) | |||
121 | #ifdef CONFIG_DEBUG_STACKOVERFLOW | 123 | #ifdef CONFIG_DEBUG_STACKOVERFLOW |
122 | stack_overflow_check(regs); | 124 | stack_overflow_check(regs); |
123 | #endif | 125 | #endif |
124 | generic_handle_irq(irq, regs); | 126 | generic_handle_irq(irq); |
125 | irq_exit(); | 127 | irq_exit(); |
126 | 128 | ||
129 | set_irq_regs(old_regs); | ||
127 | return 1; | 130 | return 1; |
128 | } | 131 | } |
129 | 132 | ||