# Kconfig - x86 general configuration options

#
# Copyright (c) 2014-2015 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#

choice
	prompt "x86 SoC Selection"
	depends on X86

	source "arch/x86/soc/*/Kconfig.soc"
endchoice

menu "X86 Architecture Options"
	depends on X86

config ARCH
	default "x86"

config ARCH_DEFCONFIG
	string
	default "arch/x86/defconfig"

source "arch/x86/core/Kconfig"

#
# Hidden CPU family configs which are to be selected by
# individual SoC.
#
config CPU_ATOM
	# Hidden
	bool
	select CMOV
	select CPU_HAS_FPU
	select ARCH_HAS_STACK_PROTECTION if X86_MMU
	select ARCH_HAS_USERSPACE if X86_MMU
	help
	  This option signifies the use of a CPU from the Atom family.

config CPU_MINUTEIA
	# Hidden
	select ARCH_HAS_STACK_PROTECTION if X86_MMU
	select ARCH_HAS_USERSPACE if X86_MMU
	bool
	help
	  This option signifies the use of a CPU from the Minute IA family.

menu "Processor Capabilities"

config X86_IAMCU
	bool
	default n
	prompt "IAMCU calling convention"
	help
	  The IAMCU calling convention changes the X86 C calling convention to
	  pass some arguments via registers allowing for code size and performance
	  improvements.  Great care needs to be taken if you have assembly code
	  that will be called from C or C code called from assembly code, the
	  assembly code will need to be updated to conform to the new calling
	  convention.  If in doubt say N

menu "Memory Management"
config X86_MMU
	bool
	default n
	prompt "Enable Memory Management Unit"
	help
	  This options enables the memory management unit present in x86. Enabling
	  this will create boot time page table structure.

config X86_PAE_MODE
	bool
	depends on X86_MMU
	default n
	prompt "Enable PAE page tables"
	help
	  When selected the Page address extension mode is enabled. The PAE
	  page tables provides a mechanism to selectively disable execution.
	  So any Page Table Entry (PTE) that sets the XD bit will have all
	  instruction fetches disabled in that 4KB region. The amount of RAM
	  needed for PAE tables is more than twice that of 32-Bit paging
	  because each PAE entry is 64bits wide.
	  Note: Do not enable in RAM constrained devices.

config X86_NO_MELTDOWN
	bool
	help
	  This hidden option should be set on a per-SOC basis to indicate that
	  a particular SOC is not vulnerable to the Meltdown CPU vulnerability.
endmenu

config X86_ENABLE_TSS
	bool
	help
	  This hidden option enables defining a Task State Segment (TSS) for
	  kernel execution. This is needed to handle double-faults or
	  do privilege elevation. It also defines a special TSS and handler
	  for correctly handling double-fault exceptions, instead of just
	  letting the system triple-fault and reset.

config X86_STACK_PROTECTION
	bool
	default y if HW_STACK_PROTECTION
	select SET_GDT
	select GDT_DYNAMIC
	select X86_ENABLE_TSS
	help
	  This option leverages the MMU to cause a system fatal error if the
	  bounds of the current process stack are overflowed. This is done
	  by preceding all stack areas with a 4K guard page.

config X86_USERSPACE
	bool
	default y if USERSPACE
	select THREAD_STACK_INFO
	select SET_GDT
	select GDT_DYNAMIC
	select X86_ENABLE_TSS
	help
	  This option enables APIs to drop a thread's privileges down to ring 3,
	  supporting user-level threads that are protected from each other and
	  from crashing the kernel.

menu "Architecture Floating Point Options"
depends on CPU_HAS_FPU

config SSE
	bool
	prompt "SSE registers"
	depends on FLOAT
	default n
	help
	  This option enables the use of SSE registers by threads.

config SSE_FP_MATH
	bool
	prompt "Compiler-generated SSEx instructions"
	depends on SSE
	default n
	help
	  This option allows the compiler to generate SSEx instructions for
	  performing floating point math. This can greatly improve performance
	  when exactly the same operations are to be performed on multiple
	  data objects; however, it can also significantly reduce performance
	  when preemptive task switches occur because of the larger register
	  set that must be saved and restored.

	  Disabling this option means that the compiler utilizes only the
	  x87 instruction set for floating point operations.
endmenu

choice
prompt "Reboot implementation"
depends on REBOOT
default REBOOT_RST_CNT

config REBOOT_RST_CNT
	bool
	prompt "Reboot via RST_CNT register"
	help
	  Reboot via the RST_CNT register, going back to BIOS.

endchoice


config ISA_IA32
	bool
	default y
	help
	  This option signifies the use of a CPU based on the Intel IA-32
	  instruction set architecture.

config IA32_LEGACY_IO_PORTS
	bool
	prompt "Support IA32 legacy IO ports"
	default n
	depends on ISA_IA32
	help
	  This option enables IA32 legacy IO ports. Note these are much slower
	  than memory access, so they should be used in last resort.

config CMOV
	def_bool n
	help
	  This option signifies the use of an Intel CPU that supports
	  the CMOV instruction.

config CACHE_LINE_SIZE_DETECT
	bool
	prompt "Detect cache line size at runtime"
	default y
	help
	  This option enables querying the CPUID register for finding the cache line
	  size at the expense of taking more memory and code and a slightly increased
	  boot time.

	  If the CPU's cache line size is known in advance, disable this option and
	  manually enter the value for CACHE_LINE_SIZE.

config CACHE_LINE_SIZE
	int
	prompt "Cache line size" if !CACHE_LINE_SIZE_DETECT
	default 0 if CACHE_LINE_SIZE_DETECT
	default 64 if CPU_ATOM
	default 0
	help
	  Size in bytes of a CPU cache line.

	  Detect automatically at runtime by selecting CACHE_LINE_SIZE_DETECT.

config CLFLUSH_INSTRUCTION_SUPPORTED
	bool
	prompt "CLFLUSH instruction supported"
	depends on !CLFLUSH_DETECT && CACHE_FLUSHING
	default n
	help
	  An implementation of sys_cache_flush() that uses CLFLUSH is made
	  available, instead of the one using WBINVD.

	  This option should only be enabled if it is known in advance that the
	  CPU supports the CLFLUSH instruction. It disables runtime detection of
	  CLFLUSH support thereby reducing both memory footprint and boot time.

config CLFLUSH_DETECT
	bool
	prompt "Detect support of CLFLUSH instruction at runtime"
	depends on CACHE_FLUSHING
	default n
	help
	  This option should be enabled if it is not known in advance whether the
	  CPU supports the CLFLUSH instruction or not.

	  The CPU is queried at boot time to determine which of the multiple
	  implementations of sys_cache_flush() linked into the image is the
	  correct one to use.

	  If the CPU's support (or lack thereof) of CLFLUSH is known in advance, then
	  disable this option and set CLFLUSH_INSTRUCTION_SUPPORTED as appropriate.

config ARCH_CACHE_FLUSH_DETECT
	bool
	default y
	depends on CLFLUSH_DETECT

config CACHE_FLUSHING
	bool
	default n
	prompt "Enable cache flushing mechanism"
	help
	  This links in the sys_cache_flush() function. A mechanism for flushing the
	  cache must be selected as well. By default, that mechanism is discovered at
	  runtime.

config PIC_DISABLE
	bool "Disable PIC"
	default n
	help
	  This option disables all interrupts on the PIC


config X86_KERNEL_OOPS
	bool "Enable handling of kernel oops as an exception"
	default y
	help
	  Enable handling of k_oops() API as a CPU exception, which will provide
	  extra debugging information such as program counter and register
	  values when the oops is triggered. Requires an entry in the IDT.

config X86_KERNEL_OOPS_VECTOR
	int "IDT vector to use for kernel oops"
	default 62 if MVIC
	default 33 if !MVIC
	range 32 255
	depends on X86_KERNEL_OOPS
	help
	  Specify the IDT vector to use for the kernel oops exception handler.
	  The default should be fine for most arches, but on systems like MVIC
	  where there is a fixed IRQ-to-vector mapping another value may be
	  needed to avoid collision.

config IRQ_OFFLOAD_VECTOR
	int "IDT vector to use for IRQ offload"
	default 63 if MVIC
	default 32 if !MVIC
	range 32 255
	depends on IRQ_OFFLOAD
	help
	  Specify the IDT vector to use for the IRQ offload interrupt handler.
	  The default should be fine for most arches, but on systems like MVIC
	  where there is a fixed IRQ-to-vector mapping another value may be
	  needed to avoid collision.


config XIP
	default n

config X86_FIXED_IRQ_MAPPING
	bool
	default n
	help
	  Specify whether the current interrupt controller in use has a fixed
	  mapping between IDT vectors and IRQ lines.

endmenu

source "arch/x86/soc/*/Kconfig"

endmenu
