##
## This file is part of the coreboot project.
##
## Copyright (C) 2013 Google Inc.
##
## This software is licensed under the terms of the GNU General Public
## License version 2, as published by the Free Software Foundation, and
## may be copied, distributed, and modified under those terms.
##
## 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.

# Emulation for ARM Ltd Versatile Express Cortex-A9
#  http://www.arm.com/products/tools/development-boards/versatile-express

# To execute, do:
# export QEMU_AUDIO_DRV=none
# qemu-system-arm -M vexpress-a9 -m 1024M -nographic -kernel build/coreboot.rom

if BOARD_EMULATION_QEMU_ARMV7

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select ARCH_ARMV7
	select CPU_ARMLTD_CORTEX_A9
	select HAVE_UART_MEMORY_MAPPED
	select HAVE_UART_SPECIAL
	select BOARD_ROMSIZE_KB_4096

config MAINBOARD_DIR
	string
	default emulation/qemu-armv7

config MAINBOARD_PART_NUMBER
	string
	default "QEMU ARMV7"

config MAX_CPUS
	int
	default 2

config MAINBOARD_VENDOR
	string
	default "ARM Ltd."

config BOOTBLOCK_MAINBOARD_INIT
	string
	default "mainboard/emulation/qemu-armv7/bootblock.c"

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 BOOTBLOCK_BASE
	hex
	default 0x00010000

config ID_SECTION_BASE
	hex
	default 0x0001f000

config ROMSTAGE_BASE
	hex
	default 0x00020000

config ROMSTAGE_SIZE
	hex
	default 0x20000

config BOOTBLOCK_ROM_OFFSET
	hex
	default 0x0

config CBFS_HEADER_ROM_OFFSET
	hex
	default 0x0100000

config CBFS_ROM_OFFSET
	hex
	default 0x0110000

config IRAM_STACK
	hex
	default 0x0007ff00

config XIP_ROM_SIZE
	hex
	default ROMSTAGE_SIZE

config SYS_SDRAM_BASE
	hex "SDRAM base address"
	default 0x01000000

config SYS_TEXT_BASE
	hex "Executable code section"
	default 0x04e00000

config RAMBASE
	hex
	default SYS_SDRAM_BASE

# according to stefan, this is RAMBASE + 1M.
config RAMTOP
	hex
	default 0x01100000

endif #  BOARD_EMULATION_QEMU_ARMV7
