ARM: Fix/Enhance Floating Point for ARM Cortex-M architecture #15074
Labels
area: ARM
ARM (32-bit) Architecture
Enhancement
Changes/Updates/Additions to existing features
Meta
A collection of features, enhancements or bugs
Milestone
This is an umbrella issue for fixing the floating point implementation for the ARM stack in Zephyr.
In high-level description, we will focus on the following issues
When only
CONFIG_FLOAT
is defined, FP co-processor is not shared between threads. Therefore, we won't be in need of stacking/un-stacking the FP context. The ESF structure can, additionally, skip reserving space for the FP context. FInally, we should not need to initialize the FP context in system boot. Changes will improve interrupt latency and memory consumption. (ARM: Cortex-M: enhance non-sharing floating point services #15115)Un-shared FP Service mode is vulnerable to accidental use of FP context by multiple entities. We could provide a test-mode for Ushared FP that detects multi-usage. See ARM: FPU: implement ASSERT-based testing of multi-usage in Unshared FP Services mode #15292
When
CONFIG_FLOAT
andCONFIG_FP_SHARING
are both defined, FP co-processor is shared between threads. The changes, here, will focus on increasing implementation robustness and performance (see ARM: Cortex-M: enhance Sharing Floating-Point Registers Mode #15964):Finally, we need to fix documentation of FP Services for ARM, to comply with the new, improved design (ARM: k_float_disable() as system call #15981).
The text was updated successfully, but these errors were encountered: