diff options
Diffstat (limited to 'arch/ia64/kernel/irq_ia64.c')
-rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index 7fd3ef9e064d..68339dd0c9e2 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -226,6 +226,8 @@ void ia64_process_pending_intr(void) | |||
226 | */ | 226 | */ |
227 | while (vector != IA64_SPURIOUS_INT_VECTOR) { | 227 | while (vector != IA64_SPURIOUS_INT_VECTOR) { |
228 | if (!IS_RESCHEDULE(vector)) { | 228 | if (!IS_RESCHEDULE(vector)) { |
229 | struct pt_regs *old_regs = set_irq_regs(NULL); | ||
230 | |||
229 | ia64_setreg(_IA64_REG_CR_TPR, vector); | 231 | ia64_setreg(_IA64_REG_CR_TPR, vector); |
230 | ia64_srlz_d(); | 232 | ia64_srlz_d(); |
231 | 233 | ||
@@ -236,7 +238,8 @@ void ia64_process_pending_intr(void) | |||
236 | * Probably could shared code. | 238 | * Probably could shared code. |
237 | */ | 239 | */ |
238 | vectors_in_migration[local_vector_to_irq(vector)]=0; | 240 | vectors_in_migration[local_vector_to_irq(vector)]=0; |
239 | __do_IRQ(local_vector_to_irq(vector), NULL); | 241 | __do_IRQ(local_vector_to_irq(vector)); |
242 | set_irq_regs(old_regs); | ||
240 | 243 | ||
241 | /* | 244 | /* |
242 | * Disable interrupts and send EOI | 245 | * Disable interrupts and send EOI |
@@ -253,7 +256,7 @@ void ia64_process_pending_intr(void) | |||
253 | 256 | ||
254 | 257 | ||
255 | #ifdef CONFIG_SMP | 258 | #ifdef CONFIG_SMP |
256 | extern irqreturn_t handle_IPI (int irq, void *dev_id, struct pt_regs *regs); | 259 | extern irqreturn_t handle_IPI (int irq, void *dev_id); |
257 | 260 | ||
258 | static struct irqaction ipi_irqaction = { | 261 | static struct irqaction ipi_irqaction = { |
259 | .handler = handle_IPI, | 262 | .handler = handle_IPI, |