From: Alistair Francis <alistair23@gmail.com>
To: Evgenii Prokopiev <evgenii.prokopiev@syntacore.com>
Cc: Richard Henderson <richard.henderson@linaro.org>,
alistair.francis@wdc.com, bmeng.cn@gmail.com,
dbarboza@ventanamicro.com, liwei1518@gmail.com,
palmer@dabbelt.com, qemu-devel@nongnu.org,
qemu-riscv@nongnu.org, zhiwei_liu@linux.alibaba.com
Subject: Re: [PATCH v3] target/riscv/csr.c: Fix an access to VXSAT
Date: Tue, 8 Oct 2024 10:26:02 +1000 [thread overview]
Message-ID: <CAKmqyKMSkBHsm0s3VZYWqg6QWq2D9g-MKvNh04vuDagDYYgqbg@mail.gmail.com> (raw)
In-Reply-To: <44442707-dbe7-46dc-9039-2d88ec636c23@syntacore.com>
On Fri, Oct 4, 2024 at 11:48 PM Evgenii Prokopiev
<evgenii.prokopiev@syntacore.com> wrote:
>
>
>
> On 04.10.2024 16:38, Evgenii Prokopiev wrote:
> >
> >
> > On 03.10.2024 23:13, Richard Henderson wrote:
> >> On 10/2/24 01:44, Evgenii Prokopiev wrote:
> >>> 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>
> >>> ---
> >>> Changes since v2:
> >>> - Added reviewed-by tag
> >>> target/riscv/csr.c | 4 ++--
> >>> 1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> New versions should not be replies to previous versions.
> >> No need to re-spin *only* to collect tags; tools can do that.
> >>
> > Hi!
> > Thanks for your explanation.
> >>>
> >>> diff --git a/target/riscv/csr.c b/target/riscv/csr.c
> >>> index bd080f92b5..69c41212e9 100644
> >>> --- a/target/riscv/csr.c
> >>> +++ b/target/riscv/csr.c
> >>> @@ -717,7 +717,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;
> >>> }
> >>
> >> Nit: no need to mask on read...
> >>
> >>> @@ -727,7 +727,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;
> >>> }
> >>
> >> ... because you know the value is already correct from the write.
> >>
> > Yes, we mask the value when we make a write. But this value could be
> > changed in other places. So I added a mask when reading happens too.
> > If additional verification is not required, I will delete it.
When replying you don't want to add any > characters for your response.
It probably makes sense to not mask the read, if other code changes
the value in the future the guest will probably want to know.
This is fine as is though, in the future the mask can be removed if required
Thanks!
Applied to riscv-to-apply.next
Alistair
> >>
> >> r~
>
> --
> Sincerely,
> Evgenii Prokopiev
prev parent reply other threads:[~2024-10-08 0:27 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-25 9:35 [PATCH] target/riscv/csr.c: Fix an access to VXSAT Evgenii Prokopiev
2024-09-25 13:35 ` Daniel Henrique Barboza
2024-09-26 8:39 ` [PATCH v2] " Evgenii Prokopiev
2024-10-02 5:45 ` Alistair Francis
2024-10-02 8:44 ` [PATCH v3] " Evgenii Prokopiev
2024-10-03 20:13 ` Richard Henderson
[not found] ` <ed5cf837-e397-44b8-b719-5c5b97646d10@syntacore.com>
2024-10-04 13:48 ` Evgenii Prokopiev
2024-10-08 0:26 ` Alistair Francis [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAKmqyKMSkBHsm0s3VZYWqg6QWq2D9g-MKvNh04vuDagDYYgqbg@mail.gmail.com \
--to=alistair23@gmail.com \
--cc=alistair.francis@wdc.com \
--cc=bmeng.cn@gmail.com \
--cc=dbarboza@ventanamicro.com \
--cc=evgenii.prokopiev@syntacore.com \
--cc=liwei1518@gmail.com \
--cc=palmer@dabbelt.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=zhiwei_liu@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).