let PTE =
if "vmsa" then PTE
else emptyset
let PTEV =
if "vmsa" then PTEV
else emptyset
let PTEINV =
if "vmsa" then PTEINV
else emptyset
let inv-domain =
if "vmsa" then inv-domain
else 0
let AF =
if "vmsa" then AF
else emptyset
let DB =
if "vmsa" then DB
else emptyset
let MMU =
if "vmsa" then MMU
else emptyset
let Translation =
if "vmsa" then Translation
else emptyset
let AccessFlag =
if "vmsa" then AccessFlag
else emptyset
let Instr =
if "ifetch" then Instr
else emptyset
let Within-CMODX-List =
if "ifetch" then Restricted-CMODX
else emptyset
let AFtoDB = same-instance & ((AF\DB) * (DB\AF))
let co0=co0 | AFtoDB
include "cos.cat"
let IC = IC.IALLUIS | IC.IALLU | IC.IVAU
include "aarch64fences.cat"
include "aarch64bbm.cat"
include "aarch64show.cat"
procedure included(r1, r2) =
empty r1 \ r2
end
procedure equal(r1, r2) =
call included(r1, r2)
call included(r2, r1)
end
let intervening(S,r) = r; [S]; r
let sca-class = [M & Exp]; sm; [M & Exp]
let Imp = NExp
let SPONTANEOUS = SPURIOUS
let inv-scope = inv-domain
let TTD = PTE
let Tag = T
flag ~
empty ((W & Instr)*(W & Instr) \ loc)
as Assuming-no-two-modified-instructions-are-on-the-same-cache-line
flag ~
empty (
if "vmsa" &&
"memtag" then _ else 0)
as combining-vmsa-and-memtag-is-not-supported
flag ~
empty (
if "vmsa" &&
"ifetch" then _ else 0)
as combining-vmsa-and-ifetch-is-not-supported
flag ~
empty (
if "memtag" &&
"ifetch" then _ else 0)
as combining-memtag-and-ifetch-is-not-supported
flag ~
empty (
if "sve" then _ else 0)
as Scalable-Vector-Extensions-is-work-in-progress
include "aarch64loc.cat"