Message ID | 1499397307-13605-1-git-send-email-jiang.biao2@zte.com.cn (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 07/06/2017 05:15 PM, Jiang Biao wrote: > When running a helloworld program with qemu-i386 in linux-user > mode on Loongson 3A3000, it will crash. This patch fix the bug. > > Signed-off-by: Jiang Biao<jiang.biao2@zte.com.cn> > --- > tcg/mips/tcg-target.inc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tcg/mips/tcg-target.inc.c b/tcg/mips/tcg-target.inc.c > index 8cff9a6..e6fedc9 100644 > --- a/tcg/mips/tcg-target.inc.c > +++ b/tcg/mips/tcg-target.inc.c > @@ -1540,7 +1540,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, bool is_64) > #else > if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { > tcg_out_ext32u(s, base, addr_regl); > - addr_regl = base; > + tcg_out_mov(s, TCG_TYPE_PTR, addr_regl, base); > } > if (guest_base == 0 && data_regl != addr_regl) { > base = addr_regl; This is wrong, because you're not allowed to modify the input operands. Try this, just a few lines lower in the function: - tcg_out_movi(s, TCG_TYPE_PTR, base, guest_base); - tcg_out_opc_reg(s, ALIAS_PADD, base, base, addr_regl); + tcg_out_movi(s, TCG_TYPE_PTR, TCG_TMP0, guest_base); + tcg_out_opc_reg(s, ALIAS_PADD, base, TCG_TMP0, addr_regl); and you'll need the same change within tcg_out_qemu_st. Better would be to reserve a register for the guest_base, like we do for ppc. See all of the uses of TCG_GUEST_BASE_REG in tcg/ppc/tcg-target.inc.c. r~
diff --git a/tcg/mips/tcg-target.inc.c b/tcg/mips/tcg-target.inc.c index 8cff9a6..e6fedc9 100644 --- a/tcg/mips/tcg-target.inc.c +++ b/tcg/mips/tcg-target.inc.c @@ -1540,7 +1540,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, bool is_64) #else if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { tcg_out_ext32u(s, base, addr_regl); - addr_regl = base; + tcg_out_mov(s, TCG_TYPE_PTR, addr_regl, base); } if (guest_base == 0 && data_regl != addr_regl) { base = addr_regl;
When running a helloworld program with qemu-i386 in linux-user mode on Loongson 3A3000, it will crash. This patch fix the bug. Signed-off-by: Jiang Biao <jiang.biao2@zte.com.cn> --- tcg/mips/tcg-target.inc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)