vserver 2.0 rc7
[linux-2.6.git] / arch / sparc64 / kernel / irq.c
index 52f7bf9..4dcb8af 100644 (file)
@@ -756,7 +756,7 @@ void handler_irq(int irq, struct pt_regs *regs)
                clear_softint(clr_mask);
        }
 #else
-       int should_forward = 1;
+       int should_forward = 0;
 
        clear_softint(1 << irq);
 #endif
@@ -1007,10 +1007,10 @@ static int retarget_one_irq(struct irqaction *p, int goal_cpu)
        }
        upa_writel(tid | IMAP_VALID, imap);
 
-       while (!cpu_online(goal_cpu)) {
+       do {
                if (++goal_cpu >= NR_CPUS)
                        goal_cpu = 0;
-       }
+       } while (!cpu_online(goal_cpu));
 
        return goal_cpu;
 }
@@ -1112,7 +1112,7 @@ void enable_prom_timer(void)
 void init_irqwork_curcpu(void)
 {
        register struct irq_work_struct *workp asm("o2");
-       unsigned long tmp;
+       register unsigned long tmp asm("o3");
        int cpu = hard_smp_processor_id();
 
        memset(__irq_work + cpu, 0, sizeof(*workp));