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>
This commit is contained in:
Raul E Rangel
2021-10-08 13:10:38 -06:00
committed by Felix Held
parent 99c84787b8
commit 3671597b94
2 changed files with 3 additions and 12 deletions

View File

@@ -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 /* By the time APs call ap_init() caching has been setup, and microcode has
* been loaded. */ * been loaded. */
static void asmlinkage ap_init(unsigned int cpu) static void asmlinkage ap_init(void)
{ {
struct cpu_info *info = cpu_info(); struct cpu_info *info = cpu_info();

View File

@@ -118,11 +118,6 @@ _start:
add per_cpu_segment_selector, %eax add per_cpu_segment_selector, %eax
mov %eax, %gs 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 * The following code only needs to run on Intel platforms and thus the caller
* doesn't provide a microcode_ptr if not on Intel. * doesn't provide a microcode_ptr if not on Intel.
@@ -235,19 +230,15 @@ load_msr:
mov %eax, %cr4 mov %eax, %cr4
#endif #endif
andl $0xfffffff0, %esp /* ensure stack alignment */
#if ENV_X86_64 #if ENV_X86_64
/* entry64.inc preserves ebx. */ /* entry64.inc preserves ebx. */
#include <cpu/x86/64bit/entry64.inc> #include <cpu/x86/64bit/entry64.inc>
mov %rsi, %rdi /* cpu_num */
movabs c_handler, %eax movabs c_handler, %eax
call *%rax call *%rax
#else #else
/* c_handler(cpu_num), preserve proper stack alignment */
sub $12, %esp
push %esi /* cpu_num */
mov c_handler, %eax mov c_handler, %eax
call *%eax call *%eax
#endif #endif