summaryrefslogtreecommitdiffstats
path: root/arch/arm/include/asm/smp_plat.h
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2012-12-11 11:01:53 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-12-11 11:01:53 +0100
commit0fa5d3996dbda1ee9653c43d39b7ef159fb57ee7 (patch)
tree70f0adc3b86bb1511be6607c959506f6365fc2a9 /arch/arm/include/asm/smp_plat.h
parentMerge branches 'cache-l2x0', 'fixes', 'hdrs', 'misc', 'mmci', 'vic' and 'warn... (diff)
parentARM: 7587/1: implement optimized percpu variable access (diff)
downloadlinux-0fa5d3996dbda1ee9653c43d39b7ef159fb57ee7.tar.xz
linux-0fa5d3996dbda1ee9653c43d39b7ef159fb57ee7.zip
Merge branch 'devel-stable' into for-linus
Diffstat (limited to 'arch/arm/include/asm/smp_plat.h')
-rw-r--r--arch/arm/include/asm/smp_plat.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/arm/include/asm/smp_plat.h b/arch/arm/include/asm/smp_plat.h
index 558d6c80aca9..aaa61b6f50ff 100644
--- a/arch/arm/include/asm/smp_plat.h
+++ b/arch/arm/include/asm/smp_plat.h
@@ -5,6 +5,9 @@
#ifndef __ASMARM_SMP_PLAT_H
#define __ASMARM_SMP_PLAT_H
+#include <linux/cpumask.h>
+#include <linux/err.h>
+
#include <asm/cputype.h>
/*
@@ -48,5 +51,19 @@ static inline int cache_ops_need_broadcast(void)
*/
extern int __cpu_logical_map[];
#define cpu_logical_map(cpu) __cpu_logical_map[cpu]
+/*
+ * Retrieve logical cpu index corresponding to a given MPIDR[23:0]
+ * - mpidr: MPIDR[23:0] to be used for the look-up
+ *
+ * Returns the cpu logical index or -EINVAL on look-up error
+ */
+static inline int get_logical_index(u32 mpidr)
+{
+ int cpu;
+ for (cpu = 0; cpu < nr_cpu_ids; cpu++)
+ if (cpu_logical_map(cpu) == mpidr)
+ return cpu;
+ return -EINVAL;
+}
#endif