qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/1] target/loongarch: LL.{W/D} need writes val to dest regis


From: Richard Henderson
Subject: Re: [PATCH 1/1] target/loongarch: LL.{W/D} need writes val to dest register after sign extension
Date: Wed, 1 Feb 2023 19:51:46 -1000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2

On 2/1/23 17:16, Song Gao wrote:
The Manual 2.2.7.2:
     'The LL.{W/D} instruction retrieves a word/double-word data from
     the specified address of the memory and writes it to the general
     register rd after sign extension.'

Signed-off-by: Song Gao <gaosong@loongson.cn>
---
  target/loongarch/insn_trans/trans_atomic.c.inc | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

The sign-extension is provided by

TRANS(ll_w, gen_ll, MO_TESL)
                    ^^^^^^^
this.

So what's the issue?


r~


diff --git a/target/loongarch/insn_trans/trans_atomic.c.inc 
b/target/loongarch/insn_trans/trans_atomic.c.inc
index 6763c1c301..24fea558d6 100644
--- a/target/loongarch/insn_trans/trans_atomic.c.inc
+++ b/target/loongarch/insn_trans/trans_atomic.c.inc
@@ -12,8 +12,8 @@ static bool gen_ll(DisasContext *ctx, arg_rr_i *a, MemOp mop)
      tcg_gen_addi_tl(t0, src1, a->imm);
      tcg_gen_qemu_ld_i64(dest, t0, ctx->mem_idx, mop);
      tcg_gen_st_tl(t0, cpu_env, offsetof(CPULoongArchState, lladdr));
+    gen_set_gpr(a->rd, dest, EXT_SIGN);
      tcg_gen_st_tl(dest, cpu_env, offsetof(CPULoongArchState, llval));
-    gen_set_gpr(a->rd, dest, EXT_NONE);
      tcg_temp_free(t0);
return true;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]