target/arm: Enforce alignment for VLDM/VSTM
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20210419202257.161730-21-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
2fd0800c68
commit
ad9aeae1a9
@ -1503,12 +1503,12 @@ static bool trans_VLDM_VSTM_sp(DisasContext *s, arg_VLDM_VSTM_sp *a)
|
||||
for (i = 0; i < n; i++) {
|
||||
if (a->l) {
|
||||
/* load */
|
||||
gen_aa32_ld32u(s, tmp, addr, get_mem_index(s));
|
||||
gen_aa32_ld_i32(s, tmp, addr, get_mem_index(s), MO_UL | MO_ALIGN);
|
||||
vfp_store_reg32(tmp, a->vd + i);
|
||||
} else {
|
||||
/* store */
|
||||
vfp_load_reg32(tmp, a->vd + i);
|
||||
gen_aa32_st32(s, tmp, addr, get_mem_index(s));
|
||||
gen_aa32_st_i32(s, tmp, addr, get_mem_index(s), MO_UL | MO_ALIGN);
|
||||
}
|
||||
tcg_gen_addi_i32(addr, addr, offset);
|
||||
}
|
||||
@ -1586,12 +1586,12 @@ static bool trans_VLDM_VSTM_dp(DisasContext *s, arg_VLDM_VSTM_dp *a)
|
||||
for (i = 0; i < n; i++) {
|
||||
if (a->l) {
|
||||
/* load */
|
||||
gen_aa32_ld64(s, tmp, addr, get_mem_index(s));
|
||||
gen_aa32_ld_i64(s, tmp, addr, get_mem_index(s), MO_Q | MO_ALIGN_4);
|
||||
vfp_store_reg64(tmp, a->vd + i);
|
||||
} else {
|
||||
/* store */
|
||||
vfp_load_reg64(tmp, a->vd + i);
|
||||
gen_aa32_st64(s, tmp, addr, get_mem_index(s));
|
||||
gen_aa32_st_i64(s, tmp, addr, get_mem_index(s), MO_Q | MO_ALIGN_4);
|
||||
}
|
||||
tcg_gen_addi_i32(addr, addr, offset);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user