summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-vexpress/include/mach/smp.h
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2010-02-11 21:56:07 +0000
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-05-02 09:35:39 +0100
commit59ac59f6f1432aa9417d2592bdfd17c99804dd66 (patch)
treec4251d8827165d9eb926d77470a59fb196f998f8 /arch/arm/mach-vexpress/include/mach/smp.h
parentfef88f10767cfd9f9b4eebb5d5490214c5e13ad5 (diff)
ARM: Add Versatile Express SMP support
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-vexpress/include/mach/smp.h')
-rw-r--r--arch/arm/mach-vexpress/include/mach/smp.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/mach-vexpress/include/mach/smp.h b/arch/arm/mach-vexpress/include/mach/smp.h
new file mode 100644
index 00000000000..72a9621ed08
--- /dev/null
+++ b/arch/arm/mach-vexpress/include/mach/smp.h
@@ -0,0 +1,21 @@
+#ifndef __MACH_SMP_H
+#define __MACH_SMP_H
+
+#include <asm/hardware/gic.h>
+
+#define hard_smp_processor_id() \
+ ({ \
+ unsigned int cpunum; \
+ __asm__("mrc p15, 0, %0, c0, c0, 5" \
+ : "=r" (cpunum)); \
+ cpunum &= 0x0F; \
+ })
+
+/*
+ * We use IRQ1 as the IPI
+ */
+static inline void smp_cross_call(const struct cpumask *mask)
+{
+ gic_raise_softirq(mask, 1);
+}
+#endif