我已将 GCC 编译器从 10.3 更新到 11.1。我用它来编译带有 FPU 的目标 CPU cortex-m4。
在我的代码中,有很多函数标记为中断,__attribute__((interrupt))
例如:
__attribute__((interrupt)) void systick_isr_vector() {
}
不幸的是,更新后,编译器已经开始为中断属性生成警告
../unittests_entry.cpp:138:52: warning: FP registers might be clobbered despite 'interrupt' attribute: compile with '-mgeneral-regs-only' [-Wattributes]
138 | __attribute__((interrupt)) void systick_isr_vector() {
|
这里出现的问题是如何关闭此警告。我不想禁用-Wattributes
我只想针对这种特殊情况禁用警告。
还有什么为什么 GCC 试图禁止在中断服务程序上使用 FPU 上下文?它在 ARMv7m 架构的中断上下文中是允许的,并且在硬件中支持。
我想这是GCC中的一个错误?