PPC (* Model for Power *) include "cos.cat" (* Uniproc *) acyclic po-loc | rf | fr | co as scperlocation (* Atomic *) empty rmw & (fre;coe) as atomic (* Utilities *) let dd = addr | data let rdw = po-loc & (fre;rfe) let detour = po-loc & (coe ; rfe) let addrpo = addr;po (*******) (* ppo *) (*******) include "ppcfences.cat" show isync,ctrlisync (* Initial value *) let ci0 = ctrlisync | detour let ii0 = dd | rfi | rdw let cc0 = dd | po-loc | ctrl | addrpo let ic0 = 0 include "ppo.cat" (* fences *) let lwsync = lwsync \ (W * R) let eieio = eieio & (W * W) (* All arm barriers are strong *) let strong = sync let light = lwsync|eieio include "ppc-checks.cat"