#include struct { unsigned char flag; unsigned char val; } l; int main(int argc, char **argv) { int i; { { for (i = 0; i < 100000000; i++) { asm volatile("lock addb %1, %0":"+m"(l.val):"r"((char)2):"memory"); if (l.flag) break; asm volatile("" : : : "memory"); } l.flag = 1; } } return 0; }