Floating-Point Support
TF-M adds several configuration flags to control Floating point (FP) 1 support in TF-M Secure Processing Environment (SPE). Non Secure Processing Environment (NSPE) is not allowed to access Floating Point Unit (FPU) 2 when FP support is enabled in SPE at current stage.
Support GNU Arm Embedded Toolchain 3.
Support FP Application Binary Interface (ABI) 4 types: software, hybird, hardware.
Support lazy stacking on/off.
Support Inter-Process Communication (IPC) 5 model in TF-M, and doesn’t support LIBRARY or SFN model.
Support Armv8-M 6 mainline or later.
Support isolation level 1,2,3.
Does not support use FPU in First-Level Interrupt Handling (FLIH) 7 at current stage.
Please refer to Arm musca S1 8 platform as a reference implementation when you enable FP support on your platforms.
Secure libraries are compiled with COMPILER_CP_FLAG
and linked with
LINKER_CP_OPTION
for different FP ABI types. All those libraries shall be
built with the same FP ABI type. Otherwise, linking errors may occur due to FP
ABI type conflicts.
If FP ABI types mismatch error is generated during build, pleae check whether
the library is compiled with COMPILER_CP_FLAG
.
Example:
target_compile_options(lib
PRIVATE
${COMPILER_CP_FLAG}
)
CMake configurations for FP support
The following CMake configurations configure COMPILER_CP_FLAG
in TF-M SPE.
CONFIG_TFM_SPE_FP
are used to configure FP ABI type for secure side.CONFIG_TFM_SPE_FP
0 (default)
Software
1
Hybird
2
Hardware
FP software ABI type is default for secure side in TF-M (mfloat-abi=soft).
CONFIG_TFM_LAZY_STACKING_SPE
is used to enable/disable lazy stacking feature from secure side. This feature is only valid for FP hardware or hybird option.CONFIG_TFM_LAZY_STACKING_SPE
Description
0FF
Disable lazy stacking
ON (default)
Enable lazy stacking
CONFIG_TFM_FP_ARCH
specifies which FP architecture is available on the target, valid for FP hardware or hybird option.FP architecture is processor dependent. For GNUARM compiler, example value are: auto, fpv5-d16, fpv5-sp-d16, etc.
Default value of
CONFIG_TFM_FP_ARCH
for GNUARM compiler is fpv5-sp-d16.This parameter shall be specified by platform. Please check compiler reference manual and processor hardware manual for more details to set correct FPU configuration for platform.
Reference
Copyright (c) 2021, Arm Limited. All rights reserved.