X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=include%2Fasm-arm%2Fmach%2Firq.h;h=a43a353f6c7bd701c7e6570692ffb575e89e833f;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=bea9af3922cb087cd92a3715e87a10ee928c4f50;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/include/asm-arm/mach/irq.h b/include/asm-arm/mach/irq.h index bea9af392..a43a353f6 100644 --- a/include/asm-arm/mach/irq.h +++ b/include/asm-arm/mach/irq.h @@ -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)