On Fri, Jul 12, 2019 at 8:19 PM Aleksandar Markovic <aleksandar.m.m...@gmail.com> wrote: > > On Fri, Jul 12, 2019 at 8:09 PM Aleksandar Markovic > <aleksandar.m.m...@gmail.com> wrote: > > > > Hello, Richard, Peter, and others. > > > > As a part of activities before 4.1 release, I tested nanoMIPS support > > in QEMU (which was officially fully integrated in 4.0, is currently > > limited to system mode only, and was tested in a similar fashion right > > prior to 4.0). > > > > This support appears to be broken now. Following command line works in > > 4.0, but results in kernel panic for the current tip of the tree: > > > > ~/Build/qemu-test-revert-c6fb8c0cf704/mipsel-softmmu/qemu-system-mipsel > > -cpu I7200 -kernel generic_nano32r6el_page4k -M malta -serial stdio -m > > 1G -hda nanomips32r6_le_sf_2017.05-03-59-gf5595d6.ext4 -append > > "mem=256m@0x0 rw console=ttyS0 vga=cirrus vesa=0x111 root=/dev/sda" > > > > (kernel and rootfs image files used in this commend line can be > > downloaded from the locations mentioned in our user guide) > > > > The quick bisect points to the commit: > > > > commit c6fb8c0cf704c4a1a48c3e99e995ad4c58150dab > > Author: Richard Henderson <richard.hender...@linaro.org> > > Date: Mon Feb 25 11:42:35 2019 -0800 > > > > tcg/i386: Support INDEX_op_extract2_{i32,i64} > > > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > > > > Please advise on further actions. > > > > Just to add a data point: > > If the following change is applied: > > diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h > index 928e8b8..b6a4cf2 100644 > --- a/tcg/i386/tcg-target.h > +++ b/tcg/i386/tcg-target.h > @@ -124,7 +124,7 @@ extern bool have_avx2; > #define TCG_TARGET_HAS_deposit_i32 1 > #define TCG_TARGET_HAS_extract_i32 1 > #define TCG_TARGET_HAS_sextract_i32 1 > -#define TCG_TARGET_HAS_extract2_i32 1 > +#define TCG_TARGET_HAS_extract2_i32 0 > #define TCG_TARGET_HAS_movcond_i32 1 > #define TCG_TARGET_HAS_add2_i32 1 > #define TCG_TARGET_HAS_sub2_i32 1 > @@ -163,7 +163,7 @@ extern bool have_avx2; > #define TCG_TARGET_HAS_deposit_i64 1 > #define TCG_TARGET_HAS_extract_i64 1 > #define TCG_TARGET_HAS_sextract_i64 0 > -#define TCG_TARGET_HAS_extract2_i64 1 > +#define TCG_TARGET_HAS_extract2_i64 0 > #define TCG_TARGET_HAS_movcond_i64 1 > #define TCG_TARGET_HAS_add2_i64 1 > #define TCG_TARGET_HAS_sub2_i64 1 > > ... the problem disappears. >
It looks the problem is in this code segment in of tcg_gen_deposit_i32(): if (ofs == 0) { tcg_gen_extract2_i32(ret, arg1, arg2, len); tcg_gen_rotli_i32(ret, ret, len); goto done; } ) If that code segment is deleted altogether (which effectively forces usage of "fallback" part of tcg_gen_deposit_i32()), the problem also vanishes (without changes from my previous mail). > > > Yours, > > Aleksandar