From 86782f9bb50a498a270f8525e19e6a14d6e7bede Mon Sep 17 00:00:00 2001 From: Peter Rugg Date: Tue, 20 Jun 2023 16:46:39 +0100 Subject: [PATCH] Cleanup unused exception code --- src_Core/ISA/CHERIExceptions.bsvi | 6 +++--- src_Core/RISCY_OOO/procs/lib/CapChecks.bsvi | 14 ------------- src_Core/RISCY_OOO/procs/lib/Exec.bsv | 22 +-------------------- 3 files changed, 4 insertions(+), 38 deletions(-) diff --git a/src_Core/ISA/CHERIExceptions.bsvi b/src_Core/ISA/CHERIExceptions.bsvi index b4376ee..fa810c6 100644 --- a/src_Core/ISA/CHERIExceptions.bsvi +++ b/src_Core/ISA/CHERIExceptions.bsvi @@ -8,7 +8,7 @@ `CHERIException(StackUnderflow, 5'd7) `CHERIException(SoftwarePermViolation, 5'd8) `CHERIException(MMUStoreCapProhibit, 5'd9) -`CHERIException(RepresentViolation, 5'd10) +// 5'd10 reserved (obsolete InexactBoundsViolation) `CHERIException(UnalignedBase, 5'd11) // 5'd12 - 5'd15 reserved `CHERIException(GlobalViolation, 5'd16) @@ -18,10 +18,10 @@ `CHERIException(PermitRCapViolation, 5'd20) `CHERIException(PermitWCapViolation, 5'd21) `CHERIException(PermitWLocalCapViolation, 5'd22) -`CHERIException(PermitSealViolation, 5'd23) +// 5'd23 reserved (obsolete PermitSealViolation) `CHERIException(PermitASRViolation, 5'd24) `CHERIException(PermitCCallViolation, 5'd25) // 5'd26 reserved (obsolete CCallAccessIDCViolation) -`CHERIException(PermitUnsealViolation, 5'd27) +// 5'd27 reserved (obsolete PermitUnsealViolation) `CHERIException(PermitSetCIDViolation, 5'd28) // 5'd29 - 5'd31 reserved diff --git a/src_Core/RISCY_OOO/procs/lib/CapChecks.bsvi b/src_Core/RISCY_OOO/procs/lib/CapChecks.bsvi index c13ed2c..26a1298 100644 --- a/src_Core/RISCY_OOO/procs/lib/CapChecks.bsvi +++ b/src_Core/RISCY_OOO/procs/lib/CapChecks.bsvi @@ -1,26 +1,12 @@ -`CAP_CHECK_FIELD(ddc_tag,"ddc_tag") `CAP_CHECK_FIELD(src1_tag,"src1_tag") `CAP_CHECK_FIELD(src2_tag,"src2_tag") `CAP_CHECK_FIELD(src1_sealed_with_type,"src1_sealed_with_type") `CAP_CHECK_FIELD(src2_sealed_with_type,"src2_sealed_with_type") -`CAP_CHECK_FIELD(ddc_unsealed,"ddc_unsealed") -`CAP_CHECK_FIELD(src1_unsealed,"src1_unsealed") `CAP_CHECK_FIELD(src1_unsealed_or_sentry,"src1_unsealed_or_sentry") `CAP_CHECK_FIELD(src1_unsealed_or_imm_zero,"src1_unsealed_or_imm_zero") -`CAP_CHECK_FIELD(src2_unsealed,"src2_unsealed") `CAP_CHECK_FIELD(src1_src2_types_match,"src1_src2_types_match") `CAP_CHECK_FIELD(src1_permit_ccall,"src1_permit_ccall") `CAP_CHECK_FIELD(src2_permit_ccall,"src2_permit_ccall") `CAP_CHECK_FIELD(src1_permit_x,"src1_permit_x") `CAP_CHECK_FIELD(src2_no_permit_x,"src2_no_permit_x") -`CAP_CHECK_FIELD(src2_permit_unseal,"src2_permit_unseal") -`CAP_CHECK_FIELD(src2_permit_seal,"src2_permit_seal") -`CAP_CHECK_FIELD(src2_points_to_src1_type,"src2_points_to_src1_type") -`CAP_CHECK_FIELD(src2_addr_valid_type,"src2_addr_valid_type") `CAP_CHECK_FIELD(src1_type_not_reserved,"src1_type_not_reserved") -`CAP_CHECK_FIELD(src1_perm_subset_src2,"src1_perm_subset_src2") -`CAP_CHECK_FIELD(src1_derivable,"src1_derivable") -`CAP_CHECK_FIELD(cfromptr_bypass,"cfromptr_bypass") -`CAP_CHECK_FIELD(ccseal_bypass,"ccseal_bypass") -`CAP_CHECK_FIELD(ccopytype_bypass,"ccopytype_bypass") -`CAP_CHECK_FIELD(cap_exact,"cap_exact") diff --git a/src_Core/RISCY_OOO/procs/lib/Exec.bsv b/src_Core/RISCY_OOO/procs/lib/Exec.bsv index ae9ea52..a072729 100644 --- a/src_Core/RISCY_OOO/procs/lib/Exec.bsv +++ b/src_Core/RISCY_OOO/procs/lib/Exec.bsv @@ -52,22 +52,14 @@ function Maybe#(CSR_XCapCause) capChecksExec(CapPipe a, CapPipe b, CapPipe ddc, function Maybe#(CSR_XCapCause) e2(CHERIException e) = Valid(CSR_XCapCause{cheri_exc_reg: toCheck.rn2, cheri_exc_code: e}); function Maybe#(CSR_XCapCause) eDDC(CHERIException e) = Valid(CSR_XCapCause{cheri_exc_reg: {1'b1, pack(scrAddrDDC)}, cheri_exc_code: e}); Maybe#(CSR_XCapCause) result = Invalid; - if (toCheck.ddc_tag && !isValidCap(ddc)) - result = eDDC(cheriExcTagViolation); - else if (toCheck.src1_tag && !isValidCap(a)) + if (toCheck.src1_tag && !isValidCap(a)) result = e1(cheriExcTagViolation); else if (toCheck.src2_tag && !isValidCap(b)) result = e2(cheriExcTagViolation); - else if (toCheck.ddc_unsealed && isValidCap(ddc) && (getKind(ddc) != UNSEALED)) - result = eDDC(cheriExcSealViolation); - else if (toCheck.src1_unsealed && isValidCap(a) && (getKind(a) != UNSEALED)) - result = e1(cheriExcSealViolation); else if (toCheck.src1_unsealed_or_sentry && isValidCap(a) && (getKind(a) != UNSEALED) && (getKind(a) != SENTRY)) result = e1(cheriExcSealViolation); else if (toCheck.src1_unsealed_or_imm_zero && isValidCap(a) && (getKind(a) != UNSEALED) && (imm != 0)) result = e1(cheriExcSealViolation); - else if (toCheck.src2_unsealed && isValidCap(b) && (getKind(b) != UNSEALED)) - result = e2(cheriExcSealViolation); else if (toCheck.src1_sealed_with_type && (getKind (a) matches tagged SEALED_WITH_TYPE .t ? False : True)) result = e1(cheriExcSealViolation); else if (toCheck.src2_sealed_with_type && (getKind (b) matches tagged SEALED_WITH_TYPE .t ? False : True)) @@ -84,18 +76,6 @@ function Maybe#(CSR_XCapCause) capChecksExec(CapPipe a, CapPipe b, CapPipe ddc, result = e1(cheriExcPermitXViolation); else if (toCheck.src2_no_permit_x && getHardPerms(b).permitExecute) result = e2(cheriExcPermitXViolation); - else if (toCheck.src2_permit_unseal && !getHardPerms(b).permitUnseal) - result = e2(cheriExcPermitUnsealViolation); - else if (toCheck.src2_permit_seal && !getHardPerms(b).permitSeal) - result = e2(cheriExcPermitSealViolation); - else if (toCheck.src2_points_to_src1_type && getAddr(b) != zeroExtend(getKind(a).SEALED_WITH_TYPE)) - result = e2(cheriExcTypeViolation); - else if (toCheck.src2_addr_valid_type && !validAsType(b, truncate(getAddr(b)))) - result = e2(cheriExcLengthViolation); - else if (toCheck.src1_perm_subset_src2 && (getPerms(a) & getPerms(b)) != getPerms(a)) - result = e2(cheriExcSoftwarePermViolation); - else if (toCheck.src1_derivable && !isDerivable(a)) - result = e1(cheriExcLengthViolation); return result; endfunction