diff options
Diffstat (limited to 'arch/alpha/kernel/irq.c')
-rw-r--r-- | arch/alpha/kernel/irq.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index 729c475d2269..dba4e70926f5 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c | |||
@@ -129,6 +129,7 @@ unlock: | |||
129 | void | 129 | void |
130 | handle_irq(int irq, struct pt_regs * regs) | 130 | handle_irq(int irq, struct pt_regs * regs) |
131 | { | 131 | { |
132 | struct pt_regs *old_regs; | ||
132 | /* | 133 | /* |
133 | * We ack quickly, we don't want the irq controller | 134 | * We ack quickly, we don't want the irq controller |
134 | * thinking we're snobs just because some other CPU has | 135 | * thinking we're snobs just because some other CPU has |
@@ -149,6 +150,7 @@ handle_irq(int irq, struct pt_regs * regs) | |||
149 | return; | 150 | return; |
150 | } | 151 | } |
151 | 152 | ||
153 | old_regs = set_irq_regs(regs); | ||
152 | irq_enter(); | 154 | irq_enter(); |
153 | /* | 155 | /* |
154 | * __do_IRQ() must be called with IPL_MAX. Note that we do not | 156 | * __do_IRQ() must be called with IPL_MAX. Note that we do not |
@@ -157,6 +159,7 @@ handle_irq(int irq, struct pt_regs * regs) | |||
157 | * at IPL 0. | 159 | * at IPL 0. |
158 | */ | 160 | */ |
159 | local_irq_disable(); | 161 | local_irq_disable(); |
160 | __do_IRQ(irq, regs); | 162 | __do_IRQ(irq); |
161 | irq_exit(); | 163 | irq_exit(); |
164 | set_irq_regs(old_regs); | ||
162 | } | 165 | } |