ISAs before MIPS32 do not support the argument of sync, so build fails with -march=mips3 (or -march=loongson2f). Since the default argument of 0 does all work of other values, not specifying it should keep the code correct on older ISAs. A proper patch would detect if "sync 0x11" is accepted by the assembler and choose the appropriate code. --- qt-everywhere-opensource-src-5.0.1.orig/qtbase/src/corelib/arch/qatomic_mips.h 2013-03-03 18:52:14.370775913 +0100 +++ qt-everywhere-opensource-src-5.0.1/qtbase/src/corelib/arch/qatomic_mips.h 2013-03-03 19:30:16.209001188 +0100 @@ -122,19 +122,19 @@ template template inline void QBasicAtomicOps::acquireMemoryFence(const T &) Q_DECL_NOTHROW { - asm volatile ("sync 0x11" ::: "memory"); + asm volatile ("sync" ::: "memory"); } template template inline void QBasicAtomicOps::releaseMemoryFence(const T &) Q_DECL_NOTHROW { - asm volatile ("sync 0x12" ::: "memory"); + asm volatile ("sync" ::: "memory"); } template template inline void QBasicAtomicOps::orderedMemoryFence(const T &) Q_DECL_NOTHROW { - asm volatile ("sync 0" ::: "memory"); + asm volatile ("sync" ::: "memory"); } template<> template inline