[PATCH] alpha pt_regs cleanups: device_interrupt

callers of ->device_interrupt() do set_irq_regs() now; pt_regs argument
removed, remaining uses of regs in instances of ->device_interrupt()
are switched to get_irq_regs() and will be gone in the next patch.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c
index 302aab3..1473aa0 100644
--- a/arch/alpha/kernel/sys_titan.c
+++ b/arch/alpha/kernel/sys_titan.c
@@ -167,18 +167,18 @@
 }
 
 static void
-titan_device_interrupt(unsigned long vector, struct pt_regs * regs)
+titan_device_interrupt(unsigned long vector)
 {
 	printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n");
 }
 
 static void 
-titan_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+titan_srm_device_interrupt(unsigned long vector)
 {
 	int irq;
 
 	irq = (vector - 0x800) >> 4;
-	handle_irq(irq, regs);
+	handle_irq(irq, get_irq_regs());
 }
 
 
@@ -245,6 +245,7 @@
 void
 titan_dispatch_irqs(u64 mask, struct pt_regs *regs)
 {
+	struct pt_regs *old_regs;
 	unsigned long vector;
 
 	/*
@@ -252,6 +253,7 @@
 	 */
 	mask &= titan_cpu_irq_affinity[smp_processor_id()];
 
+	old_regs = set_irq_regs(regs);
 	/*
 	 * Dispatch all requested interrupts 
 	 */
@@ -263,8 +265,9 @@
 		vector = 0x900 + (vector << 4);	/* convert to SRM vector */
 		
 		/* dispatch it */
-		alpha_mv.device_interrupt(vector, regs);
+		alpha_mv.device_interrupt(vector);
 	}
+	set_irq_regs(old_regs);
 }