aboutsummaryrefslogtreecommitdiff
path: root/model/extensions
diff options
context:
space:
mode:
authorValentin Robert <valentin.robert.42@gmail.com>2025-12-08 06:03:00 -0800
committerGitHub <noreply@github.com>2025-12-08 14:03:00 +0000
commit1993f2d414fe6326dc0855a901d620b82f582c71 (patch)
tree6f10a57683f003767eb0ea4cddd4af72278c08a7 /model/extensions
parent1c7910bc1a23107a9c36297e4ff733e457e052a4 (diff)
downloadsail-riscv-master.zip
sail-riscv-master.tar.gz
sail-riscv-master.tar.bz2
Scatter termination.sail (#1376)HEADmaster
Scatter the termination module in such a way that one could require some termination measures without having to include every single instruction in the output. This makes building a subset of the model easier. The termination measures for `vmem_read_addr` and `vmem_write_addr` no longer need to be protected only for the Rocq output, so they get taken out of the `$iftarget coq`.
Diffstat (limited to 'model/extensions')
-rw-r--r--model/extensions/cfi/zicfilp_regs.sail4
1 files changed, 4 insertions, 0 deletions
diff --git a/model/extensions/cfi/zicfilp_regs.sail b/model/extensions/cfi/zicfilp_regs.sail
index ee8d3cf..6d15680 100644
--- a/model/extensions/cfi/zicfilp_regs.sail
+++ b/model/extensions/cfi/zicfilp_regs.sail
@@ -32,6 +32,10 @@ function get_xLPE(p : Privilege) -> bool =
VirtualUser => internal_error(__FILE__, __LINE__, "Hypervisor extension not supported"),
}
+// This measure needs to be > currentlyEnabled_measure(Ext_S), currently equal
+// to 1, see currentlyEnabled_measure in extensions.sail
+termination_measure get_xLPE(_) = 2
+
function clause currentlyEnabled(Ext_Zicfilp) =
currentlyEnabled(Ext_Zicsr) & hartSupports(Ext_Zicfilp) & get_xLPE(cur_privilege)