static bool tsl(volatile bool & lock) { /* register bool old = 1; ASMV("xchg %0, %2" : "=a"(old): "a"(old), "m"(lock)); return old; */ register bool old = lock; int *a = (int*)&lock; ASMV("bts %0, 0" :"=a" (a[0]) :); return old; }