diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-11-08 14:08:05 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-11-08 14:08:05 -0500 |
commit | 37ee16ae93a3e4ae7dd51beb81d249f5f12a55c2 (patch) | |
tree | a6cf9773ddb5eae9f173c6a9c9d6120faa5688a4 /include/asm-arm | |
parent | 3b6353fae0d7ba772d7eb2651727332c9e9c74ac (diff) |
[ARM SMP] Add core ARM support for local timers
Add infrastructure for supporting per-cpu local timers to update
the profiling information and update system time accounting.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm')
-rw-r--r-- | include/asm-arm/hardirq.h | 1 | ||||
-rw-r--r-- | include/asm-arm/smp.h | 38 |
2 files changed, 39 insertions, 0 deletions
diff --git a/include/asm-arm/hardirq.h b/include/asm-arm/hardirq.h index e5ccb6b8ff83..1cbb173bf5b1 100644 --- a/include/asm-arm/hardirq.h +++ b/include/asm-arm/hardirq.h | |||
@@ -8,6 +8,7 @@ | |||
8 | 8 | ||
9 | typedef struct { | 9 | typedef struct { |
10 | unsigned int __softirq_pending; | 10 | unsigned int __softirq_pending; |
11 | unsigned int local_timer_irqs; | ||
11 | } ____cacheline_aligned irq_cpustat_t; | 12 | } ____cacheline_aligned irq_cpustat_t; |
12 | 13 | ||
13 | #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ | 14 | #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ |
diff --git a/include/asm-arm/smp.h b/include/asm-arm/smp.h index 52e7c8d830b2..5a72e50ca9fc 100644 --- a/include/asm-arm/smp.h +++ b/include/asm-arm/smp.h | |||
@@ -92,4 +92,42 @@ extern void platform_cpu_die(unsigned int cpu); | |||
92 | extern int platform_cpu_kill(unsigned int cpu); | 92 | extern int platform_cpu_kill(unsigned int cpu); |
93 | extern void platform_cpu_enable(unsigned int cpu); | 93 | extern void platform_cpu_enable(unsigned int cpu); |
94 | 94 | ||
95 | #ifdef CONFIG_LOCAL_TIMERS | ||
96 | /* | ||
97 | * Setup a local timer interrupt for a CPU. | ||
98 | */ | ||
99 | extern void local_timer_setup(unsigned int cpu); | ||
100 | |||
101 | /* | ||
102 | * Stop a local timer interrupt. | ||
103 | */ | ||
104 | extern void local_timer_stop(unsigned int cpu); | ||
105 | |||
106 | /* | ||
107 | * Platform provides this to acknowledge a local timer IRQ | ||
108 | */ | ||
109 | extern int local_timer_ack(void); | ||
110 | |||
111 | #else | ||
112 | |||
113 | static inline void local_timer_setup(unsigned int cpu) | ||
114 | { | ||
115 | } | ||
116 | |||
117 | static inline void local_timer_stop(unsigned int cpu) | ||
118 | { | ||
119 | } | ||
120 | |||
121 | #endif | ||
122 | |||
123 | /* | ||
124 | * show local interrupt info | ||
125 | */ | ||
126 | extern void show_local_irqs(struct seq_file *); | ||
127 | |||
128 | /* | ||
129 | * Called from assembly, this is the local timer IRQ handler | ||
130 | */ | ||
131 | asmlinkage void do_local_timer(struct pt_regs *); | ||
132 | |||
95 | #endif /* ifndef __ASM_ARM_SMP_H */ | 133 | #endif /* ifndef __ASM_ARM_SMP_H */ |