aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/irq_ia64.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kernel/irq_ia64.c')
-rw-r--r--arch/ia64/kernel/irq_ia64.c7
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
256extern irqreturn_t handle_IPI (int irq, void *dev_id, struct pt_regs *regs); 259extern irqreturn_t handle_IPI (int irq, void *dev_id);
257 260
258static struct irqaction ipi_irqaction = { 261static struct irqaction ipi_irqaction = {
259 .handler = handle_IPI, 262 .handler = handle_IPI,