zephyr/arch/x86/Kconfig

365 lines
10 KiB
Plaintext

# Kconfig - x86 general configuration options
#
# Copyright (c) 2014-2015 Wind River Systems, Inc.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1) Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2) Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3) Neither the name of Wind River Systems nor the names of its contributors
# may be used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
config X86_32
def_bool y
config ARCH_DEFCONFIG
string
default "arch/x86/defconfig" if X86_32
source "kernel/Kconfig"
source "misc/Kconfig"
source "arch/x86/core/Kconfig"
menu "Platform General Configuration"
choice
prompt "Platform Configuration"
default PLATFORM_QUARK
config PLATFORM_ATOM_N28XX
bool "Minimum configuration for ATOM N28XX platform"
select CPU_ATOM
select IOAPIC
select LOAPIC
select LOAPIC_TIMER
select EOI_HANDLER_SUPPORTED
select BOOTLOADER_UNKNOWN
select EXTRA_SERIAL_PORT
select SERIAL_INTERRUPT_LEVEL
select CUSTOM_RANDOM_GENERATOR
select PLATFORM_GENERIC_PC
config PLATFORM_PCMINUTEIA
bool "Minimum configuration for MINUTE IA platform"
select CPU_MINUTEIA
select PIC
select PIT
select BOI_HANDLER_SUPPORTED
select EOI_HANDLER_SUPPORTED
select BOOTLOADER_UNKNOWN
select EXTRA_SERIAL_PORT
select PLATFORM_GENERIC_PC
config PLATFORM_QUARK
bool "Minimum configuration for QUARK platform"
select CPU_MINUTEIA
select IOAPIC
select HPET_TIMER
select EOI_HANDLER_SUPPORTED
select BOOTLOADER_UNKNOWN
select EXTRA_SERIAL_PORT
select LINK_AUX_COMPILER_LIBS
select NS16550
select PCI
endchoice
config PLATFORM_GENERIC_PC
bool
default n
select NS16550
choice
prompt "Intel Processor"
default CPU_MINUTEIA
config CPU_ATOM
bool "Atom"
help
This option signifies the use of a CPU from the Atom family.
config CPU_MINUTEIA
bool "Minute IA"
help
This option signifies the use of a CPU from the Minute IA family.
endchoice
config ADVANCED_IDLE
bool
prompt "Advanced idle state"
default n
depends on ADVANCED_POWER_MANAGEMENT && ADVANCED_IDLE_SUPPORTED
help
This option enables the kernel to interface to a custom advanced idle
power saving manager. This permits the system to enter a custom
power saving state when the kernel becomes idle for extended periods,
and then to restore the system to its previous state (rather than
booting up from scratch) when the kernel is re-activated.
config ADV_IDLE_STACK_SIZE
int
prompt "Advanced idle state stack size"
default 16
depends on ADVANCED_IDLE
help
This option defines the size of the separate stack used during the
system state check while the booting up. A separate stack is used
to avoid memory corruption on the system re-activation from power
down mode. The stack size must be large enough to hold the return
address (4 bytes) and the _AdvIdleCheckSleep() stack frame.
config CPU_MIGHT_SUPPORT_CLFLUSH
bool
default n
help
If a platform uses a processor that possibly implements CLFLUSH, change
the default in that platform's config file.
#FIXME This options is not being used in the current code base.
config CLFLUSH_INSTRUCTION_SUPPORTED
bool
prompt "CLFLUSH instruction supported" if CPU_MIGHT_SUPPORT_CLFLUSH
depends on CPU_MIGHT_SUPPORT_CLFLUSH
default n
help
Only enable this if the CLFLUSH instruction is supported, so that
an implementation of _SysCacheFlush() that uses CLFLUSH is made
available, instead of the one using WBINVD.
menu "Specific CPU Capability Support"
config ISA_IA32
bool
default y if CPU_ATOM || CPU_MINUTEIA
default n
help
This option signifies the use of a CPU based on the Intel IA-32
instruction set architecture.
config HARDWARE_BP_SUPPORTED
def_bool y
depends on ISA_IA32
help
This option signifies that the target supports hardware-based
instruction breakpoints and/or data watchpoints.
config TICKLESS_IDLE_UNSUPPORTED
prompt "Tickless Idle Unsupported"
bool
default n
help
This option signifies the use of an Intel CPU that lacks
support for tickless idle.
config CMOV_UNSUPPORTED
def_bool y
depends on CPU_MINUTEIA
help
This option signifies the use of an Intel CPU that lacks support
for the CMOV instruction.
config CPU_FLOAT_UNSUPPORTED
def_bool y
depends on CPU_MINUTEIA
select CPU_SSE_UNSUPPORTED
help
This option signifies the use of an Intel CPU that lacks support
for floating point operations.
config CPU_SSE_UNSUPPORTED
bool "CPU SSE unsupported"
default n
help
This option signifies the use of an Intel CPU that lacks support
for SSEx instructions (i.e. those which pre-date Pentium III).
config CACHE_LINE_SIZE
int "Cache line size"
default 64 if CPU_ATOM
default 0
help
Size in bytes of a CPU cache line.
endmenu
menu "Specific Platform Capability Support"
config NUM_DYNAMIC_STUBS
int "Number of dynamic int stubs"
default 0
help
This option specifies the number of interrupt handlers that can be
installed dynamically using irq_connect().
config PROT_MODE_SWITCH_PROMPT
bool "Prot Mode switch prompt"
default n
help
This option allows users to select the value of the PROT_MODE_SWITCH
configuration option.
config ADVANCED_IDLE_SUPPORTED
bool "Advanced idle supported"
default n
help
This option signifies that the target supports the ADVANCED_IDLE
configuration option.
endmenu
config SHUTOFF_PIC
bool "Shutoff PIC"
depends on !PIC
default n
help
This option disables all interrupts on the PIC
endmenu
menu "Floating Point Options"
depends on !CPU_FLOAT_UNSUPPORTED
config FLOAT
bool
prompt "Floating point instructions"
default n
select FP_SHARING if ENHANCED_SECURITY
help
This option enables the use of x87 FPU and MMX instructions by
a task or fiber.
Disabling this option means that any task or fiber that uses a
floating point instruction will get a fatal exception.
config SSE
bool
prompt "SSEx instructions"
depends on FLOAT && !CPU_SSE_UNSUPPORTED
default n
help
This option enables the use of SSEx instructions by a task or fiber.
Disabling this option means that no task or fiber may use SSEx
instructions; any such use will result in undefined behavior.
config SSE_FP_MATH
bool
prompt "Compiler-generated SSEx instructions" if FP_SHARING
depends on SSE && ISA_IA32
default n if FP_SHARING
default y if !FP_SHARING
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 pre-emptive 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.
config FP_SHARING
bool
prompt "Floating point resource sharing" if !ENHANCED_SECURITY
depends on FLOAT
default n
select AUTOMATIC_FP_ENABLING if ENHANCED_SECURITY
help
This option allows multiple tasks and fibers to safely utilize
floating point hardware resources. Every task or fiber that wishes
to use floating point instructions (i.e. x87 FPU, MMX, or SSEx) must
be created with such support already enabled, or must enable this
support via task_float_enable() or fiber_float_enable() before
executing these instructions.
Enabling this option adds 108 bytes to the stack size requirement
of each task or fiber that utilizes x87 FPU or MMX instructions,
and adds 464 bytes to the stack size requirement of each task or
fiber that utilizes SSEx instructions. (The stack size requirement
of tasks and fibers that do not utilize floating point instructions
remains unchanged.)
Disabling this option means that only a single task or fiber may
utilize x87 FPU, MMX, or SSEx instructions. (The stack size
requirement of all tasks and fibers remains unchanged.)
config AUTOMATIC_FP_ENABLING
bool
prompt "Automatically enable floating point resource sharing" \
if !ENHANCED_SECURITY
depends on FP_SHARING
default n
help
This option allows tasks and fibers to safely utilize floating
point hardware resources without requiring them to first indicate
their intention to do so. The system automatically detects when
a task or fiber that does not currently have floating point support
enabled uses a floating point instruction, and automatically executes
task_float_enable() or fiber_float_enable() on its behalf. The
task or fiber is enabled for using x87 FPU, MMX, or SSEx instructions
if SSE is configured, otherwise it is enabled for using x87 FPU or
MMX instructions only.
config XIP
default n
endmenu
menu "Bus options (PCI etc.)"
config PCI
bool
# omit prompt to signify a "hidden" option
default n
help
This options enables support of PCI bus enumeration for device
drivers.
config PCI_DEBUG
bool
prompt "Enable PCI debugging"
depends on PCI
default n
help
This options enables PCI debigging functions
endmenu
if PLATFORM_GENERIC_PC
source "arch/x86/platforms/generic_pc/Kconfig"
endif
if PLATFORM_QUARK
source "arch/x86/platforms/quark/Kconfig"
endif
source "drivers/Kconfig"
source "net/Kconfig"