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:
committed by
Felix Held
parent
99c84787b8
commit
3671597b94
@@ -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();
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user