C C-ctrl-addr-write { } P0(int *x, int *y, int *u) { int r1; int *r2; r1 = READ_ONCE(*x); if (r1 != 0) r2 = y; else r2 = u; WRITE_ONCE(*r2, 1); } P1(int *x, int *y) { int r3; r3 = READ_ONCE(*y); smp_mb(); WRITE_ONCE(*x, 1); } Observed 1:r3=1; 0:r1=1;