AArch64 F2+DSB-ETS
{
[PTE(x)]=(db:0);
0:X1=(oa:PA(x),db:1);
0:X2=PTE(x); 0:X3=x;
1:X3=x
}
P0 | P1 ;
STR X1,[X2] | MOV W4,#1 ;
DSB ISH | STR W4, [X3] ; (* new permissions *)
LDR W7,[X3] | L0:STR W4, [X3] ; (* old permissions *)
exists (0:X7=0 /\ fault(P1:L0,x,MMU:Permission)) \/ (0:X7=1 /\ fault(P1:L0,x,MMU:Permission))