#ifdef CONFIG_SMP
 static void
-voyager_dump(int dummy1, struct pt_regs *dummy2, struct tty_struct *dummy3)
+voyager_dump(int dummy1, struct tty_struct *dummy3)
 {
        /* get here via a sysrq */
        voyager_smp_dump();
  * off the timer tick to the SMP code, since the VIC doesn't have an
  * internal timer (The QIC does, but that's another story). */
 void
-voyager_timer_interrupt(struct pt_regs *regs)
+voyager_timer_interrupt(void)
 {
        if((jiffies & 0x3ff) == 0) {
 
                }
        }
 #ifdef CONFIG_SMP
-       smp_vic_timer_interrupt(regs);
+       smp_vic_timer_interrupt();
 #endif
 }
 
 
 fastcall void
 smp_qic_timer_interrupt(struct pt_regs *regs)
 {
-       ack_QIC_CPI(QIC_TIMER_CPI);
        struct pt_regs *old_regs = set_irq_regs(regs);
-       wrapper_smp_local_timer_interrupt(void);
+       ack_QIC_CPI(QIC_TIMER_CPI);
+       wrapper_smp_local_timer_interrupt();
        set_irq_regs(old_regs);
 }
 
 /* this function is triggered in time.c when a clock tick fires
  * we need to re-broadcast the tick to all CPUs */
 void
-smp_vic_timer_interrupt(struct pt_regs *regs)
+smp_vic_timer_interrupt(void)
 {
-       struct pt_regs *old_regs = set_irq_regs(regs);
        send_CPI_allbutself(VIC_TIMER_CPI);
        smp_local_timer_interrupt();
-       set_irq_regs(old_regs);
 }
 
 /* local (per CPU) timer interrupt.  It does both profiling and
                                                per_cpu(prof_counter, cpu);
                }
 
-               update_process_times(user_mode_vm(irq_regs));
+               update_process_times(user_mode_vm(get_irq_regs()));
        }
 
        if( ((1<<cpu) & voyager_extended_vic_processors) == 0)