On Wed, Mar 17, 2004 at 02:45:08PM -0800, Michael Eager wrote: > + "ll %0,0(%2)\n\t" > + "addu %1,%3,%0\n\t" > + "sc %1,0(%2)\n\t" > ".set pop\n\t" > "beqz %1,1b\n\t" > "/* End exchange & add */" > + : "=&r"(__result), "=&r"(__tmp), "+r"(__mem) Why the in-out constraint on __mem? You don't modify %2. r~