aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/irq.c10
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);