# 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

config UART_NS16550_ACCESS_IOPORT
	default y if UART_NS16550

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 in libc-hook.c
	default 6 if NEWLIB_LIBC || PICOLIBC

endif # BOARD_QEMU_X86_TINY
