summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Norton2017-04-19 13:50:01 +0100
committerRobert Norton2017-04-20 11:06:05 +0100
commit131a312fbef2c27a3757b72927d4beb859c40561 (patch)
treede0f4681c121a8cc1dc2a3597a68cebacb6995ab
parentd11cd6e87c635d843759d10f9173c1a28ff3c62b (diff)
XXX remove pattern match not handled correctly by ocaml embedding.
-rw-r--r--cheri/cheri_prelude_common.sail8
1 files changed, 6 insertions, 2 deletions
diff --git a/cheri/cheri_prelude_common.sail b/cheri/cheri_prelude_common.sail
index dd2ec99c..4027d43f 100644
--- a/cheri/cheri_prelude_common.sail
+++ b/cheri/cheri_prelude_common.sail
@@ -227,14 +227,18 @@ val extern forall Nat 'n. ( bit[64] , [|'n|] , bit[8 * ('n + 1)]) -> bool effect
function (bool, bit[cap_size_t * 8]) MEMr_tagged ((bit[64]) addr) =
{
(* assumes addr is cap. aligned *)
- let ((bit[8]) tag : mem) = reverse_endianness(MEMr_tag (addr, cap_size)) in
+ let tagmem = reverse_endianness(MEMr_tag (addr, cap_size)) in
+ let tag = tagmem[((8 * cap_size) + 7) .. (8 * cap_size)] in
+ let mem = tagmem[((8 * cap_size) - 1) .. 0] in
(tag[0], mem)
}
function (bool, bit[cap_size_t * 8]) MEMr_tagged_reserve ((bit[64]) addr) =
{
(* assumes addr is cap. aligned *)
- let ((bit[8]) tag : mem) = reverse_endianness(MEMr_tag_reserve (addr, cap_size)) in
+ let tagmem = reverse_endianness(MEMr_tag_reserve (addr, cap_size)) in
+ let tag = tagmem[((8 * cap_size) + 7) .. (8 * cap_size)] in
+ let mem = tagmem[((8 * cap_size) - 1) .. 0] in
(tag[0], mem)
}