mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-03-23 05:25:11 +00:00
tcg/mips: Bugfix for crash when running program with qemu-i386.
When running a helloworld program with qemu-i386 in linux-user mode on Loongson 3A3000, it will crash. This patch fix the bug. Backports commit 8b8d768f19037a825a0bc81654492caa7c8fab8b from qemu
This commit is contained in:
parent
2141c777f1
commit
60703a4f57
|
@ -1497,13 +1497,13 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, bool is_64)
|
|||
tcg_out_ext32u(s, base, addr_regl);
|
||||
addr_regl = base;
|
||||
}
|
||||
if (GUEST_BASE == 0 && data_regl != addr_regl) {
|
||||
if (guest_base == 0 && data_regl != addr_regl) {
|
||||
base = addr_regl;
|
||||
} else if (GUEST_BASE == (int16_t)GUEST_BASE) {
|
||||
} else if (guest_base == (int16_t)guest_base) {
|
||||
tcg_out_opc_imm(s, ALIAS_PADDI, base, addr_regl, guest_base);
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
tcg_out_qemu_ld_direct(s, data_regl, data_regh, base, opc, is_64);
|
||||
#endif
|
||||
|
@ -1656,8 +1656,8 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, bool is_64)
|
|||
} else if (guest_base == (int16_t)guest_base) {
|
||||
tcg_out_opc_imm(s, ALIAS_PADDI, base, addr_regl, guest_base);
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
tcg_out_qemu_st_direct(s, data_regl, data_regh, base, opc);
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue