All of lore.kernel.org
 help / color / mirror / Atom feed
From: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
To: Alexey Baturo <baturo.alexey@gmail.com>
Cc: richard.henderson@linaro.org, space.monkey.delivers@gmail.com,
	palmer@dabbelt.com, Alistair.Francis@wdc.com,
	sagark@eecs.berkeley.edu, kbastian@mail.uni-paderborn.de,
	qemu-devel@nongnu.org, qemu-riscv@nongnu.org
Subject: Re: [PATCH v9 5/6] target/riscv: Update address modify functions to take into account pointer masking
Date: Mon, 13 May 2024 20:46:31 +0800	[thread overview]
Message-ID: <d9b393bb-55df-4280-a98d-3877fe52c947@linux.alibaba.com> (raw)
In-Reply-To: <20240511101053.1875596-6-me@deliversmonkey.space>


On 2024/5/11 18:10, Alexey Baturo wrote:
> From: Alexey Baturo <baturo.alexey@gmail.com>
>
> Signed-off-by: Alexey Baturo <baturo.alexey@gmail.com>
>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
> ---
>   target/riscv/translate.c     | 22 ++++++++++++++++------
>   target/riscv/vector_helper.c | 13 +++++++++++++
>   2 files changed, 29 insertions(+), 6 deletions(-)
>
> diff --git a/target/riscv/translate.c b/target/riscv/translate.c
> index 3f578d6dd8..da46e636f8 100644
> --- a/target/riscv/translate.c
> +++ b/target/riscv/translate.c
> @@ -580,8 +580,10 @@ static TCGv get_address(DisasContext *ctx, int rs1, int imm)
>       TCGv src1 = get_gpr(ctx, rs1, EXT_NONE);
>   
>       tcg_gen_addi_tl(addr, src1, imm);
> -    if (get_address_xl(ctx) == MXL_RV32) {
> -        tcg_gen_ext32u_tl(addr, addr);
> +    if (ctx->addr_signed) {
> +        tcg_gen_sextract_tl(addr, addr, 0, ctx->addr_width);
> +    } else {
> +        tcg_gen_extract_tl(addr, addr, 0, ctx->addr_width);
>       }
>   
>       return addr;
> @@ -594,8 +596,10 @@ static TCGv get_address_indexed(DisasContext *ctx, int rs1, TCGv offs)
>       TCGv src1 = get_gpr(ctx, rs1, EXT_NONE);
>   
>       tcg_gen_add_tl(addr, src1, offs);
> -    if (get_xl(ctx) == MXL_RV32) {
> -        tcg_gen_ext32u_tl(addr, addr);
> +    if (ctx->addr_signed) {
> +        tcg_gen_sextract_tl(addr, addr, 0, ctx->addr_width);
> +    } else {
> +        tcg_gen_extract_tl(addr, addr, 0, ctx->addr_width);
>       }
>       return addr;
>   }
> @@ -1188,8 +1192,14 @@ static void riscv_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
>       ctx->xl = FIELD_EX32(tb_flags, TB_FLAGS, XL);
>       ctx->address_xl = FIELD_EX32(tb_flags, TB_FLAGS, AXL);
>       ctx->cs = cs;
> -    ctx->addr_width = 0;
> -    ctx->addr_signed = false;
> +    if (get_xl(ctx) == MXL_RV32) {
Maybe ctx->address_xl?
> +        ctx->addr_width = 32;
> +        ctx->addr_signed = false;
In tcg inline code, we have considered the XL. But
> +    } else {
> +        int pm_pmm = FIELD_EX32(tb_flags, TB_FLAGS, PM_PMM);
> +        ctx->addr_width = 64 - riscv_pm_get_pmlen(pm_pmm);
> +        ctx->addr_signed = FIELD_EX32(tb_flags, TB_FLAGS, PM_SIGNEXTEND);
> +    }
>       ctx->ztso = cpu->cfg.ext_ztso;
>       ctx->itrigger = FIELD_EX32(tb_flags, TB_FLAGS, ITRIGGER);
>       ctx->zero = tcg_constant_tl(0);
> diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c
> index 39ba2a09dd..28861cc509 100644
> --- a/target/riscv/vector_helper.c
> +++ b/target/riscv/vector_helper.c
> @@ -104,6 +104,19 @@ static inline uint32_t vext_max_elems(uint32_t desc, uint32_t log2_esz)
>   
>   static inline target_ulong adjust_addr(CPURISCVState *env, target_ulong addr)
>   {

here, we don't process the MXL_RV32. We should process it explicitly here.

Zhiwei

> +    RISCVPmPmm pmm = riscv_pm_get_pmm(env);
> +    if (pmm == PMM_FIELD_DISABLED) {
> +        return addr;
> +    }
> +    int pmlen = riscv_pm_get_pmlen(pmm);
> +    bool signext = riscv_cpu_virt_mem_enabled(env);
> +    addr = addr << pmlen;
> +    /* sign/zero extend masked address by N-1 bit */
> +    if (signext) {
> +        addr = (target_long)addr >> pmlen;
> +    } else {
> +        addr = addr >> pmlen;
> +    }
>       return addr;
>   }
>   


  reply	other threads:[~2024-05-13 12:47 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-11 10:10 [PATCH v9 0/6] Pointer Masking update for Zjpm v1.0 Alexey Baturo
2024-05-11 10:10 ` [PATCH v9 1/6] target/riscv: Remove obsolete pointer masking extension code Alexey Baturo
2024-05-11 10:10 ` [PATCH v9 2/6] target/riscv: Add new CSR fields for S{sn, mn, m}pm extensions as part of Zjpm v0.8 Alexey Baturo
2024-05-11 14:16   ` liwei
2024-05-13 11:29   ` Alistair Francis
2024-06-02 23:00   ` Daniel Henrique Barboza
2024-06-27  7:18   ` Frank Chang
2024-06-27  7:42   ` Frank Chang
2024-05-11 10:10 ` [PATCH v9 3/6] target/riscv: Add helper functions to calculate current number of masked bits for pointer masking Alexey Baturo
2024-05-13 12:11   ` LIU Zhiwei
2024-05-13 12:35   ` LIU Zhiwei
2024-05-13 12:39     ` LIU Zhiwei
2024-05-11 10:10 ` [PATCH v9 4/6] target/riscv: Add pointer masking tb flags Alexey Baturo
2024-05-13 12:13   ` LIU Zhiwei
2024-05-11 10:10 ` [PATCH v9 5/6] target/riscv: Update address modify functions to take into account pointer masking Alexey Baturo
2024-05-13 12:46   ` LIU Zhiwei [this message]
2024-05-11 10:10 ` [PATCH v9 6/6] target/riscv: Enable updates for pointer masking variables and thus enable pointer masking extension Alexey Baturo
2024-05-13 12:48   ` LIU Zhiwei
2024-05-11 13:56 ` [PATCH v9 0/6] Pointer Masking update for Zjpm v1.0 liwei
2024-05-13 10:24   ` Alistair Francis
2024-05-13 11:05     ` Alexey Baturo
2024-05-13 11:14       ` Alistair Francis
2024-05-13 11:32         ` Alistair Francis
2024-05-14 16:08           ` Alexey Baturo
2024-05-13 12:50 ` LIU Zhiwei
2024-10-29 17:40 ` Daniel Henrique Barboza
2024-10-30 14:17   ` Alexey Baturo
2024-10-30 16:54     ` Daniel Henrique Barboza

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=d9b393bb-55df-4280-a98d-3877fe52c947@linux.alibaba.com \
    --to=zhiwei_liu@linux.alibaba.com \
    --cc=Alistair.Francis@wdc.com \
    --cc=baturo.alexey@gmail.com \
    --cc=kbastian@mail.uni-paderborn.de \
    --cc=palmer@dabbelt.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=sagark@eecs.berkeley.edu \
    --cc=space.monkey.delivers@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.