diff options
author | Raul E Rangel <rrangel@chromium.org> | 2021-10-08 13:10:38 -0600 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2021-10-21 17:37:10 +0000 |
commit | 3671597b9428e6be2a72197c19b449c463a2f962 (patch) | |
tree | 8e015db273f071b5157922696f2275e98b873ea1 | |
parent | 99c84787b87e0e30e57b152b41ca5998072feb90 (diff) |
cpu/x86: Remove cpu parameter to ap_init
We now pre-populate cpu_info before jumping to the C handler. We no
longer need this parameter.
I moved the stack alignment closer to the actual invocation of the C
handler so it's easier to reason about.
BUG=b:194391185, b:179699789
TEST=Boot guybrush to OS and verify all CPUs still function
Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Change-Id: I8997683b6613b7031784cabf7039a400f0efdea1
Reviewed-on: https://review.coreboot.org/c/coreboot/+/58147
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
-rw-r--r-- | src/cpu/x86/mp_init.c | 2 | ||||
-rw-r--r-- | src/cpu/x86/sipi_vector.S | 13 |
2 files changed, 3 insertions, 12 deletions
diff --git a/src/cpu/x86/mp_init.c b/src/cpu/x86/mp_init.c index 5d0cb194e9..89030f4575 100644 --- a/src/cpu/x86/mp_init.c +++ b/src/cpu/x86/mp_init.c @@ -180,7 +180,7 @@ static void park_this_cpu(void *unused) /* By the time APs call ap_init() caching has been setup, and microcode has * been loaded. */ -static void asmlinkage ap_init(unsigned int cpu) +static void asmlinkage ap_init(void) { struct cpu_info *info = cpu_info(); diff --git a/src/cpu/x86/sipi_vector.S b/src/cpu/x86/sipi_vector.S index 55256de920..b8cac96341 100644 --- a/src/cpu/x86/sipi_vector.S +++ b/src/cpu/x86/sipi_vector.S @@ -118,11 +118,6 @@ _start: add per_cpu_segment_selector, %eax mov %eax, %gs - andl $0xfffffff0, %esp /* ensure stack alignment */ - - /* Save CPU number. */ - mov %ecx, %esi - /* * The following code only needs to run on Intel platforms and thus the caller * doesn't provide a microcode_ptr if not on Intel. @@ -235,19 +230,15 @@ load_msr: mov %eax, %cr4 #endif + andl $0xfffffff0, %esp /* ensure stack alignment */ + #if ENV_X86_64 /* entry64.inc preserves ebx. */ #include <cpu/x86/64bit/entry64.inc> - mov %rsi, %rdi /* cpu_num */ - movabs c_handler, %eax call *%rax #else - /* c_handler(cpu_num), preserve proper stack alignment */ - sub $12, %esp - push %esi /* cpu_num */ - mov c_handler, %eax call *%eax #endif |