From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1FqWNF-0005WS-8U for qemu-devel@nongnu.org; Wed, 14 Jun 2006 10:29:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1FqWNE-0005VZ-QP for qemu-devel@nongnu.org; Wed, 14 Jun 2006 10:29:36 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FqWNE-0005VN-E0 for qemu-devel@nongnu.org; Wed, 14 Jun 2006 10:29:36 -0400 Received: from [199.232.41.3] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.52) id 1FqWWQ-0004PS-6F for qemu-devel@nongnu.org; Wed, 14 Jun 2006 10:39:06 -0400 Received: from savannah.gnu.org ([127.0.0.1]) by savannah.gnu.org with esmtp (Exim 3.36 #1 (Debian)) id 1FqWND-0003wI-00 for ; Wed, 14 Jun 2006 10:29:35 -0400 Received: from bellard by savannah.gnu.org with local (Exim 4.50) id 1FqWND-0003wA-4K for qemu-devel@nongnu.org; Wed, 14 Jun 2006 14:29:35 +0000 Message-Id: From: Fabrice Bellard Date: Wed, 14 Jun 2006 14:29:35 +0000 Subject: [Qemu-devel] qemu/target-i386 translate.c Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org CVSROOT: /sources/qemu Module name: qemu Changes by: Fabrice Bellard 06/06/14 14:29:34 Modified files: target-i386 : translate.c Log message: x86_64 mmx/sse fix CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/target-i386/translate.c?cvsroot=qemu&r1=1.56&r2=1.57 Patches: Index: translate.c =================================================================== RCS file: /sources/qemu/qemu/target-i386/translate.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -b -r1.56 -r1.57 --- translate.c 24 Apr 2006 20:14:56 -0000 1.56 +++ translate.c 14 Jun 2006 14:29:34 -0000 1.57 @@ -2905,6 +2905,7 @@ break; case 0xc4: /* pinsrw */ case 0x1c4: + s->rip_offset = 1; gen_ldst_modrm(s, modrm, OT_WORD, OR_TMP0, 0); val = ldub_code(s->pc++); if (b1) { @@ -2975,7 +2976,8 @@ } } else { /* generic MMX or SSE operation */ - if (b == 0xf7) { + switch(b) { + case 0xf7: /* maskmov : we must prepare A0 */ if (mod != 3) goto illegal_op; @@ -2990,6 +2992,14 @@ gen_op_andl_A0_ffff(); } gen_add_A0_ds_seg(s); + break; + case 0x70: /* pshufx insn */ + case 0xc6: /* pshufx insn */ + case 0xc2: /* compare insns */ + s->rip_offset = 1; + break; + default: + break; } if (is_xmm) { op1_offset = offsetof(CPUX86State,xmm_regs[reg]);