diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2006-07-02 20:18:48 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-02 20:29:21 -0400 |
commit | d061daa0e3abdddc28e21a37c8ac4536dedbf239 (patch) | |
tree | 6c08e7b8ed988053f421e38578fa11db538b0747 /include | |
parent | f82bc1762e0e74b7e0040a4d83be06d32c37fc2e (diff) |
[PATCH] genirq: ARM dyntick cleanup
Linus: "The hacks in kernel/irq/handle.c are really horrid. REALLY
horrid."
They are indeed. Move the dyntick quirks to ARM where they belong.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-arm/hw_irq.h | 11 | ||||
-rw-r--r-- | include/asm-arm/mach/time.h | 1 | ||||
-rw-r--r-- | include/linux/irq.h | 4 |
3 files changed, 16 insertions, 0 deletions
diff --git a/include/asm-arm/hw_irq.h b/include/asm-arm/hw_irq.h index f1a08a500604..275b574fd1a5 100644 --- a/include/asm-arm/hw_irq.h +++ b/include/asm-arm/hw_irq.h | |||
@@ -6,4 +6,15 @@ | |||
6 | 6 | ||
7 | #include <asm/mach/irq.h> | 7 | #include <asm/mach/irq.h> |
8 | 8 | ||
9 | #if defined(CONFIG_NO_IDLE_HZ) | ||
10 | # include <asm/dyntick.h> | ||
11 | # define handle_dynamic_tick(action) \ | ||
12 | if (!(action->flags & SA_TIMER) && system_timer->dyn_tick) { \ | ||
13 | write_seqlock(&xtime_lock); \ | ||
14 | if (system_timer->dyn_tick->state & DYN_TICK_ENABLED) \ | ||
15 | system_timer->dyn_tick->handler(irq, 0, regs); \ | ||
16 | write_sequnlock(&xtime_lock); \ | ||
17 | } | ||
18 | #endif | ||
19 | |||
9 | #endif | 20 | #endif |
diff --git a/include/asm-arm/mach/time.h b/include/asm-arm/mach/time.h index 9f28073559e8..dee0bc336fe8 100644 --- a/include/asm-arm/mach/time.h +++ b/include/asm-arm/mach/time.h | |||
@@ -69,6 +69,7 @@ extern void timer_tick(struct pt_regs *); | |||
69 | /* | 69 | /* |
70 | * Kernel time keeping support. | 70 | * Kernel time keeping support. |
71 | */ | 71 | */ |
72 | struct timespec; | ||
72 | extern int (*set_rtc)(void); | 73 | extern int (*set_rtc)(void); |
73 | extern void save_time_delta(struct timespec *delta, struct timespec *rtc); | 74 | extern void save_time_delta(struct timespec *delta, struct timespec *rtc); |
74 | extern void restore_time_delta(struct timespec *delta, struct timespec *rtc); | 75 | extern void restore_time_delta(struct timespec *delta, struct timespec *rtc); |
diff --git a/include/linux/irq.h b/include/linux/irq.h index 95d7aa7954d2..b48eae32dc61 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -182,6 +182,10 @@ extern int setup_irq(unsigned int irq, struct irqaction *new); | |||
182 | 182 | ||
183 | #ifdef CONFIG_GENERIC_HARDIRQS | 183 | #ifdef CONFIG_GENERIC_HARDIRQS |
184 | 184 | ||
185 | #ifndef handle_dynamic_tick | ||
186 | # define handle_dynamic_tick(a) do { } while (0) | ||
187 | #endif | ||
188 | |||
185 | #ifdef CONFIG_SMP | 189 | #ifdef CONFIG_SMP |
186 | static inline void set_native_irq_info(int irq, cpumask_t mask) | 190 | static inline void set_native_irq_info(int irq, cpumask_t mask) |
187 | { | 191 | { |