mb/emulation/qemu-i440fx: use e820 in romstage
Use memory map from fw_cfg e820 map to find cbmem_top in romstage to avoid conflicts with CMOS option table. Keep qemu_gwt_memory_size() as fallback. Change-Id: I6465085020125fc790257f09eb157030c6ceabcb Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.com> Reviewed-on: https://review.coreboot.org/c/30850 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Rudolph <siro@das-labor.org>
This commit is contained in:
parent
0065b6974f
commit
8d010db58e
|
@ -1,4 +1,5 @@
|
|||
ramstage-y += northbridge.c
|
||||
ramstage-y += fw_cfg.c
|
||||
romstage-y += fw_cfg.c
|
||||
romstage-y += memory.c
|
||||
ramstage-y += memory.c
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <cbmem.h>
|
||||
#include <arch/io.h>
|
||||
#include "memory.h"
|
||||
#include "fw_cfg.h"
|
||||
|
||||
#define CMOS_ADDR_PORT 0x70
|
||||
#define CMOS_DATA_PORT 0x71
|
||||
|
@ -52,5 +53,11 @@ unsigned long qemu_get_memory_size(void)
|
|||
|
||||
void *cbmem_top(void)
|
||||
{
|
||||
return (void *) (qemu_get_memory_size() * 1024);
|
||||
uintptr_t top = 0;
|
||||
|
||||
top = fw_cfg_tolud();
|
||||
if (!top)
|
||||
top = (uintptr_t)qemu_get_memory_size() * 1024;
|
||||
|
||||
return (void *)top;
|
||||
}
|
||||
|
|
|
@ -2,4 +2,5 @@ ramstage-y += ../qemu-i440fx/northbridge.c
|
|||
ramstage-y += ../qemu-i440fx/memory.c
|
||||
ramstage-y += ../qemu-i440fx/fw_cfg.c
|
||||
romstage-y += ../qemu-i440fx/memory.c
|
||||
romstage-y += ../qemu-i440fx/fw_cfg.c
|
||||
bootblock-y += bootblock.c
|
||||
|
|
Loading…
Reference in New Issue