C MP+locked-diff+rmb
{}
P0(int* y,int* x,spinlock_t* lo_x,spinlock_t *lo_y) {
spin_lock(lo_x);
WRITE_ONCE(*x,1);
spin_unlock(lo_x);
spin_lock(lo_y);
WRITE_ONCE(*y,1);
spin_unlock(lo_y);
}
P1(int* y,int* x) {
int r0 = READ_ONCE(*y);
smp_rmb();
int r1 = READ_ONCE(*x);
}
Observed
1:r1=0; 1:r0=1;