#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

if ARCH_X86_64
comment "x86_64 Configuration Options"

config ARCH
	string
	default "x86_64"

choice
	prompt "x86_64 arch selection"
	default ARCH_INTEL64

config ARCH_INTEL64
	bool "Intel x86_64"
	select ARCH_HAVE_MMU
	select ARCH_USE_MMU
	select ARCH_HAVE_ADDRENV
	select ARCH_NEED_ADDRENV_MAPPING
	select ARCH_HAVE_TICKLESS
	select ARCH_HAVE_STACKCHECK
	select ARCH_HAVE_RNG
	select ARCH_HAVE_RESET
	select ARCH_HAVE_MMX
	select ARCH_HAVE_SSE
	select ARCH_HAVE_SSE2
	select ARCH_HAVE_SSE3
	select ARCH_HAVE_SSSE3
	select ARCH_HAVE_SSE41
	select ARCH_HAVE_SSE42
	select ARCH_HAVE_SSE4A
	select ARCH_HAVE_FMA if ARCH_X86_64_HAVE_XSAVE
	select ARCH_HAVE_AVX if ARCH_X86_64_HAVE_XSAVE
	select ARCH_HAVE_AVX512 if ARCH_X86_64_HAVE_XSAVE
	select ARCH_ICACHE
	select ARCH_DCACHE
	select ARCH_HAVE_IRQTRIGGER
	---help---
		Intel x86_64 architecture

config ARCH_CHIP_X86_64_CUSTOM
	bool "Custom x86_64 chip"
	select ARCH_CHIP_CUSTOM
	---help---
		Select this option if there is no directory for the chip under arch/x86_64/src/.

endchoice

# CPU features

config ARCH_HAVE_MMX
	bool
	default n

config ARCH_HAVE_SSE
	bool
	default y

config ARCH_HAVE_SSE2
	bool
	default y

config ARCH_HAVE_SSE3
	bool
	default n

config ARCH_HAVE_SSSE3
	bool
	default n

config ARCH_HAVE_SSE41
	bool
	default n

config ARCH_HAVE_SSE42
	bool
	default n

config ARCH_HAVE_SSE4A
	bool
	default n

config ARCH_HAVE_FMA
	bool
	default n

config ARCH_HAVE_AVX
	bool
	default n

config ARCH_HAVE_AVX512
	bool
	default n

source "arch/x86_64/src/common/Kconfig"

if ARCH_INTEL64
source "arch/x86_64/src/intel64/Kconfig"

config ARCH_CHIP
	string
	default "intel64"

endif # ARCH_INTEL64

config ARCH_MULTIBOOT1
	bool "Enable ELF32/Multiboot1"
	default n
	---help---
		This enables generating `nuttx32` and allows x86 QEMU
		`-kernel` boot in multiboot1 protocol.

config ARCH_MULTIBOOT2
	bool "Append multiboot2 header"
	default y
	---help---
		Include a multiboot2 header.  This also provides information to the
		system to enable certain features like the low level framebuffer.

if ARCH_MULTIBOOT2

config MULTBOOT2_FB_TERM
	bool "Multiboot2 framebuffer terminal"
	default n
	depends on NXFONTS
	---help---
		Enable a framebuffer terminal for early debug printing

endif # ARCH_MULTIBOOT2

config ARCH_PVHBOOT
	bool "Append Xen PVH ELF Note"
	default y
	---help---
		This allows x86 QEMU `-kernel` boot in PVH protocol.

endif # ARCH_X86_64