aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/kernel/irq.c')
-rw-r--r--arch/x86_64/kernel/irq.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86_64/kernel/irq.c b/arch/x86_64/kernel/irq.c
index 609f97153b88..4542fb031994 100644
--- a/arch/x86_64/kernel/irq.c
+++ b/arch/x86_64/kernel/irq.c
@@ -105,7 +105,12 @@ skip:
105asmlinkage unsigned int do_IRQ(struct pt_regs *regs) 105asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
106{ 106{
107 /* high bit used in ret_from_ code */ 107 /* high bit used in ret_from_ code */
108 unsigned irq = ~regs->orig_rax; 108 unsigned vector = ~regs->orig_rax;
109 unsigned irq;
110
111 exit_idle();
112 irq_enter();
113 irq = vector_irq[vector];
109 114
110 if (unlikely(irq >= NR_IRQS)) { 115 if (unlikely(irq >= NR_IRQS)) {
111 printk(KERN_EMERG "%s: cannot handle IRQ %d\n", 116 printk(KERN_EMERG "%s: cannot handle IRQ %d\n",
@@ -113,8 +118,6 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
113 BUG(); 118 BUG();
114 } 119 }
115 120
116 exit_idle();
117 irq_enter();
118#ifdef CONFIG_DEBUG_STACKOVERFLOW 121#ifdef CONFIG_DEBUG_STACKOVERFLOW
119 stack_overflow_check(regs); 122 stack_overflow_check(regs);
120#endif 123#endif