284 lines
7.7 KiB
Plaintext
284 lines
7.7 KiB
Plaintext
# Kconfig - x86 general configuration options
|
|
|
|
#
|
|
# Copyright (c) 2014-2015 Wind River Systems, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
menu "x86 architecture"
|
|
depends on X86
|
|
|
|
config ARCH
|
|
default "x86"
|
|
|
|
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
|
|
|
|
config ARCH_DEFCONFIG
|
|
string
|
|
default "arch/x86/defconfig"
|
|
|
|
|
|
source "arch/x86/core/Kconfig"
|
|
|
|
choice
|
|
prompt "SoC Selection"
|
|
source "arch/x86/soc/*/Kconfig.soc"
|
|
endchoice
|
|
|
|
choice
|
|
prompt "Intel Processor"
|
|
default CPU_MINUTEIA
|
|
|
|
config CPU_ATOM
|
|
bool "Atom"
|
|
select CMOV
|
|
select CPU_MIGHT_SUPPORT_CLFLUSH if CACHE_FLUSHING
|
|
help
|
|
This option signifies the use of a CPU from the Atom family.
|
|
|
|
config CPU_MINUTEIA
|
|
bool "Minute IA"
|
|
select CPU_MIGHT_SUPPORT_CLFLUSH if CACHE_FLUSHING
|
|
help
|
|
This option signifies the use of a CPU from the Minute IA family.
|
|
endchoice
|
|
|
|
|
|
menu "Processor Capabilities"
|
|
menu "Floating Point Options"
|
|
|
|
config FLOAT
|
|
bool
|
|
prompt "Floating point registers"
|
|
default n
|
|
help
|
|
This option allows tasks and fibers to use the floating point registers.
|
|
By default, only a single task or fiber may use the registers, and only
|
|
the x87 FPU/MMX registers may be used.
|
|
|
|
Disabling this option means that any task or fiber that uses a
|
|
floating point register will get a fatal exception.
|
|
|
|
config FP_SHARING
|
|
bool
|
|
prompt "Floating point register sharing"
|
|
depends on FLOAT
|
|
default n
|
|
help
|
|
This option allows multiple tasks and fibers to use the floating point
|
|
registers. Any task that uses the floating point registers must provide
|
|
stack space where the kernel can save these registers during context
|
|
switches; a task that uses only the x87 FPU/MMX registers must provide
|
|
108 bytes of added stack space, while a task the uses the SSE registers
|
|
must provide 464 bytes of added stack space.
|
|
|
|
config SSE
|
|
bool
|
|
prompt "SSE registers"
|
|
depends on FLOAT
|
|
default n
|
|
help
|
|
This option enables the use of SSE registers by tasks and fibers.
|
|
|
|
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 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.
|
|
|
|
endmenu
|
|
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 CPU_MIGHT_SUPPORT_CLFLUSH
|
|
bool
|
|
depends on CACHE_FLUSHING
|
|
default n
|
|
help
|
|
If a platform uses a processor that possibly implements CLFLUSH, change
|
|
the default in that platform's config file.
|
|
|
|
config CLFLUSH_INSTRUCTION_SUPPORTED
|
|
bool
|
|
prompt "CLFLUSH instruction supported" if CPU_MIGHT_SUPPORT_CLFLUSH
|
|
depends on CPU_MIGHT_SUPPORT_CLFLUSH && !CLFLUSH_DETECT
|
|
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 CPU_MIGHT_SUPPORT_CLFLUSH
|
|
default y
|
|
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.
|
|
endmenu
|
|
|
|
menu "Platform Capabilities"
|
|
config ADVANCED_IDLE_SUPPORTED
|
|
bool "Advanced Idle Supported"
|
|
default n
|
|
help
|
|
This option signifies that the target supports the ADVANCED_IDLE
|
|
configuration option.
|
|
|
|
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 NUM_DYNAMIC_EXC_STUBS
|
|
int "Number of dynamic exception stubs"
|
|
default 0
|
|
help
|
|
This option specifies the maximum number of dynamically allocated
|
|
exception stubs that are to be used with exceptions that push an
|
|
error code onto the stack.
|
|
|
|
config NUM_DYNAMIC_EXC_NOERR_STUBS
|
|
int "Number of dynamic no-error exception stubs"
|
|
default 0
|
|
help
|
|
This option specifies the maximum number of dynamically allocated
|
|
exception stubs that are to be used with exceptions that do not push
|
|
an error code onto the stack.
|
|
|
|
config PIC_DISABLE
|
|
bool "Disable PIC"
|
|
default n
|
|
help
|
|
This option disables all interrupts on the PIC
|
|
|
|
config IRQ_OFFLOAD
|
|
bool "Enable IRQ offload"
|
|
default n
|
|
help
|
|
Enable irq_offload() API which allows functions to be synchronously
|
|
run in interrupt context. Uses one entry in the IDT. Mainly useful
|
|
for test cases.
|
|
|
|
config IRQ_OFFLOAD_VECTOR
|
|
int "IDT vector to use for IRQ offload"
|
|
default 63 if MVIC
|
|
default 32
|
|
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
|
|
endmenu
|
|
|
|
|
|
|
|
source "arch/x86/soc/*/Kconfig"
|
|
|
|
endmenu
|