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>
This commit is contained in:
parent
101ef0b528
commit
f0a3d44458
@ -14,7 +14,11 @@
|
|||||||
|
|
||||||
bootblock-y += cache_as_ram_bootblock.S
|
bootblock-y += cache_as_ram_bootblock.S
|
||||||
bootblock-y += bootblock.c
|
bootblock-y += bootblock.c
|
||||||
|
|
||||||
|
romstage-y += ../intel/car/romstage.c
|
||||||
|
|
||||||
ramstage-y += qemu.c
|
ramstage-y += qemu.c
|
||||||
|
|
||||||
subdirs-y += ../x86/mtrr
|
subdirs-y += ../x86/mtrr
|
||||||
subdirs-y += ../x86/lapic
|
subdirs-y += ../x86/lapic
|
||||||
subdirs-y += ../x86/smm
|
subdirs-y += ../x86/smm
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include <cbmem.h>
|
#include <cbmem.h>
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
|
#include <arch/romstage.h>
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
#include "fw_cfg.h"
|
#include "fw_cfg.h"
|
||||||
|
|
||||||
@ -61,3 +62,8 @@ void *cbmem_top(void)
|
|||||||
|
|
||||||
return (void *)top;
|
return (void *)top;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Nothing to do, MTRRs are no-op on QEMU. */
|
||||||
|
void fill_postcar_frame(struct postcar_frame *pcf)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
@ -14,31 +14,10 @@
|
|||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <arch/cpu.h>
|
|
||||||
#include <arch/romstage.h>
|
#include <arch/romstage.h>
|
||||||
#include <stdint.h>
|
|
||||||
#include <cbmem.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);
|
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);
|
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,10 @@
|
|||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <arch/cpu.h>
|
|
||||||
#include <arch/romstage.h>
|
#include <arch/romstage.h>
|
||||||
#include <stdint.h>
|
|
||||||
#include <cbmem.h>
|
#include <cbmem.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <timestamp.h>
|
|
||||||
#include <southbridge/intel/i82801ix/i82801ix.h>
|
#include <southbridge/intel/i82801ix/i82801ix.h>
|
||||||
#include <program_loading.h>
|
|
||||||
#include <device/pci_ops.h>
|
#include <device/pci_ops.h>
|
||||||
|
|
||||||
#define D0F0_PCIEXBAR_LO 0x60
|
#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)");
|
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();
|
i82801ix_early_init();
|
||||||
console_init();
|
|
||||||
|
|
||||||
mainboard_machine_check();
|
mainboard_machine_check();
|
||||||
|
|
||||||
cbmem_recovery(0);
|
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);
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user