ARM的内存屏障内在函数(类似于_mm_ * fence())

时间:2016-08-04 10:27:30

标签: gcc arm sse intrinsics sse2

我正在寻找与SSE / SSE2一起引入的Intel内存屏障内在函数_mm_lfence(), _mm_sfence(), _mm_mfence()的ARM模拟。

我正在使用gcc(4.8),但解决方案应该可以移植到其他编译器(icc,clang)。

来自此ARM文档

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka14552.html

我总结说我需要__dmb()__schedule_barrier()这样的内在函数,但是根据这个网站

https://answers.launchpad.net/gcc-arm-embedded/+question/258449

这些内在函数在gcc上不可用。

我不确定那里提到的CMSIS库,这会提供便携式解决方案吗?

我还想过将3个fence内在函数映射到__sync_synchronize()(完全内存屏障),但我也不确定这个内在函数的可移植性(并且没有用于读取或写入障碍的版本,仅这个完全障碍。)

感谢您的帮助!

0 个答案:

没有答案