diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2019-08-18 08:02:23 +0300 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2019-08-26 21:12:29 +0000 |
commit | f0a3d444580a8dd80c6f8260be2fbd1448118faf (patch) | |
tree | 28a3d6912ef4da41732a066fa6a3bdb58e018c91 | |
parent | 101ef0b528461a3fb662db150b16607430a2bd94 (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.inc | 4 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-i440fx/memory.c | 6 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-i440fx/romstage.c | 23 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-q35/romstage.c | 21 |
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); } |