Re: [Qemu-devel] cvttps2dq, movdq2q, movq2dq incorrect behaviour
On Wed, 21 Jun 2006, Julian Seward wrote: Malc, your sse-movq.patch works for me. Thanks. soft-float was a red herring, translate.c is at fault here (interpreter does not use it, hence behaved correctly) translate.c:3009 if (b1 = 2 ((b = 0x50 b = 0x5f) || b == 0xc2)) { /* specific case for SSE single instructions */ if (b1 == 2) { /* 32 bit access */ gen_op_ld_T0_A0[OT_LONG + s-mem_index](); gen_op_movl_env_T0(offsetof(CPUX86State,xmm_t0.XMM_L(0))); } else { /* 64 bit access */ gen_ldq_env_A0[s-mem_index 2](offsetof(CPUX86State,xmm_t0.XMM_D(0))); } } else { gen_ldo_env_A0[s-mem_index 2](op2_offset); } cvttps2dq is 0x5b(b=0x5b) with repn prefix (b1=2) the above code is optimized a bit more than it should have been, as it loads only 4 bytes into xmm_t0 instead of 16. Uh, fine, but I don't understand how/what to fix. Can you advise? Following will fix the _specific_ case of cvttps2dq, ideally one should go through all the [0x50..0x5f, 0xc2] with (repnz,repz prefix) range and check wether the rules imposed by the above snippet apply. --- /mnt/big/npf/cvs/qemux/qemu/target-i386/translate.c Tue Jun 20 15:19:20 2006 +++ translate.c Tue Jun 20 18:17:19 2006 @@ -3009,7 +3009,9 @@ if (b1 = 2 ((b = 0x50 b = 0x5f) || b == 0xc2)) { /* specific case for SSE single instructions */ -if (b1 == 2) { +if (b1 == 2 b == 0x5b) { +gen_ldo_env_A0[s-mem_index 2](offsetof(CPUX86State,xmm_t0.XMM_Q(0))); +} else if (b1 == 2) { /* 32 bit access */ gen_op_ld_T0_A0[OT_LONG + s-mem_index](); gen_op_movl_env_T0(offsetof(CPUX86State,xmm_t0.XMM_L(0))); -- mailto:[EMAIL PROTECTED] ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
Re: [Qemu-devel] cvttps2dq, movdq2q, movq2dq incorrect behaviour
On Wed, 21 Jun 2006, malc wrote: On Wed, 21 Jun 2006, Julian Seward wrote: Malc, your sse-movq.patch works for me. Thanks. soft-float was a red herring, translate.c is at fault here (interpreter does not use it, hence behaved correctly) [..snip..] cvttps2dq is 0x5b(b=0x5b) with repn prefix (b1=2) the above code is optimized a bit more than it should have been, as it loads only 4 bytes into xmm_t0 instead of 16. Uh, fine, but I don't understand how/what to fix. Can you advise? Following will fix the _specific_ case of cvttps2dq, ideally one should go through all the [0x50..0x5f, 0xc2] with (repnz,repz prefix) range and check wether the rules imposed by the above snippet apply. [..snip..] It appears that cvttps2dq is indeed the only exception in the range, combined patch that fixes both movd?q2d?q and cvttps2dq is attached. I don't have any kind of SSE on this machine so would apprecaite if someone would run tests/test-i386 with the patch attached. -- mailto:[EMAIL PROTECTED]Index: target-i386/translate.c === RCS file: /cvsroot/qemu/qemu/target-i386/translate.c,v retrieving revision 1.57 diff -u -u -r1.57 translate.c --- target-i386/translate.c 14 Jun 2006 14:29:34 - 1.57 +++ target-i386/translate.c 21 Jun 2006 11:01:47 - @@ -2947,15 +2947,15 @@ case 0x2d6: /* movq2dq */ gen_op_enter_mmx(); rm = (modrm 7) | REX_B(s); -gen_op_movq(offsetof(CPUX86State,xmm_regs[rm].XMM_Q(0)), -offsetof(CPUX86State,fpregs[reg 7].mmx)); -gen_op_movq_env_0(offsetof(CPUX86State,xmm_regs[rm].XMM_Q(1))); +gen_op_movq(offsetof(CPUX86State,xmm_regs[reg 7].XMM_Q(0)), +offsetof(CPUX86State,fpregs[rm].mmx)); +gen_op_movq_env_0(offsetof(CPUX86State,xmm_regs[reg 7].XMM_Q(1))); break; case 0x3d6: /* movdq2q */ gen_op_enter_mmx(); rm = (modrm 7); -gen_op_movq(offsetof(CPUX86State,fpregs[rm].mmx), -offsetof(CPUX86State,xmm_regs[reg].XMM_Q(0))); +gen_op_movq(offsetof(CPUX86State,fpregs[reg].mmx), +offsetof(CPUX86State,xmm_regs[rm].XMM_Q(0))); break; case 0xd7: /* pmovmskb */ case 0x1d7: @@ -3006,8 +3006,9 @@ if (mod != 3) { gen_lea_modrm(s, modrm, reg_addr, offset_addr); op2_offset = offsetof(CPUX86State,xmm_t0); -if (b1 = 2 ((b = 0x50 b = 0x5f) || -b == 0xc2)) { +if (!(b1 == 2 b == 0x5b) +(b1 = 2 ((b = 0x50 b = 0x5f) || +b == 0xc2))) { /* specific case for SSE single instructions */ if (b1 == 2) { /* 32 bit access */ ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
[Qemu-devel] [PATCH] Soft float for Sparc32/64 (update)
Last time I missed a lot of the functions, this version should be complete. I see no difference in operation with or without the patch. Comments? Description: Change all uses of float/double and related functions in Sparc32/64 to soft float replacements. _ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ sparc-softfloat.diff.bz2 Description: Binary data ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
[Qemu-devel] qemu/linux-user main.c syscall.c
CVSROOT:/sources/qemu Module name:qemu Changes by: Fabrice Bellard bellard 06/06/21 18:15:50 Modified files: linux-user : main.c syscall.c Log message: sparc user fixes (Blue Swirl) CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/linux-user/main.c?cvsroot=qemur1=1.88r2=1.89 http://cvs.savannah.gnu.org/viewcvs/qemu/linux-user/syscall.c?cvsroot=qemur1=1.72r2=1.73 Patches: Index: main.c === RCS file: /sources/qemu/qemu/linux-user/main.c,v retrieving revision 1.88 retrieving revision 1.89 diff -u -b -r1.88 -r1.89 --- main.c 18 Jun 2006 19:12:54 - 1.88 +++ main.c 21 Jun 2006 18:15:50 - 1.89 @@ -598,7 +598,8 @@ #else // XXX #endif - case 0x100: // XXX, why do we get these? +case EXCP_INTERRUPT: +/* just indicate that signals should be handled asap */ break; case EXCP_DEBUG: { Index: syscall.c === RCS file: /sources/qemu/qemu/linux-user/syscall.c,v retrieving revision 1.72 retrieving revision 1.73 diff -u -b -r1.72 -r1.73 --- syscall.c 14 Jun 2006 13:36:59 - 1.72 +++ syscall.c 21 Jun 2006 18:15:50 - 1.73 @@ -1538,6 +1538,11 @@ new_env-regs[13] = newsp; new_env-regs[0] = 0; #elif defined(TARGET_SPARC) +if (!newsp) +newsp = env-regwptr[22]; +new_env-regwptr[22] = newsp; +new_env-regwptr[0] = 0; + /* X */ printf (HELPME: %s:%d\n, __FILE__, __LINE__); #elif defined(TARGET_MIPS) printf (HELPME: %s:%d\n, __FILE__, __LINE__); @@ -3598,10 +3603,14 @@ case TARGET_NR_get_thread_area: goto unimplemented_nowarn; #endif +#ifdef TARGET_NR_getdomainname +case TARGET_NR_getdomainname: +goto unimplemented_nowarn; +#endif default: unimplemented: gemu_log(qemu: Unsupported syscall: %d\n, num); -#if defined(TARGET_NR_setxattr) || defined(TARGET_NR_set_thread_area) +#if defined(TARGET_NR_setxattr) || defined(TARGET_NR_set_thread_area) || defined(TARGET_NR_getdomainname) unimplemented_nowarn: #endif ret = -ENOSYS; ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
[Qemu-devel] qemu/target-sparc translate.c
CVSROOT:/sources/qemu Module name:qemu Changes by: Fabrice Bellard bellard 06/06/21 18:26:15 Modified files: target-sparc : translate.c Log message: sparc branch fix (Blue Swirl) CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/target-sparc/translate.c?cvsroot=qemur1=1.27r2=1.28 Patches: Index: translate.c === RCS file: /sources/qemu/qemu/target-sparc/translate.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -b -r1.27 -r1.28 --- translate.c 18 Jun 2006 19:36:58 - 1.27 +++ translate.c 21 Jun 2006 18:26:15 - 1.28 @@ -956,8 +956,8 @@ int cc; target = GET_FIELD_SP(insn, 0, 18); - target = 2; target = sign_extend(target, 18); + target = 2; cc = GET_FIELD_SP(insn, 20, 21); if (cc == 0) do_branch(dc, target, insn, 0); @@ -971,8 +971,8 @@ { target = GET_FIELD_SP(insn, 0, 13) | (GET_FIELD_SP(insn, 20, 21) 7); - target = 2; target = sign_extend(target, 16); + target = 2; rs1 = GET_FIELD(insn, 13, 17); gen_movl_reg_T0(rs1); do_branch_reg(dc, target, insn); @@ -986,8 +986,8 @@ gen_op_trap_ifnofpu(); #endif target = GET_FIELD_SP(insn, 0, 18); - target = 2; target = sign_extend(target, 19); + target = 2; do_fbranch(dc, target, insn, cc); goto jmp_insn; } @@ -995,8 +995,8 @@ case 0x2: /* BN+x */ { target = GET_FIELD(insn, 10, 31); - target = 2; target = sign_extend(target, 22); + target = 2; do_branch(dc, target, insn, 0); goto jmp_insn; } @@ -1007,8 +1007,8 @@ gen_op_trap_ifnofpu(); #endif target = GET_FIELD(insn, 10, 31); - target = 2; target = sign_extend(target, 22); + target = 2; do_fbranch(dc, target, insn, 0); goto jmp_insn; } ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
[Qemu-devel] qemu configure target-sparc/cpu.h target-sparc/...
CVSROOT:/sources/qemu Module name:qemu Changes by: Fabrice Bellard bellard 06/06/21 18:37:05 Modified files: . : configure target-sparc : cpu.h op.c op_helper.c Log message: soft floats for SPARC (Blue Swirl) CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/configure?cvsroot=qemur1=1.108r2=1.109 http://cvs.savannah.gnu.org/viewcvs/qemu/target-sparc/cpu.h?cvsroot=qemur1=1.21r2=1.22 http://cvs.savannah.gnu.org/viewcvs/qemu/target-sparc/op.c?cvsroot=qemur1=1.19r2=1.20 http://cvs.savannah.gnu.org/viewcvs/qemu/target-sparc/op_helper.c?cvsroot=qemur1=1.19r2=1.20 Patches: Index: configure === RCS file: /sources/qemu/qemu/configure,v retrieving revision 1.108 retrieving revision 1.109 diff -u -b -r1.108 -r1.109 --- configure 18 Jun 2006 19:16:53 - 1.108 +++ configure 21 Jun 2006 18:37:05 - 1.109 @@ -850,7 +850,7 @@ echo #define CONFIG_USER_ONLY 1 $config_h fi -if test $target_cpu = arm -o $target_cpu = armeb ; then +if test $target_cpu = arm -o $target_cpu = armeb -o $target_cpu = sparc -o $target_cpu = sparc64; then echo CONFIG_SOFTFLOAT=yes $config_mak echo #define CONFIG_SOFTFLOAT 1 $config_h fi Index: target-sparc/cpu.h === RCS file: /sources/qemu/qemu/target-sparc/cpu.h,v retrieving revision 1.21 retrieving revision 1.22 diff -u -b -r1.21 -r1.22 --- target-sparc/cpu.h 5 Dec 2005 20:31:52 - 1.21 +++ target-sparc/cpu.h 21 Jun 2006 18:37:05 - 1.22 @@ -12,7 +12,7 @@ #define TARGET_FPREGS 64 #define TARGET_PAGE_BITS 12 /* XXX */ #endif -#define TARGET_FPREG_T float +#define TARGET_FPREG_T float32 #include cpu-defs.h @@ -146,7 +146,7 @@ typedef struct CPUSPARCState { target_ulong gregs[8]; /* general registers */ target_ulong *regwptr; /* pointer to current register window */ -TARGET_FPREG_Tfpr[TARGET_FPREGS]; /* floating point registers */ +float32 fpr[TARGET_FPREGS]; /* floating point registers */ target_ulong pc; /* program counter */ target_ulong npc; /* next program counter */ target_ulong y;/* multiply/divide register */ @@ -187,8 +187,8 @@ uint32_t mmuregs[16]; #endif /* temporary float registers */ -float ft0, ft1; -double dt0, dt1; +float32 ft0, ft1; +float64 dt0, dt1; float_status fp_status; #if defined(TARGET_SPARC64) #define MAXTL 4 @@ -236,8 +236,6 @@ CPUSPARCState *cpu_sparc_init(void); int cpu_sparc_exec(CPUSPARCState *s); int cpu_sparc_close(CPUSPARCState *s); -void cpu_get_fp64(uint64_t *pmant, uint16_t *pexp, double f); -double cpu_put_fp64(uint64_t mant, uint16_t exp); /* Fake impl 0, version 4 */ #define GET_PSR(env) ((0 28) | (4 24) | (env-psr PSR_ICC) | \ Index: target-sparc/op.c === RCS file: /sources/qemu/qemu/target-sparc/op.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -b -r1.19 -r1.20 --- target-sparc/op.c 23 Apr 2006 21:33:48 - 1.19 +++ target-sparc/op.c 21 Jun 2006 18:37:05 - 1.20 @@ -1339,94 +1339,66 @@ helper_flush(T0); } -void OPPROTO op_fnegs(void) -{ -FT0 = -FT1; -} - -void OPPROTO op_fabss(void) -{ -do_fabss(); -} +#define F_OP(name, p) void OPPROTO op_f##name##p(void) -#ifdef TARGET_SPARC64 -void OPPROTO op_fnegd(void) -{ -DT0 = -DT1; -} - -void OPPROTO op_fabsd(void) -{ -do_fabsd(); -} -#endif - -void OPPROTO op_fsqrts(void) -{ -do_fsqrts(); -} - -void OPPROTO op_fsqrtd(void) -{ -do_fsqrtd(); -} - -void OPPROTO op_fmuls(void) -{ -FT0 *= FT1; -} +#define F_BINOP(name) \ +F_OP(name, s) \ +{ \ +FT0 = float32_ ## name (FT0, FT1, env-fp_status); \ +} \ +F_OP(name, d) \ +{ \ +DT0 = float64_ ## name (DT0, DT1, env-fp_status); \ +} -void OPPROTO op_fmuld(void) -{ -DT0 *= DT1; -} +F_BINOP(add); +F_BINOP(sub); +F_BINOP(mul); +F_BINOP(div); +#undef F_BINOP void OPPROTO op_fsmuld(void) { -DT0 = FT0 * FT1; -} - -void OPPROTO op_fadds(void) -{ -FT0 += FT1; +DT0 = float64_mul(float32_to_float64(FT0, env-fp_status), + float32_to_float64(FT1, env-fp_status), + env-fp_status); } -void OPPROTO op_faddd(void) -{ -DT0 += DT1; -} +#define F_HELPER(name)\ +F_OP(name, s) \ +{ \ +do_f##name##s(); \ +} \ +F_OP(name, d) \ +{ \ +do_f##name##d(); \ +} -void
[Qemu-devel] QEMU GUI
Hi, Concerning the QEMU GUI, my mind slightly evolved since my last posts on the topic: I think that a wxWidgets GUI would be the best as it is reasonnably portable and because it uses the native GUIs. If someone is interested, I am ready to try to include such a GUI in the QEMU repository even if it is not usable yet. Regards, Fabrice. ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
[Qemu-devel] qemu vl.c target-sparc/cpu.h
CVSROOT:/sources/qemu Module name:qemu Changes by: Fabrice Bellard bellard 06/06/21 18:48:02 Modified files: . : vl.c target-sparc : cpu.h Log message: fixed sparc64 cpu fp save/restore CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/vl.c?cvsroot=qemur1=1.189r2=1.190 http://cvs.savannah.gnu.org/viewcvs/qemu/target-sparc/cpu.h?cvsroot=qemur1=1.22r2=1.23 Patches: Index: vl.c === RCS file: /sources/qemu/qemu/vl.c,v retrieving revision 1.189 retrieving revision 1.190 diff -u -b -r1.189 -r1.190 --- vl.c14 Jun 2006 17:32:25 - 1.189 +++ vl.c21 Jun 2006 18:48:00 - 1.190 @@ -4146,11 +4146,11 @@ /* FPU */ for(i = 0; i TARGET_FPREGS; i++) { union { -TARGET_FPREG_T f; -target_ulong i; +float32 f; +uint32_t i; } u; u.f = env-fpr[i]; -qemu_put_betl(f, u.i); +qemu_put_be32(f, u.i); } qemu_put_betls(f, env-pc); @@ -4182,10 +4182,10 @@ /* FPU */ for(i = 0; i TARGET_FPREGS; i++) { union { -TARGET_FPREG_T f; -target_ulong i; +float32 f; +uint32_t i; } u; -u.i = qemu_get_betl(f); +u.i = qemu_get_be32(f); env-fpr[i] = u.f; } Index: target-sparc/cpu.h === RCS file: /sources/qemu/qemu/target-sparc/cpu.h,v retrieving revision 1.22 retrieving revision 1.23 diff -u -b -r1.22 -r1.23 --- target-sparc/cpu.h 21 Jun 2006 18:37:05 - 1.22 +++ target-sparc/cpu.h 21 Jun 2006 18:48:01 - 1.23 @@ -12,7 +12,6 @@ #define TARGET_FPREGS 64 #define TARGET_PAGE_BITS 12 /* XXX */ #endif -#define TARGET_FPREG_T float32 #include cpu-defs.h ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
Re: [Qemu-devel] QEMU GUI
Great Idea... This would be in c++ then, or do You fancy another wxWidget flavour? (I remember You did not like c++ in QEMU) If people are interested, we could try to port Q as a base, since it's going to be obsolete anyway (either by the new QEMU GUI or leopard)... :) http://www.kju-app.org http://www.kju-app.org/proj (trac) Mike On 21.06.2006, at 20:11, Fabrice Bellard wrote: Hi, Concerning the QEMU GUI, my mind slightly evolved since my last posts on the topic: I think that a wxWidgets GUI would be the best as it is reasonnably portable and because it uses the native GUIs. If someone is interested, I am ready to try to include such a GUI in the QEMU repository even if it is not usable yet. Regards, Fabrice. ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
[Qemu-devel] QEMU FreeBSD 6.1 npxdna: fpcurthread == curthread spewage
Hi- I'm using qemu-0.8.1 under FreeBSD 6.1-RELEASE from ports with kqemu-1.3.0pre7 (also from ports). The guest OS is Windows XP SP2. When I use the -kernel-kqemu flag to qemu, I get the following kernel console messages: Jun 21 14:04:57 jitter kernel: npxdna: fpcurthread == curthread 5173 times Jun 21 14:04:57 jitter kernel: npxdna: fpcurthread == curthread 5174 times ... This happens quite a bit (5-10 a second) when using any block device. I assume this is because kernel I/O calls are being virtualized and are the cause of this. When I do not use -kernel-kqemu, I do not get these messages. In both cases, Windows appears to work fine. This thread: http://tinyurl.com/mbm5l appears to have some information on why this happens. Has a patch been released to fix this bug? --- Zach ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
[Qemu-devel] qemu qemu-doc.texi
CVSROOT:/sources/qemu Module name:qemu Changes by: Fabrice Bellard bellard 06/06/21 21:19:50 Modified files: . : qemu-doc.texi Log message: more info about -std-vga CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/qemu-doc.texi?cvsroot=qemur1=1.95r2=1.96 Patches: Index: qemu-doc.texi === RCS file: /sources/qemu/qemu/qemu-doc.texi,v retrieving revision 1.95 retrieving revision 1.96 diff -u -b -r1.95 -r1.96 --- qemu-doc.texi 16 Jun 2006 21:48:48 - 1.95 +++ qemu-doc.texi 21 Jun 2006 21:19:50 - 1.96 @@ -556,7 +556,10 @@ @item -std-vga Simulate a standard VGA card with Bochs VBE extensions (default is -Cirrus Logic GD5446 PCI VGA) +Cirrus Logic GD5446 PCI VGA). If your guest OS supports the VESA 2.0 +VBE extensions (e.g. Windows XP) and if you want to use high +resolution modes (= 1280x1024x16) then you should use this option. + @item -loadvm file Start right away with a saved state (@code{loadvm} in monitor) @end table @@ -1260,6 +1263,11 @@ and use this graphic card. For optimal performances, use 16 bit color depth in the guest and the host OS. +If you are using Windows XP as guest OS and if you want to use high +resolution modes which the Cirrus Logic BIOS does not support (i.e. = +1280x1024x16), then you should use the VESA VBE virtual graphic card +(option @option{-std-vga}). + @subsubsection CPU usage reduction Windows 9x does not correctly use the CPU HLT ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
Re: [Qemu-devel] QEMU FreeBSD 6.1 npxdna: fpcurthread == curthread spewage
There is a bug in the FPU virtualization in kqemu which is only visible in the kernel virtualization case. I am trying a fix. Fabrice. Zach Metzinger wrote: Hi- I'm using qemu-0.8.1 under FreeBSD 6.1-RELEASE from ports with kqemu-1.3.0pre7 (also from ports). The guest OS is Windows XP SP2. When I use the -kernel-kqemu flag to qemu, I get the following kernel console messages: Jun 21 14:04:57 jitter kernel: npxdna: fpcurthread == curthread 5173 times Jun 21 14:04:57 jitter kernel: npxdna: fpcurthread == curthread 5174 times ... This happens quite a bit (5-10 a second) when using any block device. I assume this is because kernel I/O calls are being virtualized and are the cause of this. When I do not use -kernel-kqemu, I do not get these messages. In both cases, Windows appears to work fine. This thread: http://tinyurl.com/mbm5l appears to have some information on why this happens. Has a patch been released to fix this bug? --- Zach ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
Re: [Qemu-devel] cvttps2dq, movdq2q, movq2dq incorrect behaviour
It appears that cvttps2dq is indeed the only exception in the range, combined patch that fixes both movd?q2d?q and cvttps2dq is attached. I don't have any kind of SSE on this machine so would apprecaite if someone would run tests/test-i386 with the patch attached. That works for me. Thanks. Valgrind's integer/x87/MMX/SSE/SSE2 tests now all pass on i386-softmmu. I didn't try tests/test-i386 though. Fabrice, can you commit this? J ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
Re: [Qemu-devel] QEMU FreeBSD 6.1 npxdna: fpcurthread == curthread spewage
Let me know if you need any testing. I have both 6.1-RELEASE and 5.3-RELEASE machines on which to test. Thanks, and this is a truly great bit of software! --- Zach On 6/21/06, Fabrice Bellard [EMAIL PROTECTED] wrote: There is a bug in the FPU virtualization in kqemu which is only visible in the kernel virtualization case. I am trying a fix. Fabrice. Zach Metzinger wrote: Hi- I'm using qemu-0.8.1 under FreeBSD 6.1-RELEASE from ports with kqemu-1.3.0pre7 (also from ports). The guest OS is Windows XP SP2. When I use the -kernel-kqemu flag to qemu, I get the following kernel console messages: Jun 21 14:04:57 jitter kernel: npxdna: fpcurthread == curthread 5173 times Jun 21 14:04:57 jitter kernel: npxdna: fpcurthread == curthread 5174 times ... This happens quite a bit (5-10 a second) when using any block device. I assume this is because kernel I/O calls are being virtualized and are the cause of this. When I do not use -kernel-kqemu, I do not get these messages. In both cases, Windows appears to work fine. This thread: http://tinyurl.com/mbm5l appears to have some information on why this happens. Has a patch been released to fix this bug? --- Zach ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel