diff options
| author | Robert Norton | 2017-04-19 13:50:01 +0100 |
|---|---|---|
| committer | Robert Norton | 2017-04-20 11:06:05 +0100 |
| commit | 131a312fbef2c27a3757b72927d4beb859c40561 (patch) | |
| tree | de0f4681c121a8cc1dc2a3597a68cebacb6995ab | |
| parent | d11cd6e87c635d843759d10f9173c1a28ff3c62b (diff) | |
XXX remove pattern match not handled correctly by ocaml embedding.
| -rw-r--r-- | cheri/cheri_prelude_common.sail | 8 |
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) } |
