我怎样才能阻止 gcc 在较新的 ARM cpu 上发出 swap{b}?

How can I stop gcc from emitting swap{b} on newer ARM cpus?

我在 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 指令,而不是 swap{b}。

您可以使用 -mno-warn-deprecated 禁用警告。源代码的快速 grep 似乎没有显示内联汇编的使用,所以它可能在某个库的头文件中。

顺便说一句,Raspberry Pi 2 使用 Cortex-A7 处理器,如果使用 -mcpu=cortex-a7 而不是 -mcpu=cortex-a8 进行构建,应该会获得更好的性能。