diff --git a/arch/csr/menvcfg.yaml b/arch/csr/menvcfg.yaml index 2ed28c7b1..bfd84b3f8 100644 --- a/arch/csr/menvcfg.yaml +++ b/arch/csr/menvcfg.yaml @@ -247,8 +247,8 @@ menvcfg: type: RW-R sw_write(csr_value): | if ((csr_value.CBIE == 0) || - (ALLOW_CBO_INVAL_UPGRADE_TO_FLUSH && (csr_value.CBIE == 1)) || - (csr_value.CBIE == 3)) { + (csr_value.CBIE == 1) || + ((!FORCE_UPGRADE_CBO_INVAL_TO_FLUSH) && (csr_value.CBIE == 3)) { return csr_value.CBIE; } else { return CSR[menvcfg].CBIE; diff --git a/arch/ext/Zicbom.yaml b/arch/ext/Zicbom.yaml index 1b49859d9..8bdaa67eb 100644 --- a/arch/ext/Zicbom.yaml +++ b/arch/ext/Zicbom.yaml @@ -15,12 +15,12 @@ Zicbom: also_defined_in: [Zicboz, Zicbop] schema: type: integer - ALLOW_CBO_INVAL_UPGRADE_TO_FLUSH: + FORCE_UPGRADE_CBO_INVAL_TO_FLUSH: description: | - When true, an implementation can (when `menvcfg.CBIE` == `01`) upgrade a `cbo.inval` - instruction to a `cbo.flush`. + When true, an implementation prohibits setting `menvcfg.CBIE` == `11` such that all `cbo.inval` + instructions either trap (when `menvcfg.CBIE` == '00') or flush (when `menvcfg.CBIE` == '01'). - When false, an implementation does not support the upgrade, and the value '01' cannot be - written to `menvcfg.CBIE`. + When false, an implementation allows a true INVAL operation for `cbo.inval`, and thus supports + the setting `menvcfg.CBIE` == `11`. schema: type: boolean diff --git a/cfgs/generic_rv64/params.yaml b/cfgs/generic_rv64/params.yaml index 8c896bce8..27a7f7e95 100644 --- a/cfgs/generic_rv64/params.yaml +++ b/cfgs/generic_rv64/params.yaml @@ -514,4 +514,4 @@ params: MSTATUS_FS_WRITEABLE: true MSTATUS_TVM_IMPLEMENTED: true HW_MSTATUS_FS_DIRTY_UPDATE: precise - ALLOW_CBO_INVAL_UPGRADE_TO_FLUSH: true + FORCE_UPGRADE_CBO_INVAL_TO_FLUSH: true