diff options
Diffstat (limited to 'arch/ia64/kernel/irq_ia64.c')
-rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index ab2d19c3661f..7fd3ef9e064d 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -138,6 +138,7 @@ void destroy_irq(unsigned int irq) | |||
138 | void | 138 | void |
139 | ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) | 139 | ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) |
140 | { | 140 | { |
141 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
141 | unsigned long saved_tpr; | 142 | unsigned long saved_tpr; |
142 | 143 | ||
143 | #if IRQ_DEBUG | 144 | #if IRQ_DEBUG |
@@ -183,7 +184,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) | |||
183 | ia64_setreg(_IA64_REG_CR_TPR, vector); | 184 | ia64_setreg(_IA64_REG_CR_TPR, vector); |
184 | ia64_srlz_d(); | 185 | ia64_srlz_d(); |
185 | 186 | ||
186 | __do_IRQ(local_vector_to_irq(vector), regs); | 187 | __do_IRQ(local_vector_to_irq(vector)); |
187 | 188 | ||
188 | /* | 189 | /* |
189 | * Disable interrupts and send EOI: | 190 | * Disable interrupts and send EOI: |
@@ -200,6 +201,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) | |||
200 | * come through until ia64_eoi() has been done. | 201 | * come through until ia64_eoi() has been done. |
201 | */ | 202 | */ |
202 | irq_exit(); | 203 | irq_exit(); |
204 | set_irq_regs(old_regs); | ||
203 | } | 205 | } |
204 | 206 | ||
205 | #ifdef CONFIG_HOTPLUG_CPU | 207 | #ifdef CONFIG_HOTPLUG_CPU |