diff --git a/src/mainboard/emulation/qemu-riscv/memlayout.ld b/src/mainboard/emulation/qemu-riscv/memlayout.ld index 7f8ec3dd6a..2166d23f31 100644 --- a/src/mainboard/emulation/qemu-riscv/memlayout.ld +++ b/src/mainboard/emulation/qemu-riscv/memlayout.ld @@ -17,16 +17,23 @@ #include #include -//Stages start after CBFS in DRAM +// Stages start after CBFS in DRAM #define STAGES_START (QEMU_VIRT_DRAM + CONFIG_ROM_SIZE) SECTIONS { - DRAM_START(QEMU_VIRT_DRAM) + // the virt target doesn't emulate flash and just puts the CBFS into DRAM. + // fake SRAM where CBFS resides. It's only done for better integration. + SRAM_START(QEMU_VIRT_DRAM) BOOTBLOCK(QEMU_VIRT_DRAM, 64K) // CBFS goes here - STACK(STAGES_START, 4K) - ROMSTAGE(STAGES_START + 64K, 128K) - PRERAM_CBMEM_CONSOLE(STAGES_START + 192K, 8K) + SRAM_END(STAGES_START) + DRAM_START(STAGES_START) + +#if ENV_ROMSTAGE + ROMSTAGE(STAGES_START, 128K) +#endif + PRERAM_CBMEM_CONSOLE(STAGES_START + 128K, 8K) RAMSTAGE(STAGES_START + 200K, 16M) + STACK(STAGES_START + 200K + 16M, 4K) } diff --git a/src/mainboard/emulation/qemu-riscv/rom_media.c b/src/mainboard/emulation/qemu-riscv/rom_media.c index bac19846c5..79e5ca8f54 100644 --- a/src/mainboard/emulation/qemu-riscv/rom_media.c +++ b/src/mainboard/emulation/qemu-riscv/rom_media.c @@ -19,7 +19,7 @@ /* This assumes that the CBFS resides at start of dram, which is true for the * default configuration. */ static const struct mem_region_device boot_dev = - MEM_REGION_DEV_RO_INIT(_dram, CONFIG_ROM_SIZE); + MEM_REGION_DEV_RO_INIT(_sram, CONFIG_ROM_SIZE); const struct region_device *boot_device_ro(void) {