# SPDX-License-Identifier: Apache-2.0

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

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

if BOARD_QEMU_X86

config BOARD
	default "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 BOARD
	default "qemu_x86_64"

config KERNEL_VM_SIZE
	default 0x10000000 if ACPI

endif # BOARD_QEMU_X86_64

if BOARD_QEMU_X86_LAKEMONT

config BOARD
	default "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 BOARD
	default "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/x86/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
