On Fri, Mar 4, 2022 at 4:59 AM Atish Patra <ati...@rivosinc.com> wrote: > > RISC-V International (RVI) has ratified many RISC-V ISA extensions > recently[1]. > The privileged specification version is also upgraded to v1.12. It means > certain CSRs introduced in v1.12 should only be accessible only if the > priv specification version supported is equal or greater than v1.12. > Doing this check in predicate function is not scalable as there will be > new CSRs introduced in the future versions of the privileged specification. > > This series tries to address this problem by adding a field in the csr_ops > which can be checked in csrrw function before invoking the predicate function. > To keep the code churn to minimum, it is assumed that the minimum version of > the privilege version supported for any CSR is v1.10 unless specified > explicitly in the csr_ops table. Any new CSRs introduced in v1.12 have been > updated accordingly. > > This will work fine for any ratified extensions. However, it is bit unclear > what should be done for the stable draft extensions. My suggestion is not > to update the priv field in the CSR ops table until the extension is > marked experimental (i.e. not frozen/ratified). Once the extension is > ratified and graduated from experimental to available stage, the privileged > spec version should be updated in the csr table if required. I am open to > other suggestions as well. > > [1] https://wiki.riscv.org/display/TECH/Recently+Ratified+Extensions > > Changes from v4->v5: > 1. Rebased on top of riscv-to-apply.next > > Changes from v3->v4: > 1. Added reviewed-by tags. > 2. Improved the commit text in PATCH 3 & 6. > > Changes from v2->v3: > 1. Only update the bits defined in *envcfg CSR > > Changes from v1->v2: > 1. Unified both [m/h]envcfg & [m/h]envcfgh into one. > 2. Changed the priv spec version enumeration > 3. Improved csr_ops table to provide better redability. > 4. Fixed the compilation error for CONFIG_USER_ONLY > 5. Rebased on top of the AIA series. > > Atish Patra (6): > target/riscv: Define simpler privileged spec version numbering > target/riscv: Add the privileged spec version 1.12.0 > target/riscv: Introduce privilege version field in the CSR ops. > target/riscv: Add support for mconfigptr > target/riscv: Add *envcfg* CSRs support > target/riscv: Enable privileged spec version 1.12
Reviewed-by: Alistair Francis <alistair.fran...@wdc.com> Alistair > > target/riscv/cpu.c | 8 +- > target/riscv/cpu.h | 15 ++- > target/riscv/cpu_bits.h | 40 ++++++++ > target/riscv/csr.c | 217 +++++++++++++++++++++++++++++++++------- > target/riscv/machine.c | 23 +++++ > 5 files changed, 263 insertions(+), 40 deletions(-) > > -- > 2.30.2 > >