Add utilities for CRRL and CRAM

This commit is contained in:
Peter Rugg
2020-02-05 01:44:00 +00:00
parent 774e883a26
commit 0d7b3bb49f
2 changed files with 21 additions and 0 deletions

View File

@@ -179,6 +179,15 @@ typeclass CHERICap#(type t, numeric type ot, numeric type flg, numeric type n, n
// base.
function Bit#(2) getBaseAlignment (t cap);
// Get representable alignment mask
function Bit#(n) getRepresentableAlignmentMask (t dummy, Bit#(n) length_request);
// Get representable length
function Bit#(n) getRepresentableLength (t dummy, Bit#(n) length_request);
let mask = getRepresentableAlignmentMask(dummy, length_request);
return (length_request + ~mask) & mask;
endfunction
endtypeclass
function Fmt showCHERICap(t cap) provisos (CHERICap#(t, ot, flg, n, mem_sz, maskable_bits));