diff options
| author | Frédéric Desbiens <[email protected]> | 2026-09-01 08:48:20 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-09-01 08:48:20 -0400 |
| commit | 57390fc0fea1cbef93f6d153cd14584cf71e7733 (patch) | |
| tree | b8d702a036c48608fd6f74dd74927e0c8587995d /common_modules/module_lib | |
| parent | a2800fef16c5e229b71ce45050bf5fcf19d84bb2 (diff) | |
Refused the Cortex-R52 VFP option without a hard float ABI (#686)
TX_R52_ENABLE_VFP with the default soft float ABI cannot build. The option
defines TX_ENABLE_VFP_SUPPORT, which enables the VMRS, VSTMDB and VLDMIA
blocks in the port assembly, and -mfloat-abi=soft leaves the assembler with
no FPU to accept them. The configuration fails with eight errors of the form
tx_thread_system_return.S:118: Error: selected processor does not support
`vmrs r4,FPSCR' in ARM mode
none of which mentions the float ABI, so a user has to reason from VMRS back
to the option that enabled it.
The guard that exists said otherwise. It warned that "the compiler will not
emit floating-point instructions, so the VFP context path will never be
exercised", which describes a build that succeeds and is merely pointless --
and then let configure finish, so the warning scrolled past well before the
assembler errors appeared.
It is now a FATAL_ERROR that names the fix, which is what the same file
already does six lines above for TX_R52_ENABLE_FIQ_NESTING without
TX_R52_ENABLE_FIQ. That combination is rejected for being "meaningless",
while this one, which cannot assemble at all, was only warned about. The
severities were the wrong way round. The option's definition also moves
below the check, so the block reads like the FIQ nesting one.
The ABI is not promoted to hard automatically. TX_R52_FLOAT_ABI is a cache
variable the user may have set deliberately, and silently overriding an
explicit choice is worse than refusing a combination that cannot work.
readme_threadx.txt carried the same claim, and its option list marked the FIQ
nesting dependency inline but not this one. Both corrected.
No regression test. Nothing in the tree asserts a configure-time failure --
there is no harness for it, and the sibling FIQ nesting guard has none either
-- so a test for this would have to introduce that mechanism for one case.
Verified by hand in both directions instead: the soft-ABI combination now
stops at configure with the message above, and the hard-ABI feature build
(VFP, FIQ, IRQ nesting, FIQ nesting) builds its eight images clean and passes
ctest 8/8 on the Armv8-R AEM FVP. scripts/check_gcc.sh passes unchanged; it
configures the Cortex-R52 CMake stage without TX_R52_ENABLE_VFP, so the new
branch is not on its path.
Assisted-by: Claude Code (Opus 5) <[email protected]>
Diffstat (limited to 'common_modules/module_lib')
0 files changed, 0 insertions, 0 deletions
