MIPS32 ISA определяет следующий формат инструкции sync:
SYNC (stype = 0 implied)
SYNC stype
здесь тип может быть SYNC_WMB (SYNC 4), SYNC_MB (SYNC 16) и т. д. Во встроенном ассемблере я могу использовать синхронизацию по умолчанию: __asm__ volatile ("sync" ::);
.
Но если я напишу что-то вроде __asm__ volatile ("sync 0x10" ::)
, это не скомпилируется:
Error: illegal operands 'sync 0x10'
То же самое, если передать параметр -mips32r2
в gcc.
Итак, вопрос: как использовать инструкции SYNC_* (WYNC_WMB, SYNC_MB, SYNC_ACQUIRE, ...) из встроенной сборки GCC?