Patrick Georgi (pgeorgi@google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9083
-gerrit
commit a08badede73b17314d0507898d3cc40a8452d503 Author: Aaron Durbin adurbin@chromium.org Date: Wed Sep 17 11:51:41 2014 -0500
arm64: add cpu_is_bsp() concept
It's helpful to know if the current running CPU is the BSP. Therefore, provide that semantic.
BUG=chrome-os-partner:32082 BRANCH=None TEST=Built and booted to kernel.
Change-Id: I18cb8ab5149c3337e22b1f6046b1af266be7e47c Signed-off-by: Patrick Georgi pgeorgi@chromium.org Original-Commit-Id: b390dc70b658c207cd3b64408713ec4cddab3172 Original-Change-Id: I3d5518d1f6d6a78b14f25bb7ef79727605064561 Original-Signed-off-by: Aaron Durbin adurbin@chromium.org Original-Reviewed-on: https://chromium-review.googlesource.com/218653 Original-Reviewed-by: Furquan Shaikh furquan@chromium.org --- src/arch/arm64/c_entry.c | 1 + src/arch/arm64/cpu.c | 1 + src/arch/arm64/include/armv8/arch/cpu.h | 13 +++++++++++++ 3 files changed, 15 insertions(+)
diff --git a/src/arch/arm64/c_entry.c b/src/arch/arm64/c_entry.c index 4e5c151..f4a9848 100644 --- a/src/arch/arm64/c_entry.c +++ b/src/arch/arm64/c_entry.c @@ -56,6 +56,7 @@ static void seed_stack(void)
void arm64_init(void) { + cpu_set_bsp(); seed_stack(); arm64_soc_init(); main(); diff --git a/src/arch/arm64/cpu.c b/src/arch/arm64/cpu.c index c0dc3c3..a263e1b 100644 --- a/src/arch/arm64/cpu.c +++ b/src/arch/arm64/cpu.c @@ -27,6 +27,7 @@ #include "cpu-internal.h"
static struct cpu_info cpu_infos[CONFIG_MAX_CPUS]; +struct cpu_info *bsp_cpu_info;
static inline struct cpu_info *cpu_info_for_cpu(unsigned int id) { diff --git a/src/arch/arm64/include/armv8/arch/cpu.h b/src/arch/arm64/include/armv8/arch/cpu.h index d262385..8d071ad 100644 --- a/src/arch/arm64/include/armv8/arch/cpu.h +++ b/src/arch/arm64/include/armv8/arch/cpu.h @@ -66,6 +66,19 @@ struct cpu_info { /* Obtain cpu_info for current executing CPU. */ struct cpu_info *cpu_info(void);
+extern struct cpu_info *bsp_cpu_info; + +/* Ran only by BSP at initial boot strapping. */ +static inline void cpu_set_bsp(void) +{ + bsp_cpu_info = cpu_info(); +} + +static inline int cpu_is_bsp(void) +{ + return cpu_info() == bsp_cpu_info; +} + /* Control routines for starting CPUs. */ struct cpu_control_ops { /* Return the maximum number of CPUs supported. */