SPM: Enable FP usage in NSPE for gnu arm embedded toolchain
1. Enable FP usage in SPE and NSPE by same parameter: CONFIG_TFM_FP
(soft and hard ABI types) for IPC model.
It doesn't support LIBRARY or SFN model at current stage.
2. Enable lazy stacking by CONFIG_TFM_LAZY_STACKING (OFF, ON).
Note: Same FP ABI type shall be used for SPE and NSPE at the same
time, for FP design in Armv8.0-M architecture requires consistent
FP ABI types between SPE and NSPE.
Signed-off-by: Feder Liang <Feder.Liang@arm.com>
Change-Id: I186d55d0a9d47b8d49693c919a6fcd1e061dc36d
diff --git a/platform/CMakeLists.txt b/platform/CMakeLists.txt
index 126e69d..c39585e 100755
--- a/platform/CMakeLists.txt
+++ b/platform/CMakeLists.txt
@@ -83,8 +83,10 @@
TFM_SPM_LOG_LEVEL=${TFM_SPM_LOG_LEVEL}
$<$<BOOL:${TFM_SPM_LOG_RAW_ENABLED}>:TFM_SPM_LOG_RAW_ENABLED>
$<$<BOOL:${OTP_NV_COUNTERS_RAM_EMULATION}>:OTP_NV_COUNTERS_RAM_EMULATION>
- CONFIG_TFM_SPE_FP=${CONFIG_TFM_SPE_FP}
- $<$<BOOL:${CONFIG_TFM_LAZY_STACKING_SPE}>:CONFIG_TFM_LAZY_STACKING_SPE>
+ # CONFIG_TFM_FP
+ $<$<STREQUAL:${CONFIG_TFM_FP},hard>:CONFIG_TFM_FP=2>
+ $<$<STREQUAL:${CONFIG_TFM_FP},soft>:CONFIG_TFM_FP=0>
+ $<$<BOOL:${CONFIG_TFM_LAZY_STACKING}>:CONFIG_TFM_LAZY_STACKING>
PRIVATE
$<$<BOOL:${SYMMETRIC_INITIAL_ATTESTATION}>:SYMMETRIC_INITIAL_ATTESTATION>
$<$<OR:$<VERSION_GREATER:${TFM_ISOLATION_LEVEL},1>,$<STREQUAL:"${TEST_PSA_API}","IPC">>:CONFIG_TFM_ENABLE_MEMORY_PROTECT>
@@ -118,10 +120,19 @@
)
target_compile_definitions(platform_ns
+ PUBLIC
+ # CONFIG_TFM_FP
+ $<$<STREQUAL:${CONFIG_TFM_FP},hard>:CONFIG_TFM_FP=2>
+ $<$<STREQUAL:${CONFIG_TFM_FP},soft>:CONFIG_TFM_FP=0>
PRIVATE
$<$<BOOL:${TEST_NS_SLIH_IRQ}>:TEST_NS_SLIH_IRQ>
)
+target_compile_options(platform_ns
+ PUBLIC
+ ${COMPILER_CP_FLAG}
+)
+
#========================= Platform BL2 =======================================#
if(BL2)
#TODO import policy
diff --git a/platform/ext/target/arm/musca_s1/CMakeLists.txt b/platform/ext/target/arm/musca_s1/CMakeLists.txt
index dde378e..4602e9e 100644
--- a/platform/ext/target/arm/musca_s1/CMakeLists.txt
+++ b/platform/ext/target/arm/musca_s1/CMakeLists.txt
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+# Copyright (c) 2020-2022, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -44,7 +44,16 @@
)
target_link_libraries(CMSIS_5_tfm_ns
INTERFACE
- CMSIS_5_RTX_V8MMN
+ $<$<STREQUAL:${CONFIG_TFM_FP},hard>:CMSIS_5_RTX_V8MMFN>
+ $<$<STREQUAL:${CONFIG_TFM_FP},soft>:CMSIS_5_RTX_V8MMN>
+ )
+ target_compile_options(tfm_ns
+ PUBLIC
+ ${COMPILER_CP_FLAG}
+ )
+ target_link_options(tfm_ns
+ PUBLIC
+ ${LINKER_CP_OPTION}
)
endif()
diff --git a/platform/include/tfm_plat_ns.h b/platform/include/tfm_plat_ns.h
index 3b689b4..1e35894 100644
--- a/platform/include/tfm_plat_ns.h
+++ b/platform/include/tfm_plat_ns.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -16,4 +16,11 @@
int32_t tfm_ns_platform_init(void);
+/**
+ * \brief Coprocessor initialization.
+ *
+ * \return ARM_DRIVER_OK if the initialization succeeds
+*/
+int32_t tfm_ns_cp_init(void);
+
#endif /* __TFM_PLAT_NS_H__ */