vserver 1.9.5.x5
[linux-2.6.git] / include / asm-arm / mach / irq.h
index bea9af3..a43a353 100644 (file)
@@ -47,6 +47,13 @@ struct irqchip {
         * Set wakeup-enable on the selected IRQ
         */
        int (*wake)(unsigned int, unsigned int);
+
+#ifdef CONFIG_SMP
+       /*
+        * Route an interrupt to a CPU
+        */
+       void (*set_cpu)(struct irqdesc *desc, unsigned int irq, unsigned int cpu);
+#endif
 };
 
 struct irqdesc {
@@ -67,6 +74,13 @@ struct irqdesc {
        unsigned int    noautoenable : 1;       /* don't automatically enable IRQ */
        unsigned int    unused   :25;
 
+       struct proc_dir_entry *procdir;
+
+#ifdef CONFIG_SMP
+       cpumask_t       affinity;
+       unsigned int    cpu;
+#endif
+
        /*
         * IRQ lock detection
         */
@@ -97,23 +111,6 @@ void __set_irq_handler(unsigned int irq, irq_handler_t, int);
 void set_irq_chip(unsigned int irq, struct irqchip *);
 void set_irq_flags(unsigned int irq, unsigned int flags);
 
-#ifdef not_yet
-/*
- * This is to be used by the top-level machine IRQ decoder only.
- */
-static inline void call_irq(struct pt_regs *regs, unsigned int irq)
-{
-       struct irqdesc *desc = irq_desc + irq;
-
-       spin_lock(&irq_controller_lock);
-       desc->handle(irq, desc, regs);
-       spin_unlock(&irq_controller_lock);
-
-       if (softirq_pending(smp_processor_id()))
-               do_softirq();
-}
-#endif
-
 #define IRQF_VALID     (1 << 0)
 #define IRQF_PROBE     (1 << 1)
 #define IRQF_NOAUTOEN  (1 << 2)