[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/4] target/riscv: Support MSTATUS.MPV/GVA only when RVH is e
From: |
Alistair Francis |
Subject: |
Re: [PATCH 3/4] target/riscv: Support MSTATUS.MPV/GVA only when RVH is enabled |
Date: |
Thu, 1 Jun 2023 15:28:45 +1000 |
On Mon, May 29, 2023 at 10:18 PM Weiwei Li <liweiwei@iscas.ac.cn> wrote:
>
> MPV and GVA bits are added by hypervisor extension to mstatus
> and mstatush (if MXLEN=32).
>
> Signed-off-by: Weiwei Li <liweiwei@iscas.ac.cn>
> Signed-off-by: Junqiang Wang <wangjunqiang@iscas.ac.cn>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> target/riscv/csr.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/target/riscv/csr.c b/target/riscv/csr.c
> index 58499b5afc..6ac11d1f11 100644
> --- a/target/riscv/csr.c
> +++ b/target/riscv/csr.c
> @@ -1311,11 +1311,9 @@ static RISCVException write_mstatus(CPURISCVState
> *env, int csrno,
> }
>
> if (xl != MXL_RV32 || env->debugger) {
> - /*
> - * RV32: MPV and GVA are not in mstatus. The current plan is to
> - * add them to mstatush. For now, we just don't support it.
> - */
> - mask |= MSTATUS_MPV | MSTATUS_GVA;
> + if (riscv_has_ext(env, RVH)) {
> + mask |= MSTATUS_MPV | MSTATUS_GVA;
> + }
> if ((val & MSTATUS64_UXL) != 0) {
> mask |= MSTATUS64_UXL;
> }
> @@ -1351,7 +1349,7 @@ static RISCVException write_mstatush(CPURISCVState
> *env, int csrno,
> target_ulong val)
> {
> uint64_t valh = (uint64_t)val << 32;
> - uint64_t mask = MSTATUS_MPV | MSTATUS_GVA;
> + uint64_t mask = riscv_has_ext(env, RVH) ? MSTATUS_MPV | MSTATUS_GVA : 0;
>
> env->mstatus = (env->mstatus & ~mask) | (valh & mask);
>
> --
> 2.25.1
>
>
- Re: [PATCH 3/4] target/riscv: Support MSTATUS.MPV/GVA only when RVH is enabled,
Alistair Francis <=