cpu/x86/mp_init: Add support for x86_64
Fix compilation on x86_64. Tested on HP Z220: * Still boots on x86_32. Change-Id: Id7190d24172803e40acaf1495ce20f3ea38016b0 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/44675 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
1464b0edea
commit
6c46b6f84c
|
@ -112,7 +112,7 @@ extern char _binary_sipi_vector_start[];
|
||||||
/* The SIPI vector is loaded at the SMM_DEFAULT_BASE. The reason is at the
|
/* The SIPI vector is loaded at the SMM_DEFAULT_BASE. The reason is at the
|
||||||
* memory range is already reserved so the OS cannot use it. That region is
|
* memory range is already reserved so the OS cannot use it. That region is
|
||||||
* free to use for AP bringup before SMM is initialized. */
|
* free to use for AP bringup before SMM is initialized. */
|
||||||
static const uint32_t sipi_vector_location = SMM_DEFAULT_BASE;
|
static const uintptr_t sipi_vector_location = SMM_DEFAULT_BASE;
|
||||||
static const int sipi_vector_location_size = SMM_DEFAULT_SIZE;
|
static const int sipi_vector_location_size = SMM_DEFAULT_SIZE;
|
||||||
|
|
||||||
struct mp_flight_plan {
|
struct mp_flight_plan {
|
||||||
|
@ -338,16 +338,16 @@ static atomic_t *load_sipi_vector(struct mp_params *mp_params)
|
||||||
|
|
||||||
setup_default_sipi_vector_params(sp);
|
setup_default_sipi_vector_params(sp);
|
||||||
/* Setup MSR table. */
|
/* Setup MSR table. */
|
||||||
sp->msr_table_ptr = (uint32_t)&mod_loc[module_size];
|
sp->msr_table_ptr = (uintptr_t)&mod_loc[module_size];
|
||||||
sp->msr_count = num_msrs;
|
sp->msr_count = num_msrs;
|
||||||
/* Provide pointer to microcode patch. */
|
/* Provide pointer to microcode patch. */
|
||||||
sp->microcode_ptr = (uint32_t)mp_params->microcode_pointer;
|
sp->microcode_ptr = (uintptr_t)mp_params->microcode_pointer;
|
||||||
/* Pass on ability to load microcode in parallel. */
|
/* Pass on ability to load microcode in parallel. */
|
||||||
if (mp_params->parallel_microcode_load)
|
if (mp_params->parallel_microcode_load)
|
||||||
sp->microcode_lock = 0;
|
sp->microcode_lock = 0;
|
||||||
else
|
else
|
||||||
sp->microcode_lock = ~0;
|
sp->microcode_lock = ~0;
|
||||||
sp->c_handler = (uint32_t)&ap_init;
|
sp->c_handler = (uintptr_t)&ap_init;
|
||||||
ap_count = &sp->ap_count;
|
ap_count = &sp->ap_count;
|
||||||
atomic_set(ap_count, 0);
|
atomic_set(ap_count, 0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue