[libcpu][arm] fix: correct FPU stack initialization order and alignment on Cortex-A #10906
+20
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
修复了
libcpu/arm/cortex-a/common/stack.c中 FPU 上下文初始化顺序与汇编恢复顺序不一致的问题。原始实现的压栈顺序和栈对齐未与
context_gcc.S保持一致,导致在 -O2 优化、硬浮点 ABI (-mfloat-abi=hard) 环境下,执行包含浮点/NEON 指令的线程时出现 Data Abort 异常。
你的解决方案是什么 (what is your solution)
context_gcc.S的恢复顺序:D0–D15 → D16–D31 → FPSCR → FPEXC。
0x40000000) 以确保 FPU 处于启用状态。请提供验证的bsp和config (provide the config and bsp)
bsp/ft-m6678e(Cortex-A15 平台,基于 RT-Thread 5.1.0)测试验证 (testing and verification)
-O2 -Wall -mfloat-abi=hard -mfpu=neon-vfpv4sqrtf()调用。-O0) 与 Release 模式 (-O2) 均运行稳定;-fno-schedule-insns2workaround;影响范围 (impact scope)
RT_USING_FPU的 Cortex-A 系列处理器。后续计划 (follow-up)
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up