diff --git a/arch/Kconfig b/arch/Kconfig index 77db3d3fec4..193d8602733 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -195,6 +195,17 @@ config ARCH_HAVE_VFORK bool default n +config ARCH_HAVE_FPU + bool + default n + +config ARCH_HAVE_DPFPU + bool + default n + +config ARCH_HAVE_LAZYFPU + bool + config ARCH_HAVE_MMU bool default n @@ -248,6 +259,22 @@ config ARCH_GLOBAL_IRQDISABLE interrupts as well so that no context switches can occur on the CPU that disabled "local" interrupts. +config ARCH_FPU + bool "FPU support" + default y + depends on ARCH_HAVE_FPU + ---help--- + Build in support for the Floating Point Unit (FPU). + Check your chip specifications first; not all chips support the FPU. + +config ARCH_DPFPU + bool "Double precision FPU support" + default y + depends on ARCH_FPU && ARCH_HAVE_DPFPU + ---help--- + Enable toolchain support for double precision (64-bit) floating + point if both the toolchain and the hardware support it. + config ARCH_USE_MMU bool "Enable MMU" default n diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 1b30cdb22bc..80b6733cb60 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -562,14 +562,6 @@ config ARCH_CORTEXR4 select ARCH_HAVE_TESTSET select ARCH_HAVE_COHERENT_DCACHE if ELF || MODULE -config ARCH_CORTEXR4F - bool - default n - select ARCH_HAVE_MPU - select ARCH_HAVE_FPU - select ARCH_HAVE_TESTSET - select ARCH_HAVE_COHERENT_DCACHE if ELF || MODULE - config ARCH_CORTEXR5 bool default n @@ -577,14 +569,6 @@ config ARCH_CORTEXR5 select ARCH_HAVE_TESTSET select ARCH_HAVE_COHERENT_DCACHE if ELF || MODULE -config ARCH_CORTEXR5F - bool - default n - select ARCH_HAVE_MPU - select ARCH_HAVE_FPU - select ARCH_HAVE_TESTSET - select ARCH_HAVE_COHERENT_DCACHE if ELF || MODULE - config ARCH_CORTEXR7 bool default n @@ -592,21 +576,13 @@ config ARCH_CORTEXR7 select ARCH_HAVE_TESTSET select ARCH_HAVE_COHERENT_DCACHE if ELF || MODULE -config ARCH_CORTEXR7F - bool - default n - select ARCH_HAVE_MPU - select ARCH_HAVE_FPU - select ARCH_HAVE_TESTSET - select ARCH_HAVE_COHERENT_DCACHE if ELF || MODULE - config ARCH_FAMILY string default "arm" if ARCH_ARM7TDMI || ARCH_ARM926EJS || ARCH_ARM920T default "armv6-m" if ARCH_CORTEXM0 default "armv7-a" if ARCH_CORTEXA5 || ARCH_CORTEXA8 || ARCH_CORTEXA9 default "armv7-m" if ARCH_CORTEXM3 || ARCH_CORTEXM4 || ARCH_CORTEXM7 - default "armv7-r" if ARCH_CORTEXR4 || ARCH_CORTEXR4F || ARCH_CORTEXR5 || ARCH_CORTEXR5F || ARCH_CORTEX74 || ARCH_CORTEXR7F + default "armv7-r" if ARCH_CORTEXR4 || ARCH_CORTEXR5 || ARCH_CORTEXR7 config ARCH_CHIP string @@ -647,34 +623,6 @@ config ARCH_CHIP default "tms570" if ARCH_CHIP_TMS570 default "xmc4" if ARCH_CHIP_XMC4 -config ARCH_HAVE_FPU - bool - default n - -config ARCH_HAVE_DPFPU - bool - default n - -config ARCH_HAVE_LAZYFPU - bool - -config ARCH_FPU - bool "FPU support" - default y - depends on ARCH_HAVE_FPU - ---help--- - Build in support for the ARM Cortex-M4 Floating Point Unit (FPU). - Check your chip specifications first; not all Cortex-M4 chips - support the FPU. - -config ARCH_DPFPU - bool "Double precision FPU support" - default y - depends on ARCH_FPU && ARCH_HAVE_DPFPU - ---help--- - Enable toolchain support for double precision (64-bit) floating - point if both the toolchain and the hardware support it. - config ARCH_HAVE_TRUSTZONE bool default n @@ -800,7 +748,7 @@ endif if ARCH_CORTEXM3 || ARCH_CORTEXM4 || ARCH_CORTEXM7 source arch/arm/src/armv7-m/Kconfig endif -if ARCH_CORTEXR4 || ARCH_CORTEXR4F || ARCH_CORTEXR5 || ARCH_CORTEXR5F || ARCH_CORTEX74 || ARCH_CORTEXR7F +if ARCH_CORTEXR4 || ARCH_CORTEXR5 || ARCH_CORTEXR7 source arch/arm/src/armv7-r/Kconfig endif if ARCH_ARM7TDMI || ARCH_ARM920T || ARCH_ARM926EJS || ARCH_ARM1136J || ARCH_ARM1156T2 || ARCH_ARM1176JZ diff --git a/arch/arm/include/irq.h b/arch/arm/include/irq.h index c771de7e1d0..ee4cc32bc8e 100644 --- a/arch/arm/include/irq.h +++ b/arch/arm/include/irq.h @@ -59,9 +59,8 @@ #if defined(CONFIG_ARCH_CORTEXA5) || defined(CONFIG_ARCH_CORTEXA8) || \ defined(CONFIG_ARCH_CORTEXA9) # include -#elif defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR4F) || \ - defined(CONFIG_ARCH_CORTEXR5) || defined(CONFIG_ARCH_CORTEXR5F) || \ - defined(CONFIG_ARCH_CORTEXR7) || defined(CONFIG_ARCH_CORTEXR7F) +#elif defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR5) || \ + defined(CONFIG_ARCH_CORTEXR7) # include #elif defined(CONFIG_ARCH_CORTEXM3) || defined(CONFIG_ARCH_CORTEXM4) || \ defined(CONFIG_ARCH_CORTEXM7) diff --git a/arch/arm/include/spinlock.h b/arch/arm/include/spinlock.h index 4a129faccab..858e4ceb02b 100644 --- a/arch/arm/include/spinlock.h +++ b/arch/arm/include/spinlock.h @@ -51,9 +51,8 @@ #if defined(CONFIG_ARCH_CORTEXA5) || defined(CONFIG_ARCH_CORTEXA8) || \ defined(CONFIG_ARCH_CORTEXA9) # include -#elif defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR4F) || \ - defined(CONFIG_ARCH_CORTEXR5) || defined(CONFIG_ARCH_CORTEXR5F) || \ - defined(CONFIG_ARCH_CORTEXR7) || defined(CONFIG_ARCH_CORTEXR7F) +#elif defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR5) || \ + defined(CONFIG_ARCH_CORTEXR7) # include #elif defined(CONFIG_ARCH_CORTEXM3) || defined(CONFIG_ARCH_CORTEXM4) || \ defined(CONFIG_ARCH_CORTEXM7) diff --git a/arch/arm/include/syscall.h b/arch/arm/include/syscall.h index d309bb12328..beafe171cd2 100644 --- a/arch/arm/include/syscall.h +++ b/arch/arm/include/syscall.h @@ -49,9 +49,8 @@ #if defined(CONFIG_ARCH_CORTEXA5) || defined(CONFIG_ARCH_CORTEXA8) || \ defined(CONFIG_ARCH_CORTEXA9) # include -#elif defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR4F) || \ - defined(CONFIG_ARCH_CORTEXR5) || defined(CONFIG_ARCH_CORTEXR5F) || \ - defined(CONFIG_ARCH_CORTEXR7) || defined(CONFIG_ARCH_CORTEXR7F) +#elif defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR5) || \ + defined(CONFIG_ARCH_CORTEXR7) # include #elif defined(CONFIG_ARCH_CORTEXM3) || defined(CONFIG_ARCH_CORTEXM4) || \ defined(CONFIG_ARCH_CORTEXM7) diff --git a/arch/arm/src/Makefile b/arch/arm/src/Makefile index d6cc7f5f3ce..0a94b1751d7 100644 --- a/arch/arm/src/Makefile +++ b/arch/arm/src/Makefile @@ -45,16 +45,10 @@ else ifeq ($(CONFIG_ARCH_CORTEXA9),y) # Cortex-A9 is ARMv7-A ARCH_SUBDIR = armv7-a else ifeq ($(CONFIG_ARCH_CORTEXR4),y) # Cortex-R4 is ARMv7-R ARCH_SUBDIR = armv7-r -else ifeq ($(CONFIG_ARCH_CORTEXR4F),y) # Cortex-R4F is ARMv7-R -ARCH_SUBDIR = armv7-r else ifeq ($(CONFIG_ARCH_CORTEXR5),y) # Cortex-R5 is ARMv7-R ARCH_SUBDIR = armv7-r -else ifeq ($(CONFIG_ARCH_CORTEXR5F),y) # Cortex-R5F is ARMv7-R -ARCH_SUBDIR = armv7-r else ifeq ($(CONFIG_ARCH_CORTEXR7),y) # Cortex-R7 is ARMv7-R ARCH_SUBDIR = armv7-r -else ifeq ($(CONFIG_ARCH_CORTEXR7F),y) # Cortex-R7F is ARMv7-R -ARCH_SUBDIR = armv7-r else ifeq ($(CONFIG_ARCH_CORTEXM3),y) # Cortex-M3 is ARMv7-M ARCH_SUBDIR = armv7-m else ifeq ($(CONFIG_ARCH_CORTEXM4),y) # Cortex-M4 is ARMv7E-M diff --git a/arch/arm/src/common/up_internal.h b/arch/arm/src/common/up_internal.h index 5aa16f2f213..dcd12713017 100644 --- a/arch/arm/src/common/up_internal.h +++ b/arch/arm/src/common/up_internal.h @@ -119,11 +119,10 @@ * floating point register save/restore. */ -#elif defined(CONFIG_ARCH_CORTEXA5) || defined(CONFIG_ARCH_CORTEXA8) || \ +#elif defined(CONFIG_ARCH_CORTEXA5) || defined(CONFIG_ARCH_CORTEXA8) || \ defined(CONFIG_ARCH_CORTEXA9) || \ - defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR4F) || \ - defined(CONFIG_ARCH_CORTEXR5) || defined(CONFIG_ARCH_CORTEXR5F) || \ - defined(CONFIG_ARCH_CORTEXR7) || defined(CONFIG_ARCH_CORTEXR7F) + defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR5) || \ + defined(CONFIG_ARCH_CORTEXR7) /* If the floating point unit is present and enabled, then save the * floating point registers as well as normal ARM registers. @@ -371,11 +370,10 @@ int up_memfault(int irq, FAR void *context, FAR void *arg); * (but should be back-ported to the ARM7 and ARM9 families). */ -#elif defined(CONFIG_ARCH_CORTEXA5) || defined(CONFIG_ARCH_CORTEXA8) || \ +#elif defined(CONFIG_ARCH_CORTEXA5) || defined(CONFIG_ARCH_CORTEXA8) || \ defined(CONFIG_ARCH_CORTEXA9) || \ - defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR4F) || \ - defined(CONFIG_ARCH_CORTEXR5) || defined(CONFIG_ARCH_CORTEXR5F) || \ - defined(CONFIG_ARCH_CORTEXR7) || defined(CONFIG_ARCH_CORTEXR7F) + defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR5) || \ + defined(CONFIG_ARCH_CORTEXR7) /* Interrupt acknowledge and dispatch */ diff --git a/arch/arm/src/common/up_vfork.c b/arch/arm/src/common/up_vfork.c index 85c2e4902e5..63de9163adf 100644 --- a/arch/arm/src/common/up_vfork.c +++ b/arch/arm/src/common/up_vfork.c @@ -243,9 +243,8 @@ pid_t up_vfork(const struct vfork_s *context) # endif -#elif defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR4F) || \ - defined(CONFIG_ARCH_CORTEXR5) || defined(CONFIG_ARCH_CORTEXR5F) || \ - defined(CONFIG_ARCH_CORTEXR7) || defined(CONFIG_ARCH_CORTEXR7F) +#elif defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR5) || \ + defined(CONFIG_ARCH_CORTEXR7) # ifdef CONFIG_BUILD_PROTECTED child->cmn.xcp.syscall[index].cpsr = diff --git a/arch/arm/src/tms570/Kconfig b/arch/arm/src/tms570/Kconfig index 662c840333a..949d3ec9530 100644 --- a/arch/arm/src/tms570/Kconfig +++ b/arch/arm/src/tms570/Kconfig @@ -55,27 +55,32 @@ config ARCH_CHIP_TMS570LS0432PZ config ARCH_CHIP_TMS570LS0714PZ bool "TI TMS570LS0714PZ" - select ARCH_CORTEXR4F + select ARCH_CORTEXR4 + select ARCH_HAVE_FPU select TMS570_HAVE_SCI2 config ARCH_CHIP_TMS570LS0714PGE bool "TI TMS570LS0714PGE" - select ARCH_CORTEXR4F + select ARCH_CORTEXR4 + select ARCH_HAVE_FPU select TMS570_HAVE_SCI2 config ARCH_CHIP_TMS570LS0714ZWT bool "TI TMS570LS0714ZWT" - select ARCH_CORTEXR4F + select ARCH_CORTEXR4 + select ARCH_HAVE_FPU select TMS570_HAVE_SCI2 config ARCH_CHIP_TMS570LS1227ZWT bool "TI TMS570LS1227ZWT" - select ARCH_CORTEXR4F + select ARCH_CORTEXR4 + select ARCH_HAVE_FPU select TMS570_HAVE_SCI2 config ARCH_CHIP_TMS570LS3137ZWT bool "TI TMS570LS3137ZWT" - select ARCH_CORTEXR4F + select ARCH_CORTEXR4 + select ARCH_HAVE_FPU select TMS570_HAVE_SCI2 select TMS570_HAVE_SPI1 select TMS570_HAVE_SPI2 diff --git a/arch/or1k/src/mor1kx/Kconfig b/arch/or1k/src/mor1kx/Kconfig index 697d82b0f3a..e3ef2f9dbaf 100644 --- a/arch/or1k/src/mor1kx/Kconfig +++ b/arch/or1k/src/mor1kx/Kconfig @@ -30,10 +30,6 @@ config OR1K_DCACHE bool "Enable Data Cache" default n -config OR1K_FPU - bool "Enable Floating Point Unit" - default n - config OR1K_MMU bool "Enable MMU" default n diff --git a/libs/libc/machine/arm/Kconfig b/libs/libc/machine/arm/Kconfig index 5be3f8d3475..f263aa80b7e 100644 --- a/libs/libc/machine/arm/Kconfig +++ b/libs/libc/machine/arm/Kconfig @@ -11,7 +11,7 @@ if ARCH_CORTEXA5 || ARCH_CORTEXA8 || ARCH_CORTEXA9 source libs/libc/machine/arm/armv7-a/Kconfig endif -if ARCH_CORTEXR4 || ARCH_CORTEXR4F || ARCH_CORTEXR5 || ARCH_CORTEXR5F || ARCH_CORTEXR7 || ARCH_CORTEXR7F +if ARCH_CORTEXR4 || ARCH_CORTEXR5 || ARCH_CORTEXR7 source libs/libc/machine/arm/armv7-r/Kconfig endif diff --git a/libs/libc/machine/arm/Make.defs b/libs/libc/machine/arm/Make.defs index 49e3ba41d61..6256ca29e38 100644 --- a/libs/libc/machine/arm/Make.defs +++ b/libs/libc/machine/arm/Make.defs @@ -47,16 +47,10 @@ else ifeq ($(CONFIG_ARCH_CORTEXA9),y) # Cortex-A9 is ARMv7-A include ${TOPDIR}/libs/libc/machine/arm/armv7-a/Make.defs else ifeq ($(CONFIG_ARCH_CORTEXR4),y) # Cortex-R4 is ARMv7-R include ${TOPDIR}/libs/libc/machine/arm/armv7-r/Make.defs -else ifeq ($(CONFIG_ARCH_CORTEXR4F),y) # Cortex-R4F is ARMv7-R -include ${TOPDIR}/libs/libc/machine/arm/armv7-r/Make.defs else ifeq ($(CONFIG_ARCH_CORTEXR5),y) # Cortex-R5 is ARMv7-R include ${TOPDIR}/libs/libc/machine/arm/armv7-r/Make.defs -else ifeq ($(CONFIG_ARCH_CORTEXR5F),y) # Cortex-R5F is ARMv7-R -include ${TOPDIR}/libs/libc/machine/arm/armv7-r/Make.defs else ifeq ($(CONFIG_ARCH_CORTEXR7),y) # Cortex-R7 is ARMv7-R include ${TOPDIR}/libs/libc/machine/arm/armv7-r/Make.defs -else ifeq ($(CONFIG_ARCH_CORTEXR7F),y) # Cortex-R7F is ARMv7-R -include ${TOPDIR}/libs/libc/machine/arm/armv7-r/Make.defs else ifeq ($(CONFIG_ARCH_CORTEXM0),y) # Cortex-M0 is ARMv6-M include ${TOPDIR}/libs/libc/machine/arm/armv6-m/Make.defs else ifeq ($(CONFIG_ARCH_CORTEXM3),y) # Cortex-M3 is ARMv7-M