Yesterday I successfully got in touch with a Debian developer from imgtec. Welcome Su Yunqiang. V4 patch can be tested on mips64 be hosts now. The following guests on a mips64 big-endian host is OK: - Debian i386 with qemu-system-i386 - Debian i386 with qemu-system-x86_64
However, Debian amd64 with qemu-system-x86_64 fails to boot kernel. A 'rep movsq' instruction is wrongly emulated. I will fix this bug within one or two days. But even Su cannot provide an R6 machine. Jin Guojie ---Original--- From: "Jin Guojie"<[email protected]> Date: 2016/11/29 14:08:16 To: "qemu-devel"<[email protected]>; Cc: "Richard Henderson"<[email protected]>;"James Hogan"<[email protected]>;"Aurelien Jarno"<[email protected]>;"Jin Guojie"<[email protected]>; Subject: [PATCH v4 00/10] tcg mips64 and mips r6 improvements Changes since v3: * tcg_out_qemu_ld_slow_path: always sign-extend 32-bit loads. Provide a better solution than patch11 in v3. Fix the blocking bug when emulating i386 kernel on mips64el. * Redefine LO_OFF/HI_OFF as v2. On mips64 host, they are defined as link_error, to ensure that all paths that lead to the use of the symbol are eliminated by the compiler. Other info: * Update against master(v2.8.0-rc1) * Tested on Loongson as mips32r2(el) and mips64r2(el) hosts. Loongson only implements little-endian mips32/mips64 ISA. * Fully work for 32-bit and 64-bit guests. Fix two bugs??segmentation fault on mips64el with 32-bit guests, blocking when emulating i386 kernel on mips64el. * Fix some minor style problems. * PATCH v2 12~16 are not examined due to the lack of R6 machine. To be tested: * big-endian mips32 and mips64 hosts. * MIPS R6. Summary of changes from v3: | tcg-mips: Always use tcg_debug_assert | merged previously | | tcg-mips: Move bswap code to a subroutine | no change | | tcg-mips: Add mips64 opcodes | no change | | tcg-mips: Support 64-bit opcodes | no change | | tcg-mips: Add bswap32u and bswap64 | no change | | tcg-mips: Adjust move functions for mips64 | no change | | tcg-mips: Adjust load/store functions for | no change | | tcg-mips: Adjust prologue for mips64 | no change | | tcg-mips: Add tcg unwind info | no change | | tcg-mips: Adjust calling conventions for | no change | | tcg-mips: Adjust qemu_ld/st for mips64 | | (1) tcg_out_qemu_st_slow_path??fix the crash on mips64el with | | i386 guest, when executing seabios | | (2) tcg_out_qemu_ld_slow_path: always sign-extend 32-bit loads | | Fix the blocking when emulating i386 kernel on mips64el | | tcg-mips: Adjust condition functions for mips64 (abandoned) | Jin Guojie (10): tcg-mips: Move bswap code to a subroutine tcg-mips: Add mips64 opcodes tcg-mips: Support 64-bit opcodes tcg-mips: Add bswap32u and bswap64 tcg-mips: Adjust move functions for mips64 tcg-mips: Adjust load/store functions for mips64 tcg-mips: Adjust prologue for mips64 tcg-mips: Add tcg unwind info tcg-mips: Adjust calling conventions for mips64 tcg-mips: Adjust qemu_ld/st for mips64 Cc: Aurelien Jarno <[email protected]> Cc: James Hogan <[email protected]> Signed-off-by: Richard Henderson <[email protected]> Signed-off-by: Jin Guojie <[email protected]> tcg/mips/tcg-target.h | 60 ++- tcg/mips/tcg-target.inc.c | 1168 +++++++++++++++++++++++++++++++++++---------- 2 files changed, 975 insertions(+), 253 deletions(-) -- 2.1.0
