aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Norton <rmn30@cam.ac.uk>2019-03-07 17:31:10 +0000
committerRobert Norton <rmn30@cam.ac.uk>2019-03-07 17:31:10 +0000
commitad44eb77aa89a5e87d7454dec70f1655bc061ef3 (patch)
tree2f5878de296523fee0a6d701576588bc5a7216eb
parent215c2b31d2c1649a40bfebb1e060e7095001813f (diff)
downloadsail-riscv-ad44eb77aa89a5e87d7454dec70f1655bc061ef3.zip
sail-riscv-ad44eb77aa89a5e87d7454dec70f1655bc061ef3.tar.gz
sail-riscv-ad44eb77aa89a5e87d7454dec70f1655bc061ef3.tar.bz2
Prohibit modifying sealed capabilities by setting mepc etc. Similar to cheri-mips issue.
-rw-r--r--model/cheri_prelude_128.sail2
1 files changed, 1 insertions, 1 deletions
diff --git a/model/cheri_prelude_128.sail b/model/cheri_prelude_128.sail
index 382ac4f..4d43f7e 100644
--- a/model/cheri_prelude_128.sail
+++ b/model/cheri_prelude_128.sail
@@ -377,7 +377,7 @@ function setCapOffset(c, offset) : (Capability, bits(64)) -> (bool, Capability)
function setCapOffsetOrNull (cap, offset) : (Capability, bits(64)) -> Capability =
let (representable, newCap) = setCapOffset(cap, offset) in
- if representable then newCap else int_to_cap(newCap.address)
+ if representable & not(cap.sealed) then newCap else int_to_cap(newCap.address)
function incCapOffset(c, delta) : (Capability, bits(64)) -> (bool, Capability) =
let newAddress : bits(64) = c.address + delta in