Hi Richard, On Mon, Apr 19, 2021 at 01:22:43PM -0700, Richard Henderson wrote: > Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > target/arm/translate.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/target/arm/translate.c b/target/arm/translate.c > index 29fbbb84b2..f58ac4f018 100644 > --- a/target/arm/translate.c > +++ b/target/arm/translate.c > @@ -7868,7 +7868,7 @@ static bool op_stm(DisasContext *s, arg_ldst_block *a, > int min_n) > } else { > tmp = load_reg(s, i); > } > - gen_aa32_st32(s, tmp, addr, mem_idx); > + gen_aa32_st_i32(s, tmp, addr, mem_idx, MO_UL | MO_ALIGN); > tcg_temp_free_i32(tmp); > > /* No need to add after the last transfer. */ > @@ -7943,7 +7943,7 @@ static bool do_ldm(DisasContext *s, arg_ldst_block *a, > int min_n) > } > > tmp = tcg_temp_new_i32(); > - gen_aa32_ld32u(s, tmp, addr, mem_idx); > + gen_aa32_ld_i32(s, tmp, addr, mem_idx, MO_UL | MO_ALIGN); > if (user) { > tmp2 = tcg_const_i32(i); > gen_helper_set_user_reg(cpu_env, tmp2, tmp); > -- > 2.25.1
I just bisected a boot hang with an LLVM-built multi_v7_defconfig + CONFIG_THUMB2_KERNEL=y kernel down to this commit. I do not see the same hang when the kernel is compiled with GCC 11.2.0 and binutils 2.37 nor do I see a hang with multi_v7_defconfig by itself. Is there something that LLVM is doing wrong when compiling/assembling/linking the kernel or is there something wrong/too aggressive with this commit? I can reproduce this with current QEMU HEAD (ad22d05833). My QEMU invocation is: $ qemu-system-arm \ -append "console=ttyAMA0 earlycon" \ -display none \ -initrd rootfs.cpio \ -kernel zImage \ -M virt \ -m 512m \ -nodefaults \ -no-reboot \ -serial mon:stdio and the rootfs.cpio and zImage files can be found here: https://github.com/nathanchance/bug-files/tree/15c1fd6e44622a3c27823d2c5c3083dfc7246146/qemu-2e1f39e29bf9a6b28eaee9fc0949aab50dbad94a Cheers, Nathan