summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlasdair Armstrong2020-02-21 19:55:43 +0000
committerAlasdair Armstrong2020-02-21 19:55:43 +0000
commitdd32e257ddecdeece792b508cc05c9acab153e70 (patch)
tree90bd5914841bca24d82315ae781f7e5c34c0c1f5 /lib
parenta9627e00d3141153958e448c2814ea906f837566 (diff)
Add barriers to regfp.sail for full ARMv8
Again use an $ifdef to avoid breaking RMEM. We can't use the same barrier_kind, because we *really* want a plain enumeration both for its simple SMT representation and a simple 1 to 1 mapping to the cat models used by herd. Technically for Isla, all the read_kind/write_kind/barrier_kind etc types can be defined separately on a per-architecture basis anyway, so maybe using this file at all is a bit of an anachronism.
Diffstat (limited to 'lib')
-rw-r--r--lib/regfp.sail30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/regfp.sail b/lib/regfp.sail
index 86b3cf17..7e5c9153 100644
--- a/lib/regfp.sail
+++ b/lib/regfp.sail
@@ -78,6 +78,35 @@ enum write_kind = {
Write_X86_locked
}
+$ifdef ARM_SPEC
+enum barrier_kind = {
+ Barrier_DMB_SY,
+ Barrier_DMB_ST,
+ Barrier_DMB_LD,
+ Barrier_DMB_ISH,
+ Barrier_DMB_ISHST,
+ Barrier_DMB_ISHLD,
+ Barrier_DMB_NSH,
+ Barrier_DMB_NSHST,
+ Barrier_DMB_NSHLD,
+ Barrier_DMB_OSH,
+ Barrier_DMB_OSHST,
+ Barrier_DMB_OSHLD,
+ Barrier_DSB_SY,
+ Barrier_DSB_ST,
+ Barrier_DSB_LD,
+ Barrier_DSB_ISH,
+ Barrier_DSB_ISHST,
+ Barrier_DSB_ISHLD,
+ Barrier_DSB_NSH,
+ Barrier_DSB_NSHST,
+ Barrier_DSB_NSHLD,
+ Barrier_DSB_OSH,
+ Barrier_DSB_OSHST,
+ Barrier_DSB_OSHLD,
+ Barrier_ISB
+}
+$else
enum a64_barrier_domain = {
A64_FullShare,
A64_InnerShare,
@@ -113,6 +142,7 @@ union barrier_kind = {
Barrier_RISCV_i : unit,
Barrier_x86_MFENCE : unit
}
+$endif
enum trans_kind = {
Transaction_start,