summaryrefslogtreecommitdiff
path: root/aarch64_small/aarch64_regfp.sail
diff options
context:
space:
mode:
authorShaked Flur2019-07-18 10:13:10 +0100
committerShaked Flur2019-07-18 10:13:10 +0100
commit1bb77b31f84946f036c0b7e37245809bbdb82def (patch)
tree368af2665e2a213f3b374f41f5c6e93ecbf2d026 /aarch64_small/aarch64_regfp.sail
parent0a8981186d4da342ef36179cf093e64674573c63 (diff)
Support DMB/DSB domains
Diffstat (limited to 'aarch64_small/aarch64_regfp.sail')
-rw-r--r--aarch64_small/aarch64_regfp.sail31
1 files changed, 17 insertions, 14 deletions
diff --git a/aarch64_small/aarch64_regfp.sail b/aarch64_small/aarch64_regfp.sail
index ce155f0a..be4a2cba 100644
--- a/aarch64_small/aarch64_regfp.sail
+++ b/aarch64_small/aarch64_regfp.sail
@@ -223,22 +223,25 @@ function initial_analysis (instr:ast) -> (regfps,regfps,regfps,niafps,diafp,inst
},
(ClearExclusiveMonitor(imm)) => (), /*ClearExclusiveLocal*/
(Barrier(op,domain,types)) => {
+ let (dom, typ) =
+ (match domain {
+ MBReqDomain_Nonshareable => A64_NonShare
+ MBReqDomain_InnerShareable => A64_InnerShare
+ MBReqDomain_OuterShareable => A64_OuterShare
+ MBReqDomain_FullSystem => A64_FullShare
+ },
+ match types {
+ MBReqTypes_Reads => A64_barrier_LD
+ MBReqTypes_Writes => A64_barrier_ST
+ MBReqTypes_All => A64_barrier_all
+ })
+ in {
ik = match op {
- MemBarrierOp_DSB =>
- match types {
- MBReqTypes_Reads => IK_barrier(Barrier_DSB_LD),
- MBReqTypes_Writes => IK_barrier(Barrier_DSB_ST),
- MBReqTypes_All => IK_barrier(Barrier_DSB)
- },
- MemBarrierOp_DMB =>
- match types {
- MBReqTypes_Reads => IK_barrier(Barrier_DMB_LD),
- MBReqTypes_Writes => IK_barrier(Barrier_DMB_ST),
- MBReqTypes_All => IK_barrier(Barrier_DMB)
- },
- MemBarrierOp_ISB =>
- IK_barrier(Barrier_ISB)
+ MemBarrierOp_DSB => IK_barrier(Barrier_DSB (dom, typ))
+ MemBarrierOp_DMB => IK_barrier(Barrier_DMB (dom, typ))
+ MemBarrierOp_ISB => IK_barrier(Barrier_ISB)
};
+ }
},
(DataCache(t,dc_op)) => {