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