C ullk-rw (* * Result: Never * * If two locked critical sections execute on the same CPU, all accesses * in the first must execute before any accesses in the second, even if * the critical sections are protected by different locks. *) {} P0(spinlock_t *s, spinlock_t *t, int *x, int *y) { int r1; spin_lock(s); r1 = READ_ONCE(*x); spin_unlock(s); spin_lock(t); WRITE_ONCE(*y, 1); spin_unlock(t); } P1(int *x, int *y) { int r2; r2 = smp_load_acquire(y); WRITE_ONCE(*x, 1); } exists (0:r1=1 /\ 1:r2=1)