# Copyright (c) 2019 Carlo Caione <ccaione@baylibre.com>
# SPDX-License-Identifier: Apache-2.0

if BOARD_QEMU_CORTEX_A53

config BUILD_OUTPUT_BIN
	default y

config BOARD
	default "qemu_cortex_a53"

config MAX_THREAD_BYTES
	default 3

if NETWORKING

choice NET_QEMU_NETWORKING
	default NET_QEMU_ETHERNET if QEMU_CORTEX_A53_ETH_E1000
endchoice

config NET_DRIVERS
	default n if QEMU_CORTEX_A53_ETH_E1000

endif # NETWORKING

# QEMU PCI requires at least 256M of virtual space
config KERNEL_VM_SIZE
	default 0x80000000 if PCIE

# QEMU PCI requires physical addresses with more than 32 bits
choice ARM64_VA_BITS
	default ARM64_VA_BITS_40 if PCIE
endchoice

choice ARM64_PA_BITS
	default ARM64_PA_BITS_40 if PCIE
endchoice

endif # BOARD_QEMU_CORTEX_A53
