mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Adjusted menvcfg.CBIE reserved 10 behavior to match ImperasDV; spec is ambiguous (riscv-isa-manual Issue #1682
This commit is contained in:
parent
5f5dac2bda
commit
5ef5633a62
@ -180,7 +180,9 @@ module csrm import cvw::*; #(parameter cvw_t P) (
|
|||||||
if (P.U_SUPPORTED) begin // menvcfg only exists if there is a lower privilege to control
|
if (P.U_SUPPORTED) begin // menvcfg only exists if there is a lower privilege to control
|
||||||
logic WriteMENVCFGM;
|
logic WriteMENVCFGM;
|
||||||
logic [63:0] MENVCFG_PreWriteValM, MENVCFG_WriteValM;
|
logic [63:0] MENVCFG_PreWriteValM, MENVCFG_WriteValM;
|
||||||
|
logic [1:0] LegalizedCBIE;
|
||||||
assign WriteMENVCFGM = CSRMWriteM & (CSRAdrM == MENVCFG);
|
assign WriteMENVCFGM = CSRMWriteM & (CSRAdrM == MENVCFG);
|
||||||
|
assign LegalizedCBIE = MENVCFG_PreWriteValM[5:4] == 2'b10 ? MENVCFG_REGW[5:4] : MENVCFG_PreWriteValM[5:4]; // Assume WARL for reserved CBIE = 10, keeps old value
|
||||||
// MENVCFG is always 64 bits even for RV32
|
// MENVCFG is always 64 bits even for RV32
|
||||||
assign MENVCFG_WriteValM = {
|
assign MENVCFG_WriteValM = {
|
||||||
MENVCFG_PreWriteValM[63] & P.SSTC_SUPPORTED,
|
MENVCFG_PreWriteValM[63] & P.SSTC_SUPPORTED,
|
||||||
@ -188,7 +190,8 @@ module csrm import cvw::*; #(parameter cvw_t P) (
|
|||||||
MENVCFG_PreWriteValM[61] & P.SVADU_SUPPORTED,
|
MENVCFG_PreWriteValM[61] & P.SVADU_SUPPORTED,
|
||||||
53'b0,
|
53'b0,
|
||||||
MENVCFG_PreWriteValM[7] & P.ZICBOZ_SUPPORTED,
|
MENVCFG_PreWriteValM[7] & P.ZICBOZ_SUPPORTED,
|
||||||
MENVCFG_PreWriteValM[6:4] & {3{P.ZICBOM_SUPPORTED}},
|
MENVCFG_PreWriteValM[6] & P.ZICBOM_SUPPORTED,
|
||||||
|
LegalizedCBIE & {2{P.ZICBOM_SUPPORTED}},
|
||||||
3'b0,
|
3'b0,
|
||||||
MENVCFG_PreWriteValM[0] & P.S_SUPPORTED & P.VIRTMEM_SUPPORTED
|
MENVCFG_PreWriteValM[0] & P.S_SUPPORTED & P.VIRTMEM_SUPPORTED
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user