From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JyoO7-0000Md-BY for qemu-devel@nongnu.org; Wed, 21 May 2008 09:29:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JyoO6-0000ML-Ad for qemu-devel@nongnu.org; Wed, 21 May 2008 09:29:50 -0400 Received: from [199.232.76.173] (port=49794 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JyoO5-0000MA-UY for qemu-devel@nongnu.org; Wed, 21 May 2008 09:29:50 -0400 Received: from savannah.gnu.org ([199.232.41.3]:40631 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JyoO5-0001HI-UN for qemu-devel@nongnu.org; Wed, 21 May 2008 09:29:50 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1JyoO4-0005A3-PE for qemu-devel@nongnu.org; Wed, 21 May 2008 13:29:48 +0000 Received: from bellard by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1JyoO3-00059f-F6 for qemu-devel@nongnu.org; Wed, 21 May 2008 13:29:48 +0000 MIME-Version: 1.0 Errors-To: bellard Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Fabrice Bellard Message-Id: Date: Wed, 21 May 2008 13:29:47 +0000 Subject: [Qemu-devel] [4510] converted INTO/CMPXCHG8B to TCG 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 Revision: 4510 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4510 Author: bellard Date: 2008-05-21 13:29:45 +0000 (Wed, 21 May 2008) Log Message: ----------- converted INTO/CMPXCHG8B to TCG Modified Paths: -------------- trunk/target-i386/helper.c trunk/target-i386/helper.h trunk/target-i386/op.c trunk/target-i386/translate.c Modified: trunk/target-i386/helper.c =================================================================== --- trunk/target-i386/helper.c 2008-05-21 13:24:30 UTC (rev 4509) +++ trunk/target-i386/helper.c 2008-05-21 13:29:45 UTC (rev 4510) @@ -1849,6 +1849,15 @@ FORCE_RET(); } +void helper_into(int next_eip_addend) +{ + int eflags; + eflags = cc_table[CC_OP].compute_all(); + if (eflags & CC_O) { + raise_interrupt(EXCP04_INTO, 1, 0, next_eip_addend); + } +} + void helper_cmpxchg8b(target_ulong a0) { uint64_t d; Modified: trunk/target-i386/helper.h =================================================================== --- trunk/target-i386/helper.h 2008-05-21 13:24:30 UTC (rev 4509) +++ trunk/target-i386/helper.h 2008-05-21 13:29:45 UTC (rev 4510) @@ -71,6 +71,7 @@ void helper_boundw(target_ulong a0, int v); void helper_boundl(target_ulong a0, int v); void helper_rsm(void); +void helper_into(int next_eip_addend); void helper_cmpxchg8b(target_ulong a0); void helper_single_step(void); void helper_cpuid(void); Modified: trunk/target-i386/op.c =================================================================== --- trunk/target-i386/op.c 2008-05-21 13:24:30 UTC (rev 4509) +++ trunk/target-i386/op.c 2008-05-21 13:29:45 UTC (rev 4510) @@ -123,24 +123,6 @@ #endif -/* constant load & misc op */ - -/* XXX: consistent names */ -void OPPROTO op_into(void) -{ - int eflags; - eflags = cc_table[CC_OP].compute_all(); - if (eflags & CC_O) { - raise_interrupt(EXCP04_INTO, 1, 0, PARAM1); - } - FORCE_RET(); -} - -void OPPROTO op_cmpxchg8b(void) -{ - helper_cmpxchg8b(A0); -} - /* multiple size ops */ #define ldul ldl Modified: trunk/target-i386/translate.c =================================================================== --- trunk/target-i386/translate.c 2008-05-21 13:24:30 UTC (rev 4509) +++ trunk/target-i386/translate.c 2008-05-21 13:29:45 UTC (rev 4510) @@ -4308,7 +4308,7 @@ if (s->cc_op != CC_OP_DYNAMIC) gen_op_set_cc_op(s->cc_op); gen_lea_modrm(s, modrm, ®_addr, &offset_addr); - gen_op_cmpxchg8b(); + tcg_gen_helper_0_1(helper_cmpxchg8b, cpu_A0); s->cc_op = CC_OP_EFLAGS; break; @@ -6016,7 +6016,7 @@ if (s->cc_op != CC_OP_DYNAMIC) gen_op_set_cc_op(s->cc_op); gen_jmp_im(pc_start - s->cs_base); - gen_op_into(s->pc - pc_start); + tcg_gen_helper_0_1(helper_into, tcg_const_i32(s->pc - pc_start)); break; case 0xf1: /* icebp (undocumented, exits to external debugger) */ if (gen_svm_check_intercept(s, pc_start, SVM_EXIT_ICEBP))