diff --git a/arch/Kconfig b/arch/Kconfig index 34b45f4951a..194eb3591c7 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -764,12 +764,22 @@ config FPU config FPU_SHARING bool "FPU register sharing" - depends on FPU + depends on FPU && MULTITHREADING + default y if ARM && ARMV7_M_ARMV8_M_FP help This option enables preservation of the hardware floating point registers across context switches to allow multiple threads to perform concurrent floating point operations. + Note that on Cortex-M processors with the floating point extension we + enable by default the FPU register sharing mode, as some GCC compilers + may activate a floating point context by generating FP instructions for + any thread, and that context must be preserved when switching such + threads in and out. The developers can still disable the FP sharing + mode in their application projects, and switch to Unshared FP registers + mode, if it is guaranteed that the image code does not generate FP + instructions outside the single thread context that is allowed to do so. + endmenu menu "Cache Options"