target/arm: Fix sve ldr/str

The mte update missed a bit when producing clean addresses.

Fixes: b2aa8879b88

Backports d8227b098301935ea8e0e032e7d41e5dc3e97590
This commit is contained in:
Richard Henderson 2021-03-01 19:19:52 -05:00 committed by Lioncash
parent 79feec40df
commit ccb293911f

View file

@ -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 {