aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/intel/car/romstage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/intel/car/romstage.c')
-rw-r--r--src/cpu/intel/car/romstage.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/cpu/intel/car/romstage.c b/src/cpu/intel/car/romstage.c
index 89052d6be6..f6b62192f1 100644
--- a/src/cpu/intel/car/romstage.c
+++ b/src/cpu/intel/car/romstage.c
@@ -22,6 +22,21 @@
#define DCACHE_RAM_ROMSTAGE_STACK_SIZE 0x2000
+static struct postcar_frame early_mtrrs;
+
+/* prepare_and_run_postcar() determines the stack to use after
+ * cache-as-ram is torn down as well as the MTRR settings to use. */
+static 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);
+
+ run_postcar_phase(pcf);
+ /* We do not return here. */
+}
+
static void romstage_main(unsigned long bist)
{
int i;
@@ -52,7 +67,8 @@ static void romstage_main(unsigned long bist)
printk(BIOS_DEBUG, "Smashed stack detected in romstage!\n");
}
- platform_enter_postcar();
+ prepare_and_run_postcar(&early_mtrrs);
+ /* We do not return here. */
}
#if !CONFIG(C_ENVIRONMENT_BOOTBLOCK)