X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=include%2Fasm-mips%2Firq.h;h=b90b11d0b886b34ea45a57c012c57d77fe54daf3;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=d9667a8fbbfb8f3cd3312db283af6fae1701990c;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/include/asm-mips/irq.h b/include/asm-mips/irq.h index d9667a8fb..b90b11d0b 100644 --- a/include/asm-mips/irq.h +++ b/include/asm-mips/irq.h @@ -22,14 +22,32 @@ static inline int irq_canonicalize(int irq) #define irq_canonicalize(irq) (irq) /* Sane hardware, sane code ... */ #endif -extern void disable_irq(unsigned int); -extern void disable_irq_nosync(unsigned int); -extern void enable_irq(unsigned int); - struct pt_regs; -extern asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs); -extern void init_generic_irq(void); +#ifdef CONFIG_PREEMPT + +extern asmlinkage unsigned int do_IRQ(unsigned int irq, struct pt_regs *regs); + +#else + +/* + * do_IRQ handles all normal device IRQ's (the special + * SMP cross-CPU interrupts have their own specific + * handlers). + * + * Ideally there should be away to get this into kernel/irq/handle.c to + * avoid the overhead of a call for just a tiny function ... + */ +#define do_IRQ(irq, regs) \ +do { \ + irq_enter(); \ + __do_IRQ((irq), (regs)); \ + irq_exit(); \ +} while (0) + +#endif + +extern void arch_init_irq(void); struct irqaction; int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);