Add support for XSAVE/XRSTOR to handle x86_64 procesor extended states. Support for these instructions is required to support AVX instruction set Signed-off-by: p-szafonimateusz <p-szafonimateusz@xiaomi.com>
174 lines
4.3 KiB
Plaintext
174 lines
4.3 KiB
Plaintext
#
|
|
# For a description of the syntax of this configuration file,
|
|
# see the file kconfig-language.txt in the NuttX tools repository.
|
|
#
|
|
|
|
if ARCH_INTEL64
|
|
comment "intel64 Configuration Options"
|
|
|
|
choice
|
|
prompt "Intel64 Chip Selection"
|
|
default ARCH_CHIP_INTEL64_QEMU
|
|
|
|
config ARCH_CHIP_INTEL64_QEMU
|
|
bool "Intel64 QEMU"
|
|
|
|
config ARCH_CHIP_INTEL64_CUSTOM
|
|
bool "Custom Intel64 chip"
|
|
|
|
endchoice # "Intel64 Chip Selection"
|
|
|
|
config ARCH_INTEL64_HAVE_TSC
|
|
bool
|
|
|
|
config ARCH_INTEL64_CACHE_LINESIZE
|
|
int "Cache line size (hardcoded)"
|
|
depends on ARCH_DCACHE || ARCH_ICACHE
|
|
default 64
|
|
---help---
|
|
Cache line size. If set to 0, we read the value from CPUID,
|
|
(Probably) all new Intel CPUs have this value equal to 64.
|
|
|
|
config ARCH_INTEL64_DCACHE_SIZE
|
|
int "Data cache line size (L1d)"
|
|
depends on ARCH_DCACHE
|
|
default 0
|
|
---help---
|
|
Data cache line size (L1d). If set to 0, we read the value from CPUID.
|
|
|
|
config ARCH_INTEL64_ICACHE_SIZE
|
|
int "Instruction cache line size (L1i)"
|
|
depends on ARCH_ICACHE
|
|
default 0
|
|
---help---
|
|
Instruction cache line size (L1i). If set to 0, we read the value from CPUID.
|
|
|
|
config ARCH_INTEL64_HAVE_CLWB
|
|
bool "CLWB support"
|
|
default n
|
|
---help---
|
|
Select to enable the use of CLWB to write back cache line
|
|
|
|
choice
|
|
prompt "System Timer Source"
|
|
default ARCH_INTEL64_TSC_DEADLINE
|
|
---help---
|
|
Choose which hardware resource will drive NuttX
|
|
system time
|
|
|
|
config ARCH_INTEL64_TSC_DEADLINE
|
|
bool "TSC DEADLINE timer support"
|
|
select ARCH_INTEL64_HAVE_TSC
|
|
---help---
|
|
Select to enable the use of TSC DEADLINE timer of x86_64
|
|
|
|
config ARCH_INTEL64_TSC
|
|
bool "TSC APIC timer support"
|
|
select ARCH_INTEL64_HAVE_TSC
|
|
---help---
|
|
Select to enable the use of TSC APIC timer of x86_64
|
|
|
|
endchoice # System Timer Source
|
|
|
|
if ARCH_INTEL64_TSC_DEADLINE
|
|
|
|
config ARCH_INTEL64_CORE_FREQ_KHZ
|
|
int "CPU Core frequency in kHz"
|
|
default 2000000
|
|
---help---
|
|
The CPU Core frequency (without Turbo boost). This is used
|
|
to set the TSC deadline timer frequency. If set to 0 we try to get
|
|
frequency from CPUID.
|
|
|
|
endif
|
|
|
|
if ARCH_INTEL64_TSC
|
|
|
|
config ARCH_INTEL64_APIC_FREQ_KHZ
|
|
int "APIC timer frequency in kHz"
|
|
default 2000000
|
|
---help---
|
|
The APIC timer frequency. This is used to set the APIC timer
|
|
frequency in case of no TSC DEADLINE timer is available.
|
|
|
|
endif
|
|
|
|
config INTEL64_HPET
|
|
bool "HPET timer support"
|
|
default n
|
|
---help---
|
|
Select to enable the HPET timer support
|
|
|
|
if INTEL64_HPET
|
|
|
|
config INTEL64_HPET_BASE
|
|
hex "HPET timer base address"
|
|
default 0xfed00000
|
|
---help---
|
|
Configure base address for HPET. In the future, we can get this address from
|
|
the ACPI table if ACPI support is enabled.
|
|
|
|
config INTEL64_HPET_CHANNELS
|
|
int "HPET timer supported channels"
|
|
default 2
|
|
range 1 3
|
|
---help---
|
|
Configure the number of supported HPET channles (called HPET timers
|
|
in HPET spec). We use HPET legacy replacement for interrupts which
|
|
means that Timer 0 and Timer 1 interrupts are hardcoded, but Timer 2
|
|
needs additional attention to configure interrupt routing.
|
|
Timer 2 will most likely not work with QEMU.
|
|
|
|
config INTEL64_HPET_MIN_DELAY
|
|
int "HPET minimum supported delay in micro-seconds"
|
|
default 1000
|
|
---help---
|
|
HPET use free runnin up-counter and a comparators which generate events
|
|
only on a equal event. This can results in event miss if we set too small
|
|
delay. In that case we must set a minimum value for delay that always work.
|
|
For the QEMU target this value should be as high as 1000, but for real
|
|
hardware it may go much lower (for i7-1255U CPU it works with values <10).
|
|
|
|
endif # INTEL64_HPET
|
|
|
|
config INTEL64_ONESHOT
|
|
bool "Oneshot timer support"
|
|
select INTEL64_HPET
|
|
default n
|
|
---help---
|
|
Select to enable the oneshot timer support
|
|
|
|
if INTEL64_ONESHOT
|
|
|
|
config INTEL64_ONESHOT_MAXTIMERS
|
|
int "Maximum number of oneshot timers"
|
|
default 1
|
|
range 1 3
|
|
---help---
|
|
Determines the maximum number of oneshot timers that can be
|
|
supported.
|
|
|
|
endif
|
|
|
|
config ARCH_INTEL64_HAVE_PCID
|
|
bool "PCID support"
|
|
default y
|
|
---help---
|
|
Select to enable the use of PCID to reduce TLB flush
|
|
|
|
config ARCH_INTEL64_HAVE_RDRAND
|
|
bool "RDRAND support"
|
|
default y
|
|
---help---
|
|
Select to enable the use of RDRAND for /dev/random
|
|
|
|
config ARCH_INTEL64_DISABLE_INT_INIT
|
|
bool "Disable Initialization of 8259/APIC/IO-APIC"
|
|
default n
|
|
---help---
|
|
Select to disable all initialization related to interrupt
|
|
controllers. This is necessary if those are already
|
|
initialized, i.e. Jailhouse system.
|
|
|
|
endif
|