nuttx/arch/x86_64/Kconfig
ouyangxiangzhen 126221df97 arch/x86_64: Add elf32 multiboot1 wrapper for NuttX binary
It was discovered that attempting to load x86-64 format ELF files with a multiboot1 header using the qemu `-kernel` command would result in an error, as multiboot1 only allows x86-32 format ELF files. To address this limitation, we have developed a simple x86_32 bootloader. This bootloader is designed to copy the `nuttx.bin` file to the designated memory address (`0x100000`) and then transfer control to NuttX by executing a jump instruction (`jmp 0x100000`).

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2024-09-13 21:25:51 +08:00

141 lines
2.5 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_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