diff options
| author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-06-18 05:15:46 -0400 |
|---|---|---|
| committer | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-06-18 05:15:46 -0400 |
| commit | 20cf33ea16253b9eed387cba022cb014563db40e (patch) | |
| tree | c553955752fd769e8b71d50ed0ed32324d9fd73f /arch/arm | |
| 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')
| -rw-r--r-- | arch/arm/mach-integrator/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/mach-integrator/core.c | 20 | ||||
| -rw-r--r-- | arch/arm/mach-integrator/leds.c | 4 |
3 files changed, 23 insertions, 2 deletions
diff --git a/arch/arm/mach-integrator/Makefile b/arch/arm/mach-integrator/Makefile index 158daaf9e3b0..ebb255bdce8a 100644 --- a/arch/arm/mach-integrator/Makefile +++ b/arch/arm/mach-integrator/Makefile | |||
| @@ -12,3 +12,4 @@ obj-$(CONFIG_LEDS) += leds.o | |||
| 12 | obj-$(CONFIG_PCI) += pci_v3.o pci.o | 12 | obj-$(CONFIG_PCI) += pci_v3.o pci.o |
| 13 | obj-$(CONFIG_CPU_FREQ_INTEGRATOR) += cpu.o | 13 | obj-$(CONFIG_CPU_FREQ_INTEGRATOR) += cpu.o |
| 14 | obj-$(CONFIG_INTEGRATOR_IMPD1) += impd1.o | 14 | obj-$(CONFIG_INTEGRATOR_IMPD1) += impd1.o |
| 15 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | ||
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 @@ | |||
| 14 | #include <linux/spinlock.h> | 14 | #include <linux/spinlock.h> |
| 15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
| 16 | #include <linux/sched.h> | 16 | #include <linux/sched.h> |
| 17 | #include <linux/smp.h> | ||
| 17 | 18 | ||
| 18 | #include <asm/hardware.h> | 19 | #include <asm/hardware.h> |
| 19 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
| @@ -221,7 +222,24 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
| 221 | */ | 222 | */ |
| 222 | timer1->TimerClear = 1; | 223 | timer1->TimerClear = 1; |
| 223 | 224 | ||
| 224 | timer_tick(regs); | 225 | /* |
| 226 | * the clock tick routines are only processed on the | ||
| 227 | * primary CPU | ||
| 228 | */ | ||
| 229 | if (hard_smp_processor_id() == 0) { | ||
| 230 | nmi_tick(); | ||
| 231 | timer_tick(regs); | ||
| 232 | #ifdef CONFIG_SMP | ||
| 233 | smp_send_timer(); | ||
| 234 | #endif | ||
| 235 | } | ||
| 236 | |||
| 237 | #ifdef CONFIG_SMP | ||
| 238 | /* | ||
| 239 | * this is the ARM equivalent of the APIC timer interrupt | ||
| 240 | */ | ||
| 241 | update_process_times(user_mode(regs)); | ||
| 242 | #endif /* CONFIG_SMP */ | ||
| 225 | 243 | ||
| 226 | write_sequnlock(&xtime_lock); | 244 | write_sequnlock(&xtime_lock); |
| 227 | 245 | ||
diff --git a/arch/arm/mach-integrator/leds.c b/arch/arm/mach-integrator/leds.c index d2c0ab21150c..f1436e683b49 100644 --- a/arch/arm/mach-integrator/leds.c +++ b/arch/arm/mach-integrator/leds.c | |||
| @@ -22,6 +22,8 @@ | |||
| 22 | */ | 22 | */ |
| 23 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
| 24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
| 25 | #include <linux/smp.h> | ||
| 26 | #include <linux/spinlock.h> | ||
| 25 | 27 | ||
| 26 | #include <asm/hardware.h> | 28 | #include <asm/hardware.h> |
| 27 | #include <asm/io.h> | 29 | #include <asm/io.h> |
| @@ -85,4 +87,4 @@ static int __init leds_init(void) | |||
| 85 | return 0; | 87 | return 0; |
| 86 | } | 88 | } |
| 87 | 89 | ||
| 88 | __initcall(leds_init); | 90 | core_initcall(leds_init); |
