summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2019-08-18 08:02:23 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2019-08-26 21:12:29 +0000
commitf0a3d444580a8dd80c6f8260be2fbd1448118faf (patch)
tree28a3d6912ef4da41732a066fa6a3bdb58e018c91
parent101ef0b528461a3fb662db150b16607430a2bd94 (diff)
emulation/qemu-x86: Use common romstage code
This provides stack guards with checking and common entry into postcar. Change-Id: If0729721f0165187946107eb98e8bc754f28e517 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34973 Reviewed-by: Patrick Rudolph <siro@das-labor.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/cpu/qemu-x86/Makefile.inc4
-rw-r--r--src/mainboard/emulation/qemu-i440fx/memory.c6
-rw-r--r--src/mainboard/emulation/qemu-i440fx/romstage.c23
-rw-r--r--src/mainboard/emulation/qemu-q35/romstage.c21
4 files changed, 12 insertions, 42 deletions
diff --git a/src/cpu/qemu-x86/Makefile.inc b/src/cpu/qemu-x86/Makefile.inc
index 8ddaa81227..6278f1b231 100644
--- a/src/cpu/qemu-x86/Makefile.inc
+++ b/src/cpu/qemu-x86/Makefile.inc
@@ -14,7 +14,11 @@
bootblock-y += cache_as_ram_bootblock.S
bootblock-y += bootblock.c
+
+romstage-y += ../intel/car/romstage.c
+
ramstage-y += qemu.c
+
subdirs-y += ../x86/mtrr
subdirs-y += ../x86/lapic
subdirs-y += ../x86/smm
diff --git a/src/mainboard/emulation/qemu-i440fx/memory.c b/src/mainboard/emulation/qemu-i440fx/memory.c
index aa1ceba410..8209379bef 100644
--- a/src/mainboard/emulation/qemu-i440fx/memory.c
+++ b/src/mainboard/emulation/qemu-i440fx/memory.c
@@ -15,6 +15,7 @@
#include <cbmem.h>
#include <arch/io.h>
+#include <arch/romstage.h>
#include "memory.h"
#include "fw_cfg.h"
@@ -61,3 +62,8 @@ void *cbmem_top(void)
return (void *)top;
}
+
+/* Nothing to do, MTRRs are no-op on QEMU. */
+void fill_postcar_frame(struct postcar_frame *pcf)
+{
+}
diff --git a/src/mainboard/emulation/qemu-i440fx/romstage.c b/src/mainboard/emulation/qemu-i440fx/romstage.c
index 32eab3de3a..8e5691fc71 100644
--- a/src/mainboard/emulation/qemu-i440fx/romstage.c
+++ b/src/mainboard/emulation/qemu-i440fx/romstage.c
@@ -14,31 +14,10 @@
* GNU General Public License for more details.
*/
-#include <arch/cpu.h>
#include <arch/romstage.h>
-#include <stdint.h>
#include <cbmem.h>
-#include <console/console.h>
-#include <timestamp.h>
-#include <program_loading.h>
-asmlinkage void car_stage_entry(void)
+void mainboard_romstage_entry(void)
{
- struct postcar_frame pcf;
-
- console_init();
-
cbmem_recovery(0);
-
- timestamp_add_now(TS_START_ROMSTAGE);
-
- if (postcar_frame_init(&pcf, 0))
- die("Unable to initialize postcar frame.\n");
-
- /**
- * Run postcar to tear down CAR and load relocatable ramstage.
- * There's no CAR on qemu, but for educational purposes and
- * testing the postcar stage is used on qemu, too.
- */
- run_postcar_phase(&pcf);
}
diff --git a/src/mainboard/emulation/qemu-q35/romstage.c b/src/mainboard/emulation/qemu-q35/romstage.c
index 6cd9ee4123..b7fdac2552 100644
--- a/src/mainboard/emulation/qemu-q35/romstage.c
+++ b/src/mainboard/emulation/qemu-q35/romstage.c
@@ -14,14 +14,10 @@
* GNU General Public License for more details.
*/
-#include <arch/cpu.h>
#include <arch/romstage.h>
-#include <stdint.h>
#include <cbmem.h>
#include <console/console.h>
-#include <timestamp.h>
#include <southbridge/intel/i82801ix/i82801ix.h>
-#include <program_loading.h>
#include <device/pci_ops.h>
#define D0F0_PCIEXBAR_LO 0x60
@@ -35,26 +31,11 @@ static void mainboard_machine_check(void)
die("You must run qemu for machine Q35 (-M q35)");
}
-asmlinkage void car_stage_entry(void)
+void mainboard_romstage_entry(void)
{
- struct postcar_frame pcf;
i82801ix_early_init();
- console_init();
mainboard_machine_check();
cbmem_recovery(0);
-
- timestamp_add_now(TS_START_ROMSTAGE);
-
- if (postcar_frame_init(&pcf, 0))
- die("Unable to initialize postcar frame.\n");
-
- /**
- * Run postcar to tear down CAR and load relocatable ramstage.
- * There's no CAR on qemu, but for educational purposes and
- * testing the postcar stage is used on qemu, too.
- */
-
- run_postcar_phase(&pcf);
}