1*1c27b644SPaul E. McKenneyC Z6.0+pooncelock+pooncelock+pombonce
2*1c27b644SPaul E. McKenney
3*1c27b644SPaul E. McKenney{}
4*1c27b644SPaul E. McKenney
5*1c27b644SPaul E. McKenneyP0(int *x, int *y, spinlock_t *mylock)
6*1c27b644SPaul E. McKenney{
7*1c27b644SPaul E. McKenney	spin_lock(mylock);
8*1c27b644SPaul E. McKenney	WRITE_ONCE(*x, 1);
9*1c27b644SPaul E. McKenney	WRITE_ONCE(*y, 1);
10*1c27b644SPaul E. McKenney	spin_unlock(mylock);
11*1c27b644SPaul E. McKenney}
12*1c27b644SPaul E. McKenney
13*1c27b644SPaul E. McKenneyP1(int *y, int *z, spinlock_t *mylock)
14*1c27b644SPaul E. McKenney{
15*1c27b644SPaul E. McKenney	int r0;
16*1c27b644SPaul E. McKenney
17*1c27b644SPaul E. McKenney	spin_lock(mylock);
18*1c27b644SPaul E. McKenney	r0 = READ_ONCE(*y);
19*1c27b644SPaul E. McKenney	WRITE_ONCE(*z, 1);
20*1c27b644SPaul E. McKenney	spin_unlock(mylock);
21*1c27b644SPaul E. McKenney}
22*1c27b644SPaul E. McKenney
23*1c27b644SPaul E. McKenneyP2(int *x, int *z)
24*1c27b644SPaul E. McKenney{
25*1c27b644SPaul E. McKenney	int r1;
26*1c27b644SPaul E. McKenney
27*1c27b644SPaul E. McKenney	WRITE_ONCE(*z, 2);
28*1c27b644SPaul E. McKenney	smp_mb();
29*1c27b644SPaul E. McKenney	r1 = READ_ONCE(*x);
30*1c27b644SPaul E. McKenney}
31*1c27b644SPaul E. McKenney
32*1c27b644SPaul E. McKenneyexists (1:r0=1 /\ z=2 /\ 2:r1=0)
33