From nobody Mon Apr 29 02:44:48 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1495187291870579.9205892242505; Fri, 19 May 2017 02:48:11 -0700 (PDT) Received: from localhost ([::1]:57531 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBeW1-0007yE-FQ for importer@patchew.org; Fri, 19 May 2017 05:48:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48692) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBeKb-0007Yb-VH for qemu-devel@nongnu.org; Fri, 19 May 2017 05:36:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dBeKY-000712-34 for qemu-devel@nongnu.org; Fri, 19 May 2017 05:36:22 -0400 Received: from mail.ispras.ru ([83.149.199.45]:59366) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBeKX-00070d-Ql for qemu-devel@nongnu.org; Fri, 19 May 2017 05:36:18 -0400 Received: from mail.ispras.ru (localhost [127.0.0.1]) by mail.ispras.ru (Postfix) with ESMTPSA id 4CCFE540070; Fri, 19 May 2017 12:36:15 +0300 (MSK) MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Date: Fri, 19 May 2017 12:36:15 +0300 From: Mihail Abakumov To: Qemu Devel Message-ID: X-Sender: mikhail.abakumov@ispras.ru User-Agent: Roundcube Webmail/1.1.2 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 83.149.199.45 Subject: [Qemu-devel] [PATCH] i386: fix read/write cr with icount option X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Pbonzini , Pavel Dovgalyuk , Eduardo Habkost , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8"; format="flowed" Running Windows with icount causes a crash in instruction of write cr.=20 This patch fixes it. Reading and writing cr cause an icount read because there are called=20 cpu_get_apic_tpr and cpu_set_apic_tpr functions. So, there is need=20 gen_io_start()/gen_io_end() calls. --- target/i386/translate.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 06d8833..3b009bd 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -7907,14 +7907,26 @@ static target_ulong disas_insn(CPUX86State *env,=20 DisasContext *s, gen_update_cc_op(s); gen_jmp_im(pc_start - s->cs_base); if (b & 2) { + if (s->tb->cflags & CF_USE_ICOUNT) { + gen_io_start(); + } gen_op_mov_v_reg(ot, cpu_T0, rm); gen_helper_write_crN(cpu_env, tcg_const_i32(reg), cpu_T0); + if (s->tb->cflags & CF_USE_ICOUNT) { + gen_io_end(); + } gen_jmp_im(s->pc - s->cs_base); gen_eob(s); } else { + if (s->tb->cflags & CF_USE_ICOUNT) { + gen_io_start(); + } gen_helper_read_crN(cpu_T0, cpu_env,=20 tcg_const_i32(reg)); gen_op_mov_reg_v(ot, rm, cpu_T0); + if (s->tb->cflags & CF_USE_ICOUNT) { + gen_io_end(); + } } break; default: --=20 1.9.1