SPM: Add MVE support for GNUARM toolchain
Add MVE support based on FPU.
1. Enable FPU usage by CONFIG_TFM_ENABLE_FP.
2. Enable Integer Vector Extension (MVE-I) usage by
CONFIG_TFM_ENABLE_MVE.
3. Enable Floating-point Vector Extension (MVE-F) support by
CONFIG_TFM_ENABLE_MVE_FP.
4. Rename CONFIG_TFM_ENABLE_FPU to CONFIG_TFM_ENABLE_CP10CP11
to cover both coprocessor types.
5. TFM_SYSTEM_MVE deleted.
Change-Id: Iece96c2e49c879fcde0af26f28480cf13ffc7028
Signed-off-by: Gabor Toth <gabor.toth@arm.com>
diff --git a/toolchain_GNUARM.cmake b/toolchain_GNUARM.cmake
index f9c620a..8ddeddc 100644
--- a/toolchain_GNUARM.cmake
+++ b/toolchain_GNUARM.cmake
@@ -88,14 +88,22 @@
endif()
endif()
if(GCC_VERSION VERSION_GREATER_EQUAL "8.0.0")
- if (DEFINED CONFIG_TFM_FP)
- if(CONFIG_TFM_FP STREQUAL "0" AND
- NOT TFM_SYSTEM_ARCHITECTURE STREQUAL "armv6-m")
- string(APPEND CMAKE_SYSTEM_PROCESSOR "+nofp")
- endif()
+ if(NOT CONFIG_TFM_ENABLE_FP AND
+ NOT TFM_SYSTEM_ARCHITECTURE STREQUAL "armv6-m")
+ string(APPEND CMAKE_SYSTEM_PROCESSOR "+nofp")
endif()
endif()
endif()
+
+ if(TFM_SYSTEM_ARCHITECTURE STREQUAL "armv8.1-m.main")
+ if(NOT CONFIG_TFM_ENABLE_MVE)
+ string(APPEND CMAKE_SYSTEM_PROCESSOR "+nomve")
+ endif()
+ if(NOT CONFIG_TFM_ENABLE_MVE_FP)
+ string(APPEND CMAKE_SYSTEM_PROCESSOR "+nomve.fp")
+ endif()
+ endif()
+
endif()
# CMAKE_SYSTEM_ARCH variable is not a built-in CMAKE variable. It is used to
@@ -103,6 +111,15 @@
# The variable name is choosen to align with the ARMCLANG toolchain file.
set(CMAKE_SYSTEM_ARCH ${TFM_SYSTEM_ARCHITECTURE})
+ if(TFM_SYSTEM_ARCHITECTURE STREQUAL "armv8.1-m.main")
+ if(CONFIG_TFM_ENABLE_MVE)
+ string(APPEND CMAKE_SYSTEM_ARCH "+mve")
+ endif()
+ if(CONFIG_TFM_ENABLE_MVE_FP)
+ string(APPEND CMAKE_SYSTEM_ARCH "+mve.fp")
+ endif()
+ endif()
+
if (DEFINED TFM_SYSTEM_DSP)
# +nodsp modifier is only supported from GCC version 8.
if(GCC_VERSION VERSION_GREATER_EQUAL "8.0.0")
@@ -115,12 +132,11 @@
endif()
if(GCC_VERSION VERSION_GREATER_EQUAL "8.0.0")
- if (DEFINED CONFIG_TFM_FP)
- if(CONFIG_TFM_FP STREQUAL "hard")
- string(APPEND CMAKE_SYSTEM_ARCH "+fp")
- endif()
+ if(CONFIG_TFM_ENABLE_FP)
+ string(APPEND CMAKE_SYSTEM_ARCH "+fp")
endif()
endif()
+
endmacro()
macro(tfm_toolchain_reload_compiler)
@@ -161,9 +177,13 @@
set(BL2_COMPILER_CP_FLAG -mfloat-abi=soft)
- if (CONFIG_TFM_FP STREQUAL "hard")
- set(COMPILER_CP_FLAG -mfloat-abi=hard -mfpu=${CONFIG_TFM_FP_ARCH})
- set(LINKER_CP_OPTION -mfloat-abi=hard -mfpu=${CONFIG_TFM_FP_ARCH})
+ if (CONFIG_TFM_FLOAT_ABI STREQUAL "hard")
+ set(COMPILER_CP_FLAG -mfloat-abi=hard)
+ set(LINKER_CP_OPTION -mfloat-abi=hard)
+ if (CONFIG_TFM_ENABLE_FP OR CONFIG_TFM_ENABLE_MVE_FP)
+ set(COMPILER_CP_FLAG -mfloat-abi=hard -mfpu=${CONFIG_TFM_FP_ARCH})
+ set(LINKER_CP_OPTION -mfloat-abi=hard -mfpu=${CONFIG_TFM_FP_ARCH})
+ endif()
else()
set(COMPILER_CP_FLAG -mfloat-abi=soft)
set(LINKER_CP_OPTION -mfloat-abi=soft)