diff options
Diffstat (limited to 'arch/arm/kernel/irq.c')
-rw-r--r-- | arch/arm/kernel/irq.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index ff187f4308f0..395137a8fad2 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -4,6 +4,10 @@ | |||
4 | * Copyright (C) 1992 Linus Torvalds | 4 | * Copyright (C) 1992 Linus Torvalds |
5 | * Modifications for ARM processor Copyright (C) 1995-2000 Russell King. | 5 | * Modifications for ARM processor Copyright (C) 1995-2000 Russell King. |
6 | * | 6 | * |
7 | * Support for Dynamic Tick Timer Copyright (C) 2004-2005 Nokia Corporation. | ||
8 | * Dynamic Tick Timer written by Tony Lindgren <tony@atomide.com> and | ||
9 | * Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com>. | ||
10 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | 11 | * This program is free software; you can redistribute it and/or modify |
8 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
9 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
@@ -37,6 +41,7 @@ | |||
37 | #include <asm/irq.h> | 41 | #include <asm/irq.h> |
38 | #include <asm/system.h> | 42 | #include <asm/system.h> |
39 | #include <asm/mach/irq.h> | 43 | #include <asm/mach/irq.h> |
44 | #include <asm/mach/time.h> | ||
40 | 45 | ||
41 | /* | 46 | /* |
42 | * Maximum IRQ count. Currently, this is arbitary. However, it should | 47 | * Maximum IRQ count. Currently, this is arbitary. However, it should |
@@ -329,6 +334,15 @@ __do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs) | |||
329 | 334 | ||
330 | spin_unlock(&irq_controller_lock); | 335 | spin_unlock(&irq_controller_lock); |
331 | 336 | ||
337 | #ifdef CONFIG_NO_IDLE_HZ | ||
338 | if (!(action->flags & SA_TIMER) && system_timer->dyn_tick != NULL) { | ||
339 | write_seqlock(&xtime_lock); | ||
340 | if (system_timer->dyn_tick->state & DYN_TICK_ENABLED) | ||
341 | system_timer->dyn_tick->handler(irq, 0, regs); | ||
342 | write_sequnlock(&xtime_lock); | ||
343 | } | ||
344 | #endif | ||
345 | |||
332 | if (!(action->flags & SA_INTERRUPT)) | 346 | if (!(action->flags & SA_INTERRUPT)) |
333 | local_irq_enable(); | 347 | local_irq_enable(); |
334 | 348 | ||