diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-06-18 10:15:46 +0100 |
---|---|---|
committer | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-06-18 10:15:46 +0100 |
commit | 20cf33ea16253b9eed387cba022cb014563db40e (patch) | |
tree | c553955752fd769e8b71d50ed0ed32324d9fd73f /arch/arm/mach-integrator/core.c | |
parent | e65f38ed0bb7af367ff919c573cf29643fc5f9e8 (diff) |
[PATCH] ARM SMP: Add basic support Integrator/CP platform
Add basic SMP support for the Integrator/CP platform.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-integrator/core.c')
-rw-r--r-- | arch/arm/mach-integrator/core.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c index bd17b5154311..d302f0405fd2 100644 --- a/arch/arm/mach-integrator/core.c +++ b/arch/arm/mach-integrator/core.c @@ -14,6 +14,7 @@ #include <linux/spinlock.h> #include <linux/interrupt.h> #include <linux/sched.h> +#include <linux/smp.h> #include <asm/hardware.h> #include <asm/irq.h> @@ -221,7 +222,24 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) */ timer1->TimerClear = 1; - timer_tick(regs); + /* + * the clock tick routines are only processed on the + * primary CPU + */ + if (hard_smp_processor_id() == 0) { + nmi_tick(); + timer_tick(regs); +#ifdef CONFIG_SMP + smp_send_timer(); +#endif + } + +#ifdef CONFIG_SMP + /* + * this is the ARM equivalent of the APIC timer interrupt + */ + update_process_times(user_mode(regs)); +#endif /* CONFIG_SMP */ write_sequnlock(&xtime_lock); |