diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index bc581f43f7d..b6ccafafd65 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -348,13 +348,26 @@ config ARCH_HAVE_FPU bool default n +config ARCH_HAVE_DPFPU + bool + default n + 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. + 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 ARMV7M_MPU bool "MPU support" diff --git a/arch/arm/src/armv7-m/Kconfig b/arch/arm/src/armv7-m/Kconfig index 1d95be0df75..df4b1520071 100644 --- a/arch/arm/src/armv7-m/Kconfig +++ b/arch/arm/src/armv7-m/Kconfig @@ -23,6 +23,24 @@ config ARMV7M_DCACHE default n depends on ARMV7M_HAVE_DCACHE +config ARMV7M_HAVE_ITCM + bool + default n + +config ARMV7M_HAVE_DTCM + bool + default n + +config ARMV7M_ITCM + bool "Use ITCM" + default n + depends on ARMV7M_HAVE_ITCM + +config ARMV7M_DTCM + bool "Use DTCM" + default n + depends on ARMV7M_HAVE_DTCM + choice prompt "Toolchain Selection" default ARMV7M_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS diff --git a/arch/arm/src/armv7-m/Toolchain.defs b/arch/arm/src/armv7-m/Toolchain.defs index e571ee68a68..26d26538ec9 100644 --- a/arch/arm/src/armv7-m/Toolchain.defs +++ b/arch/arm/src/armv7-m/Toolchain.defs @@ -128,7 +128,11 @@ ifeq ($(CONFIG_ARCH_CORTEXM4),y) TOOLCHAIN_MTUNE := -mtune=cortex-m4 TOOLCHAIN_MARCH := -march=armv7e-m ifeq ($(CONFIG_ARCH_FPU),y) + ifeq ($(CONFIG_ARCH_DPFPU),y) + TOOLCHAIN_MFLOAT := -mfpu=fpv4-sp -mfloat-abi=hard + else TOOLCHAIN_MFLOAT := -mfpu=fpv4-sp-d16 -mfloat-abi=hard + endif else TOOLCHAIN_MFLOAT := -mfloat-abi=soft endif @@ -140,9 +144,13 @@ else ifeq ($(CONFIG_ARCH_CORTEXM7),y) TOOLCHAIN_MCPU := -mcpu=cortex-m4 TOOLCHAIN_MTUNE := -mtune=cortex-m4 TOOLCHAIN_MARCH := -march=armv7e-m + # FIXME: Most tools do not yet fpv5 FPU types either ifeq ($(CONFIG_ARCH_FPU),y) - # TOOLCHAIN_MFLOAT := -mfpu=fpv5-sp-d16 -mfloat-abi=hard # Single precision + ifeq ($(CONFIG_ARCH_DPFPU),y) TOOLCHAIN_MFLOAT := -mfpu=fpv5-d16 -mfloat-abi=hard + else + TOOLCHAIN_MFLOAT := -mfpu=fpv5-sp-d16 -mfloat-abi=hard + endif else TOOLCHAIN_MFLOAT := -mfloat-abi=soft endif diff --git a/arch/arm/src/samv7/Kconfig b/arch/arm/src/samv7/Kconfig index b424977adc7..5215ad1cb92 100644 --- a/arch/arm/src/samv7/Kconfig +++ b/arch/arm/src/samv7/Kconfig @@ -54,8 +54,12 @@ endchoice # Atmel SAMV7 Chip Selection config ARCH_CHIP_SAMV71 bool default n + select ARCH_HAVE_FPU + select ARCH_HAVE_DPFPU # REVISIT select ARMV7M_HAVE_ICACHE select ARMV7M_HAVE_DCACHE + select ARMV7M_HAVE_ITCM + select ARMV7M_HAVE_DTCM config ARCH_CHIP_SAMV71Q bool