]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/parisc/kernel/smp.c
[PARISC] Allow nested interrupts
[linux-2.6-omap-h63xx.git] / arch / parisc / kernel / smp.c
index d6ac1c60a4713bf2f0266f99ca84c416016558e7..faad338f310ed12f8dddc4f4824b40c61edde298 100644 (file)
@@ -18,7 +18,6 @@
 */
 #undef ENTRY_SYS_CPUS  /* syscall support for iCOD-like functionality */
 
-#include <linux/config.h>
 
 #include <linux/types.h>
 #include <linux/spinlock.h>
@@ -263,6 +262,9 @@ ipi_interrupt(int irq, void *dev_id, struct pt_regs *regs)
                                        this_cpu, which);
                                return IRQ_NONE;
                        } /* Switch */
+               /* let in any pending interrupts */
+               local_irq_enable();
+               local_irq_disable();
                } /* while (ops) */
        }
        return IRQ_HANDLED;
@@ -431,8 +433,9 @@ smp_do_timer(struct pt_regs *regs)
 static void __init
 smp_cpu_init(int cpunum)
 {
-       extern int init_per_cpu(int);  /* arch/parisc/kernel/setup.c */
+       extern int init_per_cpu(int);  /* arch/parisc/kernel/processor.c */
        extern void init_IRQ(void);    /* arch/parisc/kernel/irq.c */
+       extern void start_cpu_itimer(void); /* arch/parisc/kernel/time.c */
 
        /* Set modes and Enable floating point coprocessor */
        (void) init_per_cpu(cpunum);
@@ -458,6 +461,7 @@ smp_cpu_init(int cpunum)
        enter_lazy_tlb(&init_mm, current);
 
        init_IRQ();   /* make sure no IRQ's are enabled or pending */
+       start_cpu_itimer();
 }