Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20cf33ea authored by Russell King's avatar Russell King
Browse files

[PATCH] ARM SMP: Add basic support Integrator/CP platform



Add basic SMP support for the Integrator/CP platform.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent e65f38ed
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -12,3 +12,4 @@ obj-$(CONFIG_LEDS) += leds.o
obj-$(CONFIG_PCI)			+= pci_v3.o pci.o
obj-$(CONFIG_PCI)			+= pci_v3.o pci.o
obj-$(CONFIG_CPU_FREQ_INTEGRATOR)	+= cpu.o
obj-$(CONFIG_CPU_FREQ_INTEGRATOR)	+= cpu.o
obj-$(CONFIG_INTEGRATOR_IMPD1)		+= impd1.o
obj-$(CONFIG_INTEGRATOR_IMPD1)		+= impd1.o
obj-$(CONFIG_SMP)			+= platsmp.o headsmp.o
+19 −1
Original line number Original line Diff line number Diff line
@@ -14,6 +14,7 @@
#include <linux/spinlock.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/sched.h>
#include <linux/smp.h>


#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/irq.h>
@@ -221,7 +222,24 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
	 */
	 */
	timer1->TimerClear = 1;
	timer1->TimerClear = 1;


	/*
	 * the clock tick routines are only processed on the
	 * primary CPU
	 */
	if (hard_smp_processor_id() == 0) {
		nmi_tick();
		timer_tick(regs);
		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);
	write_sequnlock(&xtime_lock);


+3 −1
Original line number Original line Diff line number Diff line
@@ -22,6 +22,8 @@
 */
 */
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/smp.h>
#include <linux/spinlock.h>


#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/io.h>
@@ -85,4 +87,4 @@ static int __init leds_init(void)
	return 0;
	return 0;
}
}


__initcall(leds_init);
core_initcall(leds_init);