soc/intel: Use common romstage code
This provides stack guards with checking and common entry into postcar. The code in cpu/intel/car/romstage.c is candidate for becoming architectural so function prototype is moved to <arch/romstage.h>. Change-Id: I4c5a9789e7cf3f7f49a4a33e21dac894320a9639 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34893 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
@@ -28,12 +28,11 @@
|
||||
#include <soc/reg_access.h>
|
||||
#include <soc/storage_test.h>
|
||||
|
||||
static struct postcar_frame early_mtrrs;
|
||||
|
||||
asmlinkage void car_stage_c_entry(void)
|
||||
{
|
||||
struct postcar_frame pcf;
|
||||
bool s3wake;
|
||||
uintptr_t top_of_ram;
|
||||
uintptr_t top_of_low_usable_memory;
|
||||
|
||||
post_code(0x20);
|
||||
console_init();
|
||||
@@ -63,28 +62,33 @@ asmlinkage void car_stage_c_entry(void)
|
||||
/* Initialize the PCIe bridges */
|
||||
pcie_init();
|
||||
|
||||
if (postcar_frame_init(&pcf, 0))
|
||||
die("Unable to initialize postcar frame.\n");
|
||||
prepare_and_run_postcar(&early_mtrrs);
|
||||
/* We do not return here. */
|
||||
}
|
||||
|
||||
void fill_postcar_frame(struct postcar_frame *pcf)
|
||||
{
|
||||
uintptr_t top_of_ram;
|
||||
uintptr_t top_of_low_usable_memory;
|
||||
|
||||
/* Locate the top of RAM */
|
||||
top_of_low_usable_memory = (uintptr_t) cbmem_top();
|
||||
top_of_ram = ALIGN(top_of_low_usable_memory, 16 * MiB);
|
||||
|
||||
/* Cache postcar and ramstage */
|
||||
postcar_frame_add_mtrr(&pcf, top_of_ram - (16 * MiB), 16 * MiB,
|
||||
postcar_frame_add_mtrr(pcf, top_of_ram - (16 * MiB), 16 * MiB,
|
||||
MTRR_TYPE_WRBACK);
|
||||
|
||||
/* Cache RMU area */
|
||||
postcar_frame_add_mtrr(&pcf, (uintptr_t) top_of_low_usable_memory,
|
||||
postcar_frame_add_mtrr(pcf, (uintptr_t) top_of_low_usable_memory,
|
||||
0x10000, MTRR_TYPE_WRTHROUGH);
|
||||
|
||||
/* Cache ESRAM */
|
||||
postcar_frame_add_mtrr(&pcf, 0x80000000, 0x80000, MTRR_TYPE_WRBACK);
|
||||
postcar_frame_add_mtrr(pcf, 0x80000000, 0x80000, MTRR_TYPE_WRBACK);
|
||||
|
||||
pcf->skip_common_mtrr = 1;
|
||||
/* Cache SPI flash - Write protect not supported */
|
||||
postcar_frame_add_romcache(&pcf, MTRR_TYPE_WRTHROUGH);
|
||||
|
||||
run_postcar_phase(&pcf);
|
||||
postcar_frame_add_romcache(pcf, MTRR_TYPE_WRTHROUGH);
|
||||
}
|
||||
|
||||
static struct chipset_power_state power_state;
|
||||
|
Reference in New Issue
Block a user