diff options
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/irq.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 573d546b62e..4fde82fd325 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c @@ -104,8 +104,10 @@ static struct irq_desc bad_irq_desc = { .lock = SPIN_LOCK_UNLOCKED }; +#ifdef CONFIG_FIND_IRQ_BLOCKERS extern int iblock_limit; unsigned long s3c2410_gettimeoffset(void); +#endif /* * do_IRQ handles all hardware IRQ's. Decoded IRQs should not @@ -115,11 +117,14 @@ unsigned long s3c2410_gettimeoffset(void); asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) { struct pt_regs *old_regs = set_irq_regs(regs); +#ifdef CONFIG_FIND_IRQ_BLOCKERS unsigned long us; - +#endif irq_enter(); +#ifdef CONFIG_FIND_IRQ_BLOCKERS us = s3c2410_gettimeoffset(); +#endif /* * Some hardware gives randomly wrong interrupts. Rather @@ -130,11 +135,12 @@ asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) else generic_handle_irq(irq); +#ifdef CONFIG_FIND_IRQ_BLOCKERS us = s3c2410_gettimeoffset() - us; if (iblock_limit && us > iblock_limit && us < 10000000) printk(KERN_ERR "asm_do_IRQ(%u): %lu us\n", irq, us); - +#endif /* AT91 specific workaround */ irq_finish(irq); |