aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorAndy Green <andy@openmoko.com>2009-02-11 08:41:11 +0000
committerAndy Green <agreen@octopus.localdomain>2009-02-11 08:41:11 +0000
commit0f4dbc6787bd88f1f3266f3d586353a23817e24d (patch)
treef0a6d802e065e47fcaa00f274903f55432fbcc20 /arch/arm/kernel
parent8ae43c9cb47a1bc7e2912e74a3abf263d6efc62f (diff)
fix-irqblocker-improvements-only-if-config-enabled.patch
Sascha's last changes didn't take care about case where blocker stuff is disabled. Signed-off-by: Andy Green <andy@openmoko.com>
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);