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:
@@ -18,6 +18,8 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
void mainboard_romstage_entry(void);
|
||||
|
||||
/*
|
||||
* Support setting up a stack frame consisting of MTRR information
|
||||
* for use in bootstrapping the caching attributes after cache-as-ram
|
||||
@@ -61,6 +63,20 @@ void postcar_frame_common_mtrrs(struct postcar_frame *pcf);
|
||||
*/
|
||||
void *postcar_commit_mtrrs(struct postcar_frame *pcf);
|
||||
|
||||
/*
|
||||
* fill_postcar_frame() is called after raminit completes and right before
|
||||
* calling run_postcar_phase(). Implementation should call postcar_frame_add_mtrr()
|
||||
* to tag memory ranges as cacheable to speed up execution of postcar and
|
||||
* early ramstage.
|
||||
*/
|
||||
void fill_postcar_frame(struct postcar_frame *pcf);
|
||||
|
||||
/*
|
||||
* prepare_and_run_postcar() determines the stack to use after
|
||||
* cache-as-ram is torn down as well as the MTRR settings to use.
|
||||
*/
|
||||
void prepare_and_run_postcar(struct postcar_frame *pcf);
|
||||
|
||||
/*
|
||||
* Load and run a program that takes control of execution that
|
||||
* tears down CAR and loads ramstage. The postcar_frame object
|
||||
|
@@ -132,6 +132,21 @@ void postcar_frame_common_mtrrs(struct postcar_frame *pcf)
|
||||
postcar_frame_add_romcache(pcf, MTRR_TYPE_WRPROT);
|
||||
}
|
||||
|
||||
/* prepare_and_run_postcar() determines the stack to use after
|
||||
* cache-as-ram is torn down as well as the MTRR settings to use. */
|
||||
void prepare_and_run_postcar(struct postcar_frame *pcf)
|
||||
{
|
||||
if (postcar_frame_init(pcf, 0))
|
||||
die("Unable to initialize postcar frame.\n");
|
||||
|
||||
fill_postcar_frame(pcf);
|
||||
|
||||
postcar_frame_common_mtrrs(pcf);
|
||||
|
||||
run_postcar_phase(pcf);
|
||||
/* We do not return here. */
|
||||
}
|
||||
|
||||
void *postcar_commit_mtrrs(struct postcar_frame *pcf)
|
||||
{
|
||||
/*
|
||||
|
Reference in New Issue
Block a user