diff options
Diffstat (limited to 'src/mainboard/emulation')
-rw-r--r-- | src/mainboard/emulation/qemu-armv7/Kconfig | 35 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-armv7/Makefile.inc | 4 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-armv7/cbmem.c | 3 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-armv7/media.c | 3 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-armv7/memlayout.ld | 47 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-riscv/Kconfig | 24 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-riscv/Makefile.inc | 4 | ||||
-rw-r--r-- | src/mainboard/emulation/qemu-riscv/memlayout.ld | 33 |
8 files changed, 92 insertions, 61 deletions
diff --git a/src/mainboard/emulation/qemu-armv7/Kconfig b/src/mainboard/emulation/qemu-armv7/Kconfig index b275e88eed..c0e7095464 100644 --- a/src/mainboard/emulation/qemu-armv7/Kconfig +++ b/src/mainboard/emulation/qemu-armv7/Kconfig @@ -49,45 +49,10 @@ config MAINBOARD_VENDOR string default "ARM Ltd." -config SYS_SDRAM_BASE - hex "SDRAM base address" - default 0x01000000 - config DRAM_SIZE_MB int default 1024 -# Memory map for qemu vexpress-a9: -# -# 0x0000_0000: jump instruction (by qemu) -# 0x0001_0000: bootblock (entry of kernel / firmware) -# 0x0002_0000: romstage, assume up to 128KB in size. -# 0x0007_ff00: stack pointer -# 0x0010_0000: CBFS header -# 0x0011_0000: CBFS data -# 0x0100_0000: reserved for ramstage -# 0x1000_0000: I/O map address -# -config STACK_TOP - hex - default 0x00100000 - -config STACK_BOTTOM - hex - default 0x0007FF00 - -config BOOTBLOCK_BASE - hex - default 0x00010000 - -config ROMSTAGE_BASE - hex - default 0x00020000 - -config RAMSTAGE_BASE - hex - default SYS_SDRAM_BASE - config BOOTBLOCK_ROM_OFFSET hex default 0x0 diff --git a/src/mainboard/emulation/qemu-armv7/Makefile.inc b/src/mainboard/emulation/qemu-armv7/Makefile.inc index 4119f93285..d5742e1aad 100644 --- a/src/mainboard/emulation/qemu-armv7/Makefile.inc +++ b/src/mainboard/emulation/qemu-armv7/Makefile.inc @@ -28,3 +28,7 @@ ramstage-y += timer.c bootblock-y += mmio.c romstage-y += mmio.c ramstage-y += mmio.c + +bootblock-y += memlayout.ld +romstage-y += memlayout.ld +ramstage-y += memlayout.ld diff --git a/src/mainboard/emulation/qemu-armv7/cbmem.c b/src/mainboard/emulation/qemu-armv7/cbmem.c index 84f88cfa83..af662c039c 100644 --- a/src/mainboard/emulation/qemu-armv7/cbmem.c +++ b/src/mainboard/emulation/qemu-armv7/cbmem.c @@ -17,8 +17,9 @@ #include <stddef.h> #include <cbmem.h> +#include <symbols.h> void *cbmem_top(void) { - return (void *)CONFIG_SYS_SDRAM_BASE + (CONFIG_DRAM_SIZE_MB << 20); + return _dram + (CONFIG_DRAM_SIZE_MB << 20); } diff --git a/src/mainboard/emulation/qemu-armv7/media.c b/src/mainboard/emulation/qemu-armv7/media.c index 11688817ff..c3760ab033 100644 --- a/src/mainboard/emulation/qemu-armv7/media.c +++ b/src/mainboard/emulation/qemu-armv7/media.c @@ -14,6 +14,7 @@ */ #include <cbfs.h> #include <string.h> +#include <symbols.h> #include <console/console.h> /* Simple memory-mapped ROM emulation. */ @@ -25,7 +26,7 @@ static int emu_rom_open(struct cbfs_media *media) static void *emu_rom_map(struct cbfs_media *media, size_t offset, size_t count) { - return (void*)(offset + CONFIG_BOOTBLOCK_BASE); + return (void*)offset; } static void *emu_rom_unmap(struct cbfs_media *media, const void *address) diff --git a/src/mainboard/emulation/qemu-armv7/memlayout.ld b/src/mainboard/emulation/qemu-armv7/memlayout.ld new file mode 100644 index 0000000000..14859894e6 --- /dev/null +++ b/src/mainboard/emulation/qemu-armv7/memlayout.ld @@ -0,0 +1,47 @@ +/* + * This file is part of the coreboot project. + * + * Copyright 2014 Google Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <memlayout.h> + +#include <arch/header.ld> + +/* + * Memory map for qemu vexpress-a9: + * + * 0x0000_0000: jump instruction (by qemu) + * 0x0001_0000: bootblock (entry of kernel / firmware) + * 0x0002_0000: romstage, assume up to 128KB in size. + * 0x0007_ff00: stack pointer + * 0x0010_0000: CBFS header + * 0x0011_0000: CBFS data + * 0x0100_0000: reserved for ramstage + * 0x1000_0000: I/O map address + */ + +SECTIONS +{ + /* TODO: does this thing emulate SRAM? */ + + BOOTBLOCK(0x10000, 64K) + ROMSTAGE(0x20000, 128K) + STACK(0x000FC000, 16K) + + DRAM_START(0x01000000) + RAMSTAGE(0x01000000, 16M) +} diff --git a/src/mainboard/emulation/qemu-riscv/Kconfig b/src/mainboard/emulation/qemu-riscv/Kconfig index d7d5cc984c..5425ca5cb0 100644 --- a/src/mainboard/emulation/qemu-riscv/Kconfig +++ b/src/mainboard/emulation/qemu-riscv/Kconfig @@ -54,18 +54,6 @@ config DRAM_SIZE_MB # 0x0011_0000: CBFS data # 0x0100_0000: reserved for ramstage -config BOOTBLOCK_BASE - hex - default 0x00000000 - -config ROMSTAGE_BASE - hex - default 0x00020000 - -config RAMSTAGE_BASE - hex - default 0x100000 - config BOOTBLOCK_ROM_OFFSET hex default 0x0 @@ -82,16 +70,4 @@ config RAMTOP hex default 0x1000000 -config STACK_TOP - hex - default 0x0007ff00 - -config STACK_BOTTOM - hex - default 0x00040000 - -config STACK_SIZE - hex - default 0x0003ff00 - endif # BOARD_EMULATION_QEMU_UCB_RISCV diff --git a/src/mainboard/emulation/qemu-riscv/Makefile.inc b/src/mainboard/emulation/qemu-riscv/Makefile.inc index bc01d2f6cf..e60e0c1051 100644 --- a/src/mainboard/emulation/qemu-riscv/Makefile.inc +++ b/src/mainboard/emulation/qemu-riscv/Makefile.inc @@ -17,3 +17,7 @@ bootblock-y += uart.c romstage-y += romstage.c romstage-y += uart.c ramstage-y += uart.c + +bootblock-y += memlayout.ld +romstage-y += memlayout.ld +ramstage-y += memlayout.ld diff --git a/src/mainboard/emulation/qemu-riscv/memlayout.ld b/src/mainboard/emulation/qemu-riscv/memlayout.ld new file mode 100644 index 0000000000..082ac8a2cd --- /dev/null +++ b/src/mainboard/emulation/qemu-riscv/memlayout.ld @@ -0,0 +1,33 @@ +/* + * This file is part of the coreboot project. + * + * Copyright 2014 Google Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <memlayout.h> + +#include <arch/header.ld> + +SECTIONS +{ + DRAM_START(0x0) + BOOTBLOCK(0x0, 64K) + ROMSTAGE(0x20000, 128K) + STACK(0x40000, 0x3ff00) + PRERAM_CBMEM_CONSOLE(0x80000, 8K) + RAMSTAGE(0x100000, 16M) +} + |