aboutsummaryrefslogtreecommitdiffstats
path: root/arch/alpha/kernel/sys_titan.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/alpha/kernel/sys_titan.c')
-rw-r--r--arch/alpha/kernel/sys_titan.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c
index 302aab38d95f..1473aa0e6982 100644
--- a/arch/alpha/kernel/sys_titan.c
+++ b/arch/alpha/kernel/sys_titan.c
@@ -167,18 +167,18 @@ titan_set_irq_affinity(unsigned int irq, cpumask_t affinity)
167} 167}
168 168
169static void 169static void
170titan_device_interrupt(unsigned long vector, struct pt_regs * regs) 170titan_device_interrupt(unsigned long vector)
171{ 171{
172 printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n"); 172 printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n");
173} 173}
174 174
175static void 175static void
176titan_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 176titan_srm_device_interrupt(unsigned long vector)
177{ 177{
178 int irq; 178 int irq;
179 179
180 irq = (vector - 0x800) >> 4; 180 irq = (vector - 0x800) >> 4;
181 handle_irq(irq, regs); 181 handle_irq(irq, get_irq_regs());
182} 182}
183 183
184 184
@@ -245,6 +245,7 @@ titan_legacy_init_irq(void)
245void 245void
246titan_dispatch_irqs(u64 mask, struct pt_regs *regs) 246titan_dispatch_irqs(u64 mask, struct pt_regs *regs)
247{ 247{
248 struct pt_regs *old_regs;
248 unsigned long vector; 249 unsigned long vector;
249 250
250 /* 251 /*
@@ -252,6 +253,7 @@ titan_dispatch_irqs(u64 mask, struct pt_regs *regs)
252 */ 253 */
253 mask &= titan_cpu_irq_affinity[smp_processor_id()]; 254 mask &= titan_cpu_irq_affinity[smp_processor_id()];
254 255
256 old_regs = set_irq_regs(regs);
255 /* 257 /*
256 * Dispatch all requested interrupts 258 * Dispatch all requested interrupts
257 */ 259 */
@@ -263,8 +265,9 @@ titan_dispatch_irqs(u64 mask, struct pt_regs *regs)
263 vector = 0x900 + (vector << 4); /* convert to SRM vector */ 265 vector = 0x900 + (vector << 4); /* convert to SRM vector */
264 266
265 /* dispatch it */ 267 /* dispatch it */
266 alpha_mv.device_interrupt(vector, regs); 268 alpha_mv.device_interrupt(vector);
267 } 269 }
270 set_irq_regs(old_regs);
268} 271}
269 272
270 273