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、...)命令をどのように使用するかということです。