diff options
| -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); |
