diff --git a/arch/Kconfig b/arch/Kconfig index 900c3d66e50..ea801c57f5c 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -26,6 +26,7 @@ config ARCH_ARM config ARCH_ARM64 bool "ARM64" select ALARM_ARCH + select ARCH_64BIT select ARCH_HAVE_BACKTRACE select ARCH_HAVE_INTERRUPTSTACK select ARCH_HAVE_FORK if !BUILD_KERNEL @@ -39,7 +40,6 @@ config ARCH_ARM64 select ARCH_HAVE_THREAD_LOCAL select ARCH_HAVE_PERF_EVENTS select ONESHOT - select LIBC_ARCH_ELF_64BIT if LIBC_ARCH_ELF select ONESHOT_COUNT ---help--- The ARM64 architectures @@ -135,6 +135,7 @@ config ARCH_X86 config ARCH_X86_64 bool "x86_64" + select ARCH_64BIT select ARCH_HAVE_TCBINFO select ARCH_HAVE_FPU select ARCH_HAVE_DPFPU @@ -144,7 +145,6 @@ config ARCH_X86_64 select ARCH_HAVE_CUSTOMOPT select ARCH_HAVE_THREAD_LOCAL select PCI_LATE_DRIVERS_REGISTER if PCI - select LIBC_ARCH_ELF_64BIT if LIBC_ARCH_ELF select ARCH_TOOLCHAIN_GNU select ARCH_HAVE_BACKTRACE select ARCH_HAVE_FORK if !BUILD_KERNEL @@ -371,6 +371,12 @@ config ARCH_INSTRUMENT_ALL comment "Architecture Options" +config ARCH_64BIT + bool + default n + ---help--- + Indicates that the current architecture is 64-bit. + config ARCH_NOINTC bool default n diff --git a/arch/risc-v/Kconfig b/arch/risc-v/Kconfig index 1a43f8d4a97..13fb1557151 100644 --- a/arch/risc-v/Kconfig +++ b/arch/risc-v/Kconfig @@ -445,7 +445,7 @@ config ARCH_RV32 config ARCH_RV64 bool default n - select LIBC_ARCH_ELF_64BIT if LIBC_ARCH_ELF && !ARCH_RV64ILP32 + select ARCH_64BIT if !ARCH_RV64ILP32 config ARCH_RV64ILP32 bool diff --git a/arch/sim/CMakeLists.txt b/arch/sim/CMakeLists.txt index a1b7c772f26..0a88c5c523c 100644 --- a/arch/sim/CMakeLists.txt +++ b/arch/sim/CMakeLists.txt @@ -46,7 +46,7 @@ set_property( PROPERTY NUTTX_ELF_MODULE_LINK_OPTIONS -r -e module_initialize -T ${NUTTX_DIR}/libs/libc/elf/gnu-elf.ld) -if(CONFIG_LIBC_ARCH_ELF_64BIT) +if(CONFIG_ARCH_64BIT) # For amd64: It seems macOS/x86_64 loads the program text around # 00000001_xxxxxxxx. The gcc default (-mcmodel=small) would produce # out-of-range 32-bit relocations. Even on Linux, NuttX modules are loaded diff --git a/arch/sim/Kconfig b/arch/sim/Kconfig index 3dcd8b3f10b..445af0a9d0b 100644 --- a/arch/sim/Kconfig +++ b/arch/sim/Kconfig @@ -12,8 +12,8 @@ choice config HOST_X86_64 bool "x86_64" + select ARCH_64BIT if !SIM_M32 select ARCH_HAVE_STACKCHECK - select LIBC_ARCH_ELF_64BIT if LIBC_ARCH_ELF && !SIM_M32 select ARCH_HAVE_MATH_H config HOST_X86 @@ -26,6 +26,7 @@ config HOST_ARM config HOST_ARM64 bool "arm64" + select ARCH_64BIT if !SIM_M32 select ARCH_HAVE_STACKCHECK endchoice # Host CPU Type diff --git a/boards/sim/sim/sim/scripts/Make.defs b/boards/sim/sim/sim/scripts/Make.defs index 44ee4094b2c..4106e741247 100644 --- a/boards/sim/sim/sim/scripts/Make.defs +++ b/boards/sim/sim/sim/scripts/Make.defs @@ -252,7 +252,7 @@ CMODULEFLAGS = $(CFLAGS) -fvisibility=hidden # -fno-pic to avoid GOT relocations CMODULEFLAGS += -fno-pic -ifeq ($(CONFIG_LIBC_ARCH_ELF_64BIT),y) +ifeq ($(CONFIG_ARCH_64BIT),y) # For amd64: # It seems macOS/x86_64 loads the program text around 00000001_xxxxxxxx. # The gcc default (-mcmodel=small) would produce out-of-range 32-bit @@ -286,7 +286,7 @@ CXXELFFLAGS = $(CXXFLAGS) -fvisibility=hidden # -fno-pic to avoid GOT relocations CELFFLAGS += -fno-pic CXXELFFLAGS += -fno-pic -ifeq ($(CONFIG_LIBC_ARCH_ELF_64BIT),y) +ifeq ($(CONFIG_ARCH_64BIT),y) # See the comment on CMODULEFLAGS above. CELFFLAGS += -mcmodel=large CXXELFFLAGS += -mcmodel=large diff --git a/include/elf.h b/include/elf.h index 649095f74f1..a3d6dc8f927 100644 --- a/include/elf.h +++ b/include/elf.h @@ -35,7 +35,7 @@ /* NOTE: elf64.h and elf32.h refer EI_NIDENT defined above */ -#ifdef CONFIG_LIBC_ARCH_ELF_64BIT +#ifdef CONFIG_ARCH_64BIT # include #else # include diff --git a/libs/libc/machine/Kconfig b/libs/libc/machine/Kconfig index 4fb304df532..f89a42159f9 100644 --- a/libs/libc/machine/Kconfig +++ b/libs/libc/machine/Kconfig @@ -144,11 +144,6 @@ config LIBC_ARCH_ELF bool default n -config LIBC_ARCH_ELF_64BIT - bool - default n - depends on LIBC_ARCH_ELF - config LIBC_PREVENT_STRING bool default n diff --git a/libs/libc/machine/arm64/CMakeLists.txt b/libs/libc/machine/arm64/CMakeLists.txt index a1afacabe23..ae2c50f8562 100644 --- a/libs/libc/machine/arm64/CMakeLists.txt +++ b/libs/libc/machine/arm64/CMakeLists.txt @@ -22,7 +22,7 @@ set(SRCS) -if(CONFIG_LIBC_ARCH_ELF_64BIT) +if(CONFIG_LIBC_ARCH_ELF) list(APPEND SRCS arch_elf.c) endif() diff --git a/libs/libc/machine/arm64/Make.defs b/libs/libc/machine/arm64/Make.defs index 1c679c7d94d..aca2a54554b 100644 --- a/libs/libc/machine/arm64/Make.defs +++ b/libs/libc/machine/arm64/Make.defs @@ -20,7 +20,7 @@ # ############################################################################ -ifeq ($(CONFIG_LIBC_ARCH_ELF_64BIT),y) +ifeq ($(CONFIG_LIBC_ARCH_ELF),y) CSRCS += arch_elf.c endif diff --git a/libs/libc/machine/risc-v/arch_elf.c b/libs/libc/machine/risc-v/arch_elf.c index 3d996feef4a..07bcd10950c 100644 --- a/libs/libc/machine/risc-v/arch_elf.c +++ b/libs/libc/machine/risc-v/arch_elf.c @@ -46,11 +46,11 @@ /* ELF32 and ELF64 definitions */ -#ifdef CONFIG_LIBC_ARCH_ELF_64BIT +#ifdef CONFIG_ARCH_64BIT # define ARCH_ELF_TYP_STR "64" -#else /* !CONFIG_LIBC_ARCH_ELF_64BIT */ +#else /* !CONFIG_ARCH_64BIT */ # define ARCH_ELF_TYP_STR "32" -#endif /* CONFIG_LIBC_ARCH_ELF_64BIT */ +#endif /* CONFIG_ARCH_64BIT */ /**************************************************************************** * Private Data Types @@ -275,7 +275,7 @@ static uintptr_t _find_hi20(void *arch_data, uintptr_t hi20_rel) * ****************************************************************************/ -#ifdef CONFIG_LIBC_ARCH_ELF_64BIT +#ifdef CONFIG_ARCH_64BIT static inline bool _valid_hi20_imm(long imm_hi) { /* 32-bit sign extend imm_hi and compare with the original value */