diff options
Diffstat (limited to 'arch/alpha/kernel/irq_alpha.c')
-rw-r--r-- | arch/alpha/kernel/irq_alpha.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c index ddf5cf8dcb0b..d14cc423aa48 100644 --- a/arch/alpha/kernel/irq_alpha.c +++ b/arch/alpha/kernel/irq_alpha.c | |||
@@ -39,6 +39,7 @@ asmlinkage void | |||
39 | do_entInt(unsigned long type, unsigned long vector, | 39 | do_entInt(unsigned long type, unsigned long vector, |
40 | unsigned long la_ptr, struct pt_regs *regs) | 40 | unsigned long la_ptr, struct pt_regs *regs) |
41 | { | 41 | { |
42 | struct pt_regs *old_regs; | ||
42 | switch (type) { | 43 | switch (type) { |
43 | case 0: | 44 | case 0: |
44 | #ifdef CONFIG_SMP | 45 | #ifdef CONFIG_SMP |
@@ -72,7 +73,9 @@ do_entInt(unsigned long type, unsigned long vector, | |||
72 | alpha_mv.machine_check(vector, la_ptr, regs); | 73 | alpha_mv.machine_check(vector, la_ptr, regs); |
73 | return; | 74 | return; |
74 | case 3: | 75 | case 3: |
75 | alpha_mv.device_interrupt(vector, regs); | 76 | old_regs = set_irq_regs(regs); |
77 | alpha_mv.device_interrupt(vector); | ||
78 | set_irq_regs(old_regs); | ||
76 | return; | 79 | return; |
77 | case 4: | 80 | case 4: |
78 | perf_irq(la_ptr, regs); | 81 | perf_irq(la_ptr, regs); |