# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2019 Intel Corp.

if BOARD_QEMU_X86 || BOARD_QEMU_X86_64 || BOARD_QEMU_X86_LAKEMONT || BOARD_QEMU_X86_TINY

# The EEPROM emulator must be initialized after the flash simulator
config EEPROM_INIT_PRIORITY
	default 60
	depends on EEPROM

config BUILD_OUTPUT_BIN
	default n

config QEMU_TARGET
	default y

config HAS_COVERAGE_SUPPORT
	default y

endif # BOARD_QEMU_X86 || BOARD_QEMU_X86_64 || BOARD_QEMU_X86_LAKEMONT || BOARD_QEMU_X86_TINY


if BOARD_QEMU_X86

config FLASH_SIMULATOR
	default y
	depends on FLASH

config KERNEL_VM_SIZE
	default 0x10000000 if ACPI

config MULTIBOOT
	default y

config MULTIBOOT_INFO
	default y if MULTIBOOT

config MULTIBOOT_MEMMAP
	default y if MULTIBOOT

config QEMU_ICOUNT
	default n if HPET_TIMER && SHELL

config QEMU_ICOUNT_SHIFT
	default 5

endif # BOARD_QEMU_X86


if BOARD_QEMU_X86_64

config KERNEL_VM_SIZE
	default 0x10000000 if ACPI

endif # BOARD_QEMU_X86_64


if BOARD_QEMU_X86_LAKEMONT

config KERNEL_VM_SIZE
	default 0x400000

config MULTIBOOT
	# This is needed for QEMU to load the ELF image
	default y

config X86_PC_COMPATIBLE
	# QEMU presents a PC-compatible machine
	default y

config QEMU_ICOUNT
	default n if HPET_TIMER && SHELL

config QEMU_ICOUNT_SHIFT
	default 5

endif # BOARD_QEMU_X86_LAKEMONT


if BOARD_QEMU_X86_TINY

config KERNEL_VM_SIZE
	default 0x400000

config MULTIBOOT
	# This is needed for QEMU to load the ELF image
	default y

config X86_PC_COMPATIBLE
	# QEMU presents a PC-compatible machine
	default y

config QEMU_ICOUNT
	default n if HPET_TIMER && SHELL

config QEMU_ICOUNT_SHIFT
	default 5

config HAVE_CUSTOM_LINKER_SCRIPT
	default y

config CUSTOM_LINKER_SCRIPT
	default "${ZEPHYR_BASE}/boards/qemu/x86/qemu_x86_tiny.ld"

config X86_EXTRA_PAGE_TABLE_PAGES
	# This is needed for gen_mmu.py to map the flash into memory
	default 2 if DEMAND_PAGING && !LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT

config DEMAND_PAGING_PAGE_FRAMES_RESERVE
	# Need to accommodate the heap for newlib or common malloc in libc-hook.c
	default 6 if NEWLIB_LIBC || (COMMON_LIBC_MALLOC && COMMON_LIBC_MALLOC_ARENA_SIZE != 0)

endif # BOARD_QEMU_X86_TINY
