MIPS32 ISA 为同步指令定义了以下格式:
SYNC (stype = 0 implied)
SYNC stype
在这里,stype 可能是 SYNC_WMB (SYNC 4)、SYNC_MB (SYNC 16) 等。在内联汇编器中,我可以使用默认同步:__asm__ volatile ("sync" ::);
。
但是,如果我写类似的东西__asm__ volatile ("sync 0x10" ::)
,它不会编译:
Error: illegal operands 'sync 0x10'
如果将-mips32r2
选项传递给 gcc,则相同。
所以,问题是:如何使用来自 GCC 内联汇编的 SYNC_* (WYNC_WMB, SYNC_MB, SYNC_ACQUIRE, ...) 指令?