如何阻止gcc在较新的ARM cpu上发出swap {b}?

时间:2015-02-17 03:21:56

标签: c++ linux assembly arm

我在Raspberry Pi 2上编译DCP-O-Matic并收到以下警告:

/tmp/ccu6rDcg.s: Assembler messages:
/tmp/ccu6rDcg.s:4208: Warning: swp{b} use is deprecated for ARMv6 and ARMv7

我已将“-mcpu = cortex-a8 -mfpu = neon”传递给编译器,但我仍然收到警告。我很确定Linux内核中有一些东西会使这个警告无关紧要,但我真的想解决这个问题。

这个post有很多好的信息,但我似乎找不到合适的开关来阻止警告。我已经使用swp {b}验证了没有明确的汇编程序代码。

有人可以推荐清除这些警告的最佳方法吗?我真的很喜欢编译警告。 ;)我想如果有警告,就有一个修复。

为了澄清,我对如何让gcc工具链发出正确的LDREX / STREX指令感兴趣,而不是交换{b}。

1 个答案:

答案 0 :(得分:1)

您可以使用-mno-warn-deprecated禁用警告。快速看一下源代码并没有显示内联asm的使用,所以也许它在某个库的头文件中。

顺便提一下,Raspberry Pi 2使用了Cortex-A7处理器,如果使用-mcpu = cortex-a7而不是-mcpu = cortex-a8进行构建,性能会更好。