Cleanup unused exception code
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user