From c2200f47ccbf548733d42f84c0b1277f78f9c356 Mon Sep 17 00:00:00 2001 From: Peter Rugg Date: Tue, 10 Dec 2019 16:33:33 +0000 Subject: [PATCH] Make Cap FShow more concise --- CHERICC_Fat.bsv | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/CHERICC_Fat.bsv b/CHERICC_Fat.bsv index 8ee0872..699132d 100644 --- a/CHERICC_Fat.bsv +++ b/CHERICC_Fat.bsv @@ -847,7 +847,7 @@ typedef CapFat CapReg; typedef struct { CapFat capFat; TempFields tempFields; -} CapPipe deriving (Bits, FShow); +} CapPipe deriving (Bits); instance CHERICap #(CapMem, OTypeW, FlagsW, CapAddressW, CapW, TSub#(MW, 3)); function isValidCap (x); @@ -887,6 +887,19 @@ instance CHERICap #(CapMem, OTypeW, FlagsW, CapAddressW, CapW, TSub#(MW, 3)); function getBaseAlignment = error("feature not implemented for this cap type"); endinstance +instance FShow #(CapPipe); + function fshow(cap) = $format( + "v: ", fshow(isValidCap(cap)), + " a: ", fshow(getAddr(cap)), + " o: ", fshow(getOffset(cap)), + " b: ", fshow(getBase(cap)), + " t: ", fshow(getTop(cap)), + " sp: ", fshow(pack(getSoftPerms(cap))), + " hp: ", fshow(pack(getHardPerms(cap))), + " ot: ", fshow(getType(cap)), + " f: ", fshow(getFlags(cap))); +endinstance + instance CHERICap #(CapReg, OTypeW, FlagsW, CapAddressW, CapW, TSub#(MW, 3)); function isValidCap (x) = x.isCapability;