mirror of https://github.com/xemu-project/xemu.git
target/riscv/csr.c: Fix an access to VXSAT
The register VXSAT should be RW only to the first bit. The remaining bits should be 0. The RISC-V Instruction Set Manual Volume I: Unprivileged Architecture The vxsat CSR has a single read-write least-significant bit (vxsat[0]) that indicates if a fixed-point instruction has had to saturate an output value to fit into a destination format. Bits vxsat[XLEN-1:1] should be written as zeros. Signed-off-by: Evgenii Prokopiev <evgenii.prokopiev@syntacore.com> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20241002084436.89347-1-evgenii.prokopiev@syntacore.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
58d49b5895
commit
5a60026cad
|
@ -734,7 +734,7 @@ static RISCVException write_vxrm(CPURISCVState *env, int csrno,
|
|||
static RISCVException read_vxsat(CPURISCVState *env, int csrno,
|
||||
target_ulong *val)
|
||||
{
|
||||
*val = env->vxsat;
|
||||
*val = env->vxsat & BIT(0);
|
||||
return RISCV_EXCP_NONE;
|
||||
}
|
||||
|
||||
|
@ -744,7 +744,7 @@ static RISCVException write_vxsat(CPURISCVState *env, int csrno,
|
|||
#if !defined(CONFIG_USER_ONLY)
|
||||
env->mstatus |= MSTATUS_VS;
|
||||
#endif
|
||||
env->vxsat = val;
|
||||
env->vxsat = val & BIT(0);
|
||||
return RISCV_EXCP_NONE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue