Is there a reason why variable "test" inside of "main" was made long long ? On 32 bit hosts, this is not going to be available except in a runtime library. Not all libc implementations have such routines. For Mips, only the bleeding edge ones have the runtime routines to do a 64 bit atomic subtract on a 32 bit machine.