From ccb293911fab8dd995ca328aa55f3575ba627db2 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 1 Mar 2021 19:19:52 -0500 Subject: [PATCH] target/arm: Fix sve ldr/str The mte update missed a bit when producing clean addresses. Fixes: b2aa8879b88 Backports d8227b098301935ea8e0e032e7d41e5dc3e97590 --- qemu/target/arm/translate-sve.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qemu/target/arm/translate-sve.c b/qemu/target/arm/translate-sve.c index 5e96ebde..0fed0868 100644 --- a/qemu/target/arm/translate-sve.c +++ b/qemu/target/arm/translate-sve.c @@ -4396,7 +4396,7 @@ static void do_ldr(DisasContext *s, uint32_t vofs, int len, int rn, int imm) for (i = 0; i < len_align; i += 8) { tcg_gen_qemu_ld_i64(s->uc, t0, clean_addr, midx, MO_LEQ); tcg_gen_st_i64(tcg_ctx, t0, tcg_ctx->cpu_env, vofs + i); - tcg_gen_addi_i64(tcg_ctx, clean_addr, cpu_reg_sp(s, rn), 8); + tcg_gen_addi_i64(tcg_ctx, clean_addr, clean_addr, 8); } tcg_temp_free_i64(tcg_ctx, t0); } else { @@ -4486,7 +4486,7 @@ static void do_str(DisasContext *s, uint32_t vofs, int len, int rn, int imm) for (i = 0; i < len_align; i += 8) { tcg_gen_ld_i64(tcg_ctx, t0, tcg_ctx->cpu_env, vofs + i); tcg_gen_qemu_st_i64(s->uc, t0, clean_addr, midx, MO_LEQ); - tcg_gen_addi_i64(tcg_ctx, clean_addr, cpu_reg_sp(s, rn), 8); + tcg_gen_addi_i64(tcg_ctx, clean_addr, clean_addr, 8); } tcg_temp_free_i64(tcg_ctx, t0); } else {