From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212476; cv=none; d=zohomail.com; s=zohoarc; b=fOYo7VgM6CRFmpk0tOjEZUpLHSajzo9T7gIqfUokHCNJ/a9fS7yFPduz1D41LO287FDukBUIsSL2rzYGR5fdmgJd04pg0Umn0Z9B8vczP+geTpOdJnwjo3moqrnqSC8PKZtX8jCJa9W/AQZEhiiI+fwNeN/7KXDnh9qPArG0H84= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212476; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nqq51of1Uw+NqxfwJPSf3L4cXjdgw4EFZNmf1jtw0gc=; b=FIBDwIlLz29YrpOumhvguBbW1ze07+vdHNZwQ+OdLadxhtHqF5gcOvTdY6ur+/m5fSo2tiJIIixbCF41FrrMedoQXt+3aGXQeW0OKaMZp+SQQtUZrANugqWq2cJKgwUo1MadCVxmzt1xjms4G4qeyr51RUra9mA1nEgSIG1X8jE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212476921956.0070264338681; Mon, 22 Aug 2022 16:54:36 -0700 (PDT) Received: from localhost ([::1]:38674 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHFa-0003fb-Rp for importer@patchew.org; Mon, 22 Aug 2022 19:54:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41734) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGv6-0005f2-Sl for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:26 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]:44735) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGv5-0007EC-6O for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:24 -0400 Received: by mail-pj1-x102e.google.com with SMTP id r15-20020a17090a1bcf00b001fabf42a11cso12913935pjr.3 for ; Mon, 22 Aug 2022 16:33:22 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=nqq51of1Uw+NqxfwJPSf3L4cXjdgw4EFZNmf1jtw0gc=; b=H2JIp7N66noHLD+kY9DnbFTfQ7OSrU9aTw+QomlB5bmnMqJo2KPDtMDOhCSTQR40E6 JPtm9doB6PpfS1+hCyu5OK0J26X85I5XfQOTI2tIomtxnFgVj4M7jlmBYA+y5Ck+DYnh eULXEFpmf2XCXg/CEPXnNUriYQ8nRlZVdubHTkV73GRMknwecEp8VcnGflmxMR5I0Zsn XncMacOS5KgrtbhbTh3++N0nf4IDBe7SbaC/FrVB/Cfoa+CzfOuI2tfRmvUNLsKgskAh brYM8Zr5NozGDkGuV793z8CuV6652IQgN2P4fqwuLSUAQznh77JT11BO+1hqReIKcaCR BoxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=nqq51of1Uw+NqxfwJPSf3L4cXjdgw4EFZNmf1jtw0gc=; b=rtumStbEaB9KlCRBVIrzFDZxDyu/oe7htzVLAwQaUz72bvkzN5xFbDC9rD/CMk2wkY eXJR/meZ2F+gvXsCY94NGJSPeOjDB0JdPFawVffDcVFMf3ebnGA267gC4yUzDn+b0AxF 8HXjmkDEjM75yJ9M7k4HD7JTw2NHs0p7oxrC3Xn72GZ7P4sUyD095fIoRf5VtXuPUNnt wg5Xa0nYntleLFXjKXjQXg+nlYnkR3xZWHKeYzHyaiMWH6V6JG7hjxUz2HbYjp/nGRyK pAEUSR0TeFgPiBpTK07tw9THFHTzArmmNLrDibQfvfzPRSG42S0xMiGHXcDzAe1B+ELU sIqQ== X-Gm-Message-State: ACgBeo3T+s4lKzlrg+l5KOBVyoRFOrHh3xiN7DJcY2IQyYOeV28xZTeX UVsy0+NjmOu3eIPScfYGy3ATGfxhzfZm0Q== X-Google-Smtp-Source: AA6agR6yDnFjCzgZnJvintH6dgMakjgp0tq0H1ZY8YVk+qtBzbmkOeqcC9gwVfMWZ6u/aOQxAksynw== X-Received: by 2002:a17:902:f550:b0:172:fe5d:aa0a with SMTP id h16-20020a170902f55000b00172fe5daa0amr1484369plf.170.1661211201767; Mon, 22 Aug 2022 16:33:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 01/22] target/i386: Return bool from disas_insn Date: Mon, 22 Aug 2022 16:32:57 -0700 Message-Id: <20220822233318.1728621-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212478259100001 Content-Type: text/plain; charset="utf-8" Instead of returning the new pc, which is present in DisasContext, return true if an insn was translated. This is false when we detect a page crossing and must undo the insn under translation. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 42 +++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index a9a9a9de6e..2bdbfc6ddf 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -4552,7 +4552,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b) =20 /* convert one instruction. s->base.is_jmp is set if the translation must be stopped. Return the next pc value */ -static target_ulong disas_insn(DisasContext *s, CPUState *cpu) +static bool disas_insn(DisasContext *s, CPUState *cpu) { CPUX86State *env =3D cpu->env_ptr; int b, prefixes; @@ -4582,12 +4582,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) return s->pc; case 2: /* Restore state that may affect the next instruction. */ + s->pc =3D s->base.pc_next; s->cc_op_dirty =3D orig_cc_op_dirty; s->cc_op =3D orig_cc_op; s->base.num_insns--; tcg_remove_ops_after(s->prev_insn_end); s->base.is_jmp =3D DISAS_TOO_MANY; - return s->base.pc_next; + return false; default: g_assert_not_reached(); } @@ -8496,13 +8497,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) default: goto unknown_op; } - return s->pc; + return true; illegal_op: gen_illegal_opcode(s); - return s->pc; + return true; unknown_op: gen_unknown_opcode(env, s); - return s->pc; + return true; } =20 void tcg_x86_init(void) @@ -8667,7 +8668,6 @@ static void i386_tr_insn_start(DisasContextBase *dcba= se, CPUState *cpu) static void i386_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu) { DisasContext *dc =3D container_of(dcbase, DisasContext, base); - target_ulong pc_next; =20 #ifdef TARGET_VSYSCALL_PAGE /* @@ -8680,21 +8680,23 @@ static void i386_tr_translate_insn(DisasContextBase= *dcbase, CPUState *cpu) } #endif =20 - pc_next =3D disas_insn(dc, cpu); - dc->base.pc_next =3D pc_next; + if (disas_insn(dc, cpu)) { + target_ulong pc_next =3D dc->pc; + dc->base.pc_next =3D pc_next; =20 - if (dc->base.is_jmp =3D=3D DISAS_NEXT) { - if (dc->flags & (HF_TF_MASK | HF_INHIBIT_IRQ_MASK)) { - /* - * If single step mode, we generate only one instruction and - * generate an exception. - * If irq were inhibited with HF_INHIBIT_IRQ_MASK, we clear - * the flag and abort the translation to give the irqs a - * chance to happen. - */ - dc->base.is_jmp =3D DISAS_TOO_MANY; - } else if (!is_same_page(&dc->base, pc_next)) { - dc->base.is_jmp =3D DISAS_TOO_MANY; + if (dc->base.is_jmp =3D=3D DISAS_NEXT) { + if (dc->flags & (HF_TF_MASK | HF_INHIBIT_IRQ_MASK)) { + /* + * If single step mode, we generate only one instruction a= nd + * generate an exception. + * If irq were inhibited with HF_INHIBIT_IRQ_MASK, we clear + * the flag and abort the translation to give the irqs a + * chance to happen. + */ + dc->base.is_jmp =3D DISAS_TOO_MANY; + } else if (!is_same_page(&dc->base, pc_next)) { + dc->base.is_jmp =3D DISAS_TOO_MANY; + } } } } --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661211935; cv=none; d=zohomail.com; s=zohoarc; b=WS3X4osBy5+xUn2I/ahO9gQ5D1IdGsoiYHp90TGOOBxIpLOFJRZ7YnVMpNZSxbBIKQvex9c0L3Yagzcm0pSB6/B7X5U8UmOMcXRCDYdHPHXmL5CcJKWqxsVixPFLjD2BAJY2/ltVWpdAcyxH0ZhPOszJcdyU8rbNDlwem3IzPCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661211935; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hfnfb8LitWZ0KHDEFtzpnt/n/IbHJVoM5UOy23HOnjo=; b=Lhcsy7G0JGLqwYsSR46QMigiVfiCoUZch8RDMfwXaveOBVVpVmMjYLs55pKqfJq5lTiCo7nvWPaPePBfhT4Dph0Qw629WwLf4CVhQUdHtPqQCjegpD3/9PnU2Ja5tfGhATZnSrD3I3+agdR7x/DslwNsggwVNsG9DUATc22cLYM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661211935602853.023496557753; Mon, 22 Aug 2022 16:45:35 -0700 (PDT) Received: from localhost ([::1]:54538 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQH6s-0004XO-FL for importer@patchew.org; Mon, 22 Aug 2022 19:45:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41736) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGv7-0005f3-Gj for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:26 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]:36739) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGv5-0007ET-Se for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:25 -0400 Received: by mail-pf1-x436.google.com with SMTP id w29so6277717pfj.3 for ; Mon, 22 Aug 2022 16:33:23 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=hfnfb8LitWZ0KHDEFtzpnt/n/IbHJVoM5UOy23HOnjo=; b=ZSzZd+g+/qoTjARSW5rpLfrzD6cFVORwczyvSTvuLNqkdHZxOjq1HEV36cT9H1aT9e WeT+61+SEIAq6TqX/2Vear7Ln78kmkQR9vuv5ddUBGM0uJpsSj9b1HD5QckdROTq7OF9 McPkKqkX9OYioIkvDMfNWkNNoLxzhoa40RyHZLqN3d1IySdRINPPz4O6OW9zLuzHXbWr 5ufRyimVaszKTFRJoH9Qv5wRXGvr17yhuhy/PptWgKlavp5UqdmMI2sjzQfdsUJgJaSV TGQPaLH5K+UlqGoW0Sf/+I4Aro1uC9DxMMCBayX1bCIH+YUH/Z/teBU8YuJwW9FKhmY0 DckQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=hfnfb8LitWZ0KHDEFtzpnt/n/IbHJVoM5UOy23HOnjo=; b=UBuY05aQEMb6yO3Jn5dr/v58lYygrvQVAfyHjLwQlIliIKpcjGFIrZh8aln3JOIAiV WB2PsnIdC51eu25sNqptWLWGt3iuIyg+/sfLyE8j52lUFTizfqDlcxnGhMFIJbiWS9xY R5GSIV9rzTnlR5mV4hzISiPMZTgM49ar7hTA/fRBuvtPzzXfgNaUI/yajnZbOB0LvQ5N NyKKk9OftU1ZIQP8zmgqh1laQlmh2z8BXAn+PsBhREBN/g9wAPF8ZCSJLnFdugFxHz26 IUfo8cLiaw7A5OYrR0WZ3+q2dQ3M1gQ+XjGqmQI5U4W+Ji0PpENPH0e7f+DvGKL8lzSV 0v2Q== X-Gm-Message-State: ACgBeo1M6s7g7bZa+SbpDQEyGxf4RmK94qGr31QwkxZUaowZNt3JlJzO Ry2dWuEdn3SZwJhW8WDXQ47XYh9cge85yw== X-Google-Smtp-Source: AA6agR4LcSLcV50Vg/F61lr/tboGJGCLTx657wPMpke9a28ElvKAXEur8ZD+tj65Rm9gZUaKkMvXxQ== X-Received: by 2002:a63:eb49:0:b0:421:8c9b:4ab1 with SMTP id b9-20020a63eb49000000b004218c9b4ab1mr18770608pgk.339.1661211202614; Mon, 22 Aug 2022 16:33:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 02/22] target/i386: Remove cur_eip argument to gen_exception Date: Mon, 22 Aug 2022 16:32:58 -0700 Message-Id: <20220822233318.1728621-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661211937663100001 Content-Type: text/plain; charset="utf-8" All callers pass s->base.pc_next - s->cs_base, which we can just as well compute within the function. Note the special case of EXCP_VSYSCALL in which s->cs_base didn't have the subtraction, but cs_base is always zero in 64-bit mode, when vsyscall is used. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 2bdbfc6ddf..f6a861e10c 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -1332,10 +1332,10 @@ static void gen_helper_fp_arith_STN_ST0(int op, int= opreg) } } =20 -static void gen_exception(DisasContext *s, int trapno, target_ulong cur_ei= p) +static void gen_exception(DisasContext *s, int trapno) { gen_update_cc_op(s); - gen_jmp_im(s, cur_eip); + gen_jmp_im(s, s->base.pc_next - s->cs_base); gen_helper_raise_exception(cpu_env, tcg_const_i32(trapno)); s->base.is_jmp =3D DISAS_NORETURN; } @@ -1344,13 +1344,13 @@ static void gen_exception(DisasContext *s, int trap= no, target_ulong cur_eip) the instruction is known, but it isn't allowed in the current cpu mode.= */ static void gen_illegal_opcode(DisasContext *s) { - gen_exception(s, EXCP06_ILLOP, s->base.pc_next - s->cs_base); + gen_exception(s, EXCP06_ILLOP); } =20 /* Generate #GP for the current instruction. */ static void gen_exception_gpf(DisasContext *s) { - gen_exception(s, EXCP0D_GPF, s->base.pc_next - s->cs_base); + gen_exception(s, EXCP0D_GPF); } =20 /* Check for cpl =3D=3D 0; if not, raise #GP and return false. */ @@ -3148,7 +3148,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b) } /* simple MMX/SSE operation */ if (s->flags & HF_TS_MASK) { - gen_exception(s, EXCP07_PREX, s->base.pc_next - s->cs_base); + gen_exception(s, EXCP07_PREX); return; } if (s->flags & HF_EM_MASK) { @@ -5929,7 +5929,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) if (s->flags & (HF_EM_MASK | HF_TS_MASK)) { /* if CR0.EM or CR0.TS are set, generate an FPU exception = */ /* XXX: what to do if illegal op ? */ - gen_exception(s, EXCP07_PREX, s->base.pc_next - s->cs_base= ); + gen_exception(s, EXCP07_PREX); break; } modrm =3D x86_ldub_code(env, s); @@ -7154,7 +7154,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; val =3D x86_ldub_code(env, s); if (val =3D=3D 0) { - gen_exception(s, EXCP00_DIVZ, s->base.pc_next - s->cs_base); + gen_exception(s, EXCP00_DIVZ); } else { gen_helper_aam(cpu_env, tcg_const_i32(val)); set_cc_op(s, CC_OP_LOGICB); @@ -7188,7 +7188,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) case 0x9b: /* fwait */ if ((s->flags & (HF_MP_MASK | HF_TS_MASK)) =3D=3D (HF_MP_MASK | HF_TS_MASK)) { - gen_exception(s, EXCP07_PREX, s->base.pc_next - s->cs_base); + gen_exception(s, EXCP07_PREX); } else { gen_helper_fwait(cpu_env); } @@ -8245,7 +8245,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if ((s->flags & HF_EM_MASK) || (s->flags & HF_TS_MASK)) { - gen_exception(s, EXCP07_PREX, s->base.pc_next - s->cs_base= ); + gen_exception(s, EXCP07_PREX); break; } gen_lea_modrm(env, s, modrm); @@ -8258,7 +8258,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if ((s->flags & HF_EM_MASK) || (s->flags & HF_TS_MASK)) { - gen_exception(s, EXCP07_PREX, s->base.pc_next - s->cs_base= ); + gen_exception(s, EXCP07_PREX); break; } gen_lea_modrm(env, s, modrm); @@ -8270,7 +8270,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if (s->flags & HF_TS_MASK) { - gen_exception(s, EXCP07_PREX, s->base.pc_next - s->cs_base= ); + gen_exception(s, EXCP07_PREX); break; } gen_lea_modrm(env, s, modrm); @@ -8283,7 +8283,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if (s->flags & HF_TS_MASK) { - gen_exception(s, EXCP07_PREX, s->base.pc_next - s->cs_base= ); + gen_exception(s, EXCP07_PREX); break; } gen_helper_update_mxcsr(cpu_env); @@ -8674,7 +8674,7 @@ static void i386_tr_translate_insn(DisasContextBase *= dcbase, CPUState *cpu) * Detect entry into the vsyscall page and invoke the syscall. */ if ((dc->base.pc_next & TARGET_PAGE_MASK) =3D=3D TARGET_VSYSCALL_PAGE)= { - gen_exception(dc, EXCP_VSYSCALL, dc->base.pc_next); + gen_exception(dc, EXCP_VSYSCALL); dc->base.pc_next =3D dc->pc + 1; return; } --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212106; cv=none; d=zohomail.com; s=zohoarc; b=EYUpawFm+CBx0BFWeUtuQkbKqWkxOXBON+oc7kwnxqPnY7cU00xuSZ04JRUtnO9pxfuy0j7P7hSgw50/6++8W0dywD+KAXc3ocGFyWkm+DODBhhgS7qsESw6prU0rn0cZGIc8GVvPBYOD/yh828ZFBfdSNRn/2PYs2n4Q9U0YGo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212106; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=I0Ab1V06eTSd++du4BEeVdBOxUXl44KJmulBDPQpHyo=; b=LINv3dyLneNUI2PFQ1sShlWhPGbzhFWWduzzLVb93SRfGVXIxqkSrY3kVnw5kAKLVbU39wsi/EKXjwTXBd2QhgtZqoO2NEh2VRHyXNoF2Iy2QuIAZEHHA8SUnyijAd8qd9taSWKI3w1a246CCh41Q2efUMbLkedLF3TLjAwnztI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212106620941.6836950859525; Mon, 22 Aug 2022 16:48:26 -0700 (PDT) Received: from localhost ([::1]:57078 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQH9d-00086Z-GN for importer@patchew.org; Mon, 22 Aug 2022 19:48:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47828) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGv8-0005fZ-Ct for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:26 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:46998) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGv6-0007En-S4 for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:26 -0400 Received: by mail-pj1-x1036.google.com with SMTP id o14-20020a17090a0a0e00b001fabfd3369cso12914423pjo.5 for ; Mon, 22 Aug 2022 16:33:24 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=I0Ab1V06eTSd++du4BEeVdBOxUXl44KJmulBDPQpHyo=; b=vy7AWQbXlkrOh8piRh00fhrNK7cu6sSMKdQiSQKGLxjF2nZCvIsY5GpbuhJuwSpq1b QsXWvbT9DfB+FG6+Fo9fW11kJwBbu8RwgG82nARZUqPGCuEX3SiIDB4yXpmv7trzyJda +vikdE6NtOK1UL1zc50qIIDaxEtPhay4BXggpPccTKizBBOl9i2cImDzKeszk5ZLgNF7 PhJUNWVw05VyQSAmQRCe09l4CBwgfoB6vgI92VEyszCbcjm88OozCT+lYijE+TKpq+3E eQMay81xAJnQtCgYZExFjgmtaKAYRk3JRp4BQu6cRqXDGrYr+YIfYjCBjvfQTHr871SB ZQ2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=I0Ab1V06eTSd++du4BEeVdBOxUXl44KJmulBDPQpHyo=; b=XUmHiTR9WCo15FH8KvOAJMxktrf7qtN3kkraB2atwzsReKOXWnZs1VjdvgNSnR5Nlp fHY7CH8dqxvPrhVw+6xyTeLm5+I6QZcDhKLie9GIp0siVl9y/dyoY9Vyr62P6G8yOpK9 thQ6ZOxZzmBcgj951J/Bd+5A6NfLDHoo6qj5G3C7TtfJuCBtdic2NdwxqNz9v6inr0du 2pr2OtUDrCKWZHvhxFk+iNeEqB2s0zTKoCpOC6ufZ2nWjOlMIYNcsy4yetPWn5NbIYr1 rDTOniw7jv+m/nnssJFBWmUjvj4EyE5Hki52PWvsL9I8iNpte2bHF7/XFtZ2/nagQUUs CVYw== X-Gm-Message-State: ACgBeo25yhIlNGoh0dR6+wk3OaE5JXDdkYeFmFA1JWPOx7whyPzINDbp LgIFToiZkSbvlwe7Syo+n52JrATC5v3yEQ== X-Google-Smtp-Source: AA6agR6UVQZ7n1ML6ZUUSexFJgFgRlpclP8IXIlaDrFwQhR6zw0um+LtocZ6suLqyNrVwnCK1Q6Rpw== X-Received: by 2002:a17:902:cec1:b0:16d:c4f2:66c5 with SMTP id d1-20020a170902cec100b0016dc4f266c5mr21734687plg.20.1661211203606; Mon, 22 Aug 2022 16:33:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 03/22] target/i386: Remove cur_eip, next_eip arguments to gen_interrupt Date: Mon, 22 Aug 2022 16:32:59 -0700 Message-Id: <20220822233318.1728621-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212108846100001 Content-Type: text/plain; charset="utf-8" All callers pass s->base.pc_next and s->pc, which we can just as well compute within the function. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index f6a861e10c..d3b16ea28c 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2602,13 +2602,12 @@ static void gen_unknown_opcode(CPUX86State *env, Di= sasContext *s) =20 /* an interrupt is different from an exception because of the privilege checks */ -static void gen_interrupt(DisasContext *s, int intno, - target_ulong cur_eip, target_ulong next_eip) +static void gen_interrupt(DisasContext *s, int intno) { gen_update_cc_op(s); - gen_jmp_im(s, cur_eip); - gen_helper_raise_interrupt(cpu_env, tcg_const_i32(intno), - tcg_const_i32(next_eip - cur_eip)); + gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_helper_raise_interrupt(cpu_env, tcg_constant_i32(intno), + tcg_constant_i32(s->pc - s->base.pc_next)); s->base.is_jmp =3D DISAS_NORETURN; } =20 @@ -7194,12 +7193,12 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } break; case 0xcc: /* int3 */ - gen_interrupt(s, EXCP03_INT3, s->base.pc_next - s->cs_base, s->pc = - s->cs_base); + gen_interrupt(s, EXCP03_INT3); break; case 0xcd: /* int N */ val =3D x86_ldub_code(env, s); if (check_vm86_iopl(s)) { - gen_interrupt(s, val, s->base.pc_next - s->cs_base, s->pc - s-= >cs_base); + gen_interrupt(s, val); } break; case 0xce: /* into */ --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212192; cv=none; d=zohomail.com; s=zohoarc; b=jwYaqz1k9zadhbaz0ldTkkf/LZVhDJ7zm3OXKPhPqqVgRkyCLKKUnaVFE7+uBNXFEKfwrah83w+Pm3xXJkH4m/BhQvKwZpTxy/xMb+w0FbqksvXXKKv8zW0xJcUkVAmnqDcyiHTYqxa1KYuOY2p4d6tYIKdPjcHyYynNCS7FhfE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212192; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=xieXJDbaGMET8lCcNrHn8au1fAE3fNDPoQPAmokw8bA=; b=WyzsQ9ww5HR524WyYF2ButuZm0PfvdLk110MVSjPAwR7NmzShxSuqnGVOjW2vJtKepxlKwrvjD0RwbsZNQIqSWuPGI0pZNheVmMhoLYRh62NcCNND0jV5AjTV3hg4cdcgsLD9TYZDvKYUeU1bv10KD2zCHys7TON35+WxGoXKFQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212192925747.6206745166462; Mon, 22 Aug 2022 16:49:52 -0700 (PDT) Received: from localhost ([::1]:32962 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHB1-0001uf-Mr for importer@patchew.org; Mon, 22 Aug 2022 19:49:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47830) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvB-0005oz-Rl for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:29 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]:35415) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGv8-0007FB-Vw for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:29 -0400 Received: by mail-pg1-x52f.google.com with SMTP id r69so10781032pgr.2 for ; Mon, 22 Aug 2022 16:33:26 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=xieXJDbaGMET8lCcNrHn8au1fAE3fNDPoQPAmokw8bA=; b=Wj78MifH39tuYhmgChP6taqS0KMbxuEf9kcZOGF2ytOph0hl1Yi0ww/Hf/dn1/ryBE 5GZnAFlTNrMbVsJkBmN/eiSAijqYusWof5RcUDtiKlRtknmy4AHzQiErEP0VCSxwPy06 13qQqG7WEmYDlKj4T/ePyH43DKU3f4mBjmcjcvS5EWMykUUIeMYqWZQjBaWZ98H6eMWp DMc2Q6XeozbbsFBLF5warlN3/hS+O0oGpHvxsFKkGA6nHzXwF+dipFAO19RTnmsJrTGB MD8Ok3hQhkD1SHL/Tqh18G+0ZNaGUj5KeLwm1oOQHyT2ovyZkyE9ny4aNitCdWkxG0XX jMGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=xieXJDbaGMET8lCcNrHn8au1fAE3fNDPoQPAmokw8bA=; b=M59v5TX/qOlNG4aDBADnEUAS2A7uyHkFIvk9ZmzNvT8/PrYEu0ZkqaHkRwVBNAnGw/ dp+p6kG1T71sMhYmO4nOThsuXZ+xYbxignpZPLHWbgjzp4rx1atnDnIp3SvoCkgIlT9y xET7Rq3wfWtJwv8Tl2bQTjW28v6Xn/I0O9xNSa37Css/cB9znlXgro/lRgO5UknXghft SJ1B6yfhu6MF41c1whl5YXBf2oQjtIhJwuK8r0x389U+LtjCydLtzNxtxX6CLvozaVGE uuhqrTTp/4SzIwXea89fao72RSdg4xDwSfxSVk4mBJLSmvPDY57TcYmVzrriDU4Kdxh9 tr8w== X-Gm-Message-State: ACgBeo0jBLj9Jf5Ssiz2Hx23zIDw7UE83DtoWZVPq9DJzgavl7z57PgV 0fqo73fQ1HnKFFlas7tIF2soCyOtvABMAQ== X-Google-Smtp-Source: AA6agR6pqlmM90/PTbPQ9JJxP3fIPDIoOdMI+LUF/scScxZGgOcaEh6hJzzkq22yAA9IBXGZZIzy+Q== X-Received: by 2002:aa7:8a4d:0:b0:52e:2a8b:46a with SMTP id n13-20020aa78a4d000000b0052e2a8b046amr22948870pfa.64.1661211205406; Mon, 22 Aug 2022 16:33:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 04/22] target/i386: Create gen_update_eip_cur Date: Mon, 22 Aug 2022 16:33:00 -0700 Message-Id: <20220822233318.1728621-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212193163100001 Content-Type: text/plain; charset="utf-8" Like gen_update_cc_op, sync EIP before doing something that could raise an exception. Replace all gen_jmp_im that use s->base.pc_next. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 52 ++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index d3b16ea28c..78b7641786 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -511,10 +511,14 @@ static inline void gen_op_st_rm_T0_A0(DisasContext *s= , int idx, int d) } } =20 -static inline void gen_jmp_im(DisasContext *s, target_ulong pc) +static void gen_jmp_im(DisasContext *s, target_ulong pc) { - tcg_gen_movi_tl(s->tmp0, pc); - gen_op_jmp_v(s->tmp0); + gen_op_jmp_v(tcg_constant_tl(pc)); +} + +static void gen_update_eip_cur(DisasContext *s) +{ + gen_jmp_im(s, s->base.pc_next - s->cs_base); } =20 /* Compute SEG:REG into A0. SEG is selected from the override segment @@ -703,7 +707,7 @@ static bool gen_check_io(DisasContext *s, MemOp ot, TCG= v_i32 port, target_ulong next_eip =3D s->pc - s->cs_base; =20 gen_update_cc_op(s); - gen_jmp_im(s, cur_eip); + gen_update_eip_cur(s); if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { svm_flags |=3D SVM_IOIO_REP_MASK; } @@ -1335,7 +1339,7 @@ static void gen_helper_fp_arith_STN_ST0(int op, int o= preg) static void gen_exception(DisasContext *s, int trapno) { gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_raise_exception(cpu_env, tcg_const_i32(trapno)); s->base.is_jmp =3D DISAS_NORETURN; } @@ -2605,7 +2609,7 @@ static void gen_unknown_opcode(CPUX86State *env, Disa= sContext *s) static void gen_interrupt(DisasContext *s, int intno) { gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_raise_interrupt(cpu_env, tcg_constant_i32(intno), tcg_constant_i32(s->pc - s->base.pc_next)); s->base.is_jmp =3D DISAS_NORETURN; @@ -6683,7 +6687,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) do_lret: if (PE(s) && !VM86(s)) { gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_lret_protected(cpu_env, tcg_const_i32(dflag - 1), tcg_const_i32(val)); } else { @@ -7179,7 +7183,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) } if (prefixes & PREFIX_REPZ) { gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_pause(cpu_env, tcg_const_i32(s->pc - s->base.pc_nex= t)); s->base.is_jmp =3D DISAS_NORETURN; } @@ -7205,7 +7209,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) if (CODE64(s)) goto illegal_op; gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_into(cpu_env, tcg_const_i32(s->pc - s->base.pc_next)); break; #ifdef WANT_ICEBP @@ -7312,7 +7316,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) case 0x132: /* rdmsr */ if (check_cpl0(s)) { gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); if (b & 2) { gen_helper_rdmsr(cpu_env); } else { @@ -7324,7 +7328,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) break; case 0x131: /* rdtsc */ gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -7335,7 +7339,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) break; case 0x133: /* rdpmc */ gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_rdpmc(cpu_env); s->base.is_jmp =3D DISAS_NORETURN; break; @@ -7365,7 +7369,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) case 0x105: /* syscall */ /* XXX: is it usable in real mode ? */ gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_syscall(cpu_env, tcg_const_i32(s->pc - s->base.pc_next)= ); /* TF handling for the syscall insn is different. The TF bit is c= hecked after the syscall insn completes. This allows #DB to not be @@ -7391,13 +7395,13 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) #endif case 0x1a2: /* cpuid */ gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_cpuid(cpu_env); break; case 0xf4: /* hlt */ if (check_cpl0(s)) { gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_hlt(cpu_env, tcg_const_i32(s->pc - s->base.pc_next)= ); s->base.is_jmp =3D DISAS_NORETURN; } @@ -7494,7 +7498,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); tcg_gen_mov_tl(s->A0, cpu_regs[R_EAX]); gen_extu(s->aflag, s->A0); gen_add_A0_ds_seg(s); @@ -7506,7 +7510,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_mwait(cpu_env, tcg_const_i32(s->pc - s->base.pc_nex= t)); s->base.is_jmp =3D DISAS_NORETURN; break; @@ -7584,7 +7588,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_vmrun(cpu_env, tcg_const_i32(s->aflag - 1), tcg_const_i32(s->pc - s->base.pc_next)); tcg_gen_exit_tb(NULL, 0); @@ -7596,7 +7600,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_vmmcall(cpu_env); break; =20 @@ -7608,7 +7612,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_vmload(cpu_env, tcg_const_i32(s->aflag - 1)); break; =20 @@ -7620,7 +7624,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_vmsave(cpu_env, tcg_const_i32(s->aflag - 1)); break; =20 @@ -7646,7 +7650,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); gen_helper_clgi(cpu_env); break; =20 @@ -7792,7 +7796,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } gen_update_cc_op(s); - gen_jmp_im(s, s->base.pc_next - s->cs_base); + gen_update_eip_cur(s); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -8705,7 +8709,7 @@ static void i386_tr_tb_stop(DisasContextBase *dcbase,= CPUState *cpu) DisasContext *dc =3D container_of(dcbase, DisasContext, base); =20 if (dc->base.is_jmp =3D=3D DISAS_TOO_MANY) { - gen_jmp_im(dc, dc->base.pc_next - dc->cs_base); + gen_update_eip_cur(dc); gen_eob(dc); } } --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212353; cv=none; d=zohomail.com; s=zohoarc; b=OxPjBcoEtg3CxT2/Nb3JLFGz7HYyMGKYYOITDp5wECyFvbTsAuAeaqGaZVZ1q4uePySw1O+NxYewdU/TGCsXiXRS7KQ8JuHXblTN7srtCjtkgkUDnMQHJ/wdOP2OD1Ja8PUgw2kcTIA7G0lL4IkRzdi1fgNas2xbG30JrBwgwMU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212353; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9Pm+6x2/2C6OfnomcGaCxiJb7v+oW6I+7rzdNDZUItE=; b=IoZ3OwMGNh6AdElwGIaDD69k+sKTxnDkUkrB/Y9TulMvLv/nGc0n9Leq7EK/ONhxLmHYmvHD/HQ4pfe80D2olUF7d2XUsnvXz9KMXgC1xsTcQbRlHSLOdNxXW98CJSzPkOSzBm6EB/SKFeWwEeGnrnaQ6XDCQ13+6CBM1nhhV8o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16612123535761006.0243160219802; Mon, 22 Aug 2022 16:52:33 -0700 (PDT) Received: from localhost ([::1]:47640 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHDb-0007T6-F9 for importer@patchew.org; Mon, 22 Aug 2022 19:52:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47832) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvC-0005sp-Rm for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:30 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:38588) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvA-0007FP-Uy for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:30 -0400 Received: by mail-pl1-x634.google.com with SMTP id x19so11307802plc.5 for ; Mon, 22 Aug 2022 16:33:27 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=9Pm+6x2/2C6OfnomcGaCxiJb7v+oW6I+7rzdNDZUItE=; b=w2BRFLPOroefQMuUaXVcH1clm3+Xls/6wnYrmj1h3z01ssAv+4CSxdWbWAWMO/yVVl JWm7vjXvFY9vdahVajF6wV2JufTLR/IlNOanbu60SrcS75xF75i8egU3Xw+3VvZ4ibJ5 FhNQ1bUfVk14J19hI/oujqdW8nTO+qk3YC+DV9tkb3jFS5IYwIZmYEcGkW2WNylkoZTW yaXIjAW+mgyvErf4PW8YHEhbFbmaEXC6K5+iQMkI1f0yg7NUvbqp1wlKicMF9HcfSYh7 STVjH8403Q/0ELGdB+W07q5nvuxyTQJfWKWhgAZ6jpqpbmoBpknFg3eFiVt5EU5+3zEf utDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=9Pm+6x2/2C6OfnomcGaCxiJb7v+oW6I+7rzdNDZUItE=; b=ABXB7Mx+T5rmHy2U2jxEOboin5Pemeor6AFV3v9c6x/089UGEBtxDDEt3ye3rd0Z9P QMNvROYmLcwAehd2zauWdyzoOG2Nkd9zxnAcTnry/zOMsvY7PVnSt9t6npVzjcarcqVq mdOG0LgY+NkVjb6Qwg2jwRX5jd6RRl4914vh1mIn25Gu4CHb+LZlcjzq+k9MJBBopd5p GXIMC4hWeI/73463gmyJ3KaV30ygLPepHdfbJAExVcXStiLxlJm06mo3M9oYHe0JKqZK HbExRYTkU2jbE6YoP9hcUhe3bUgw2WbJS+SfQQvySvXbvBHaHtJxlUGLoIrxGp5XIsh9 NGtA== X-Gm-Message-State: ACgBeo2kiS+KNFgQ4FTdU97g2gscULdV0+vJZy0ypJTqe385ZsOfw8YO XaEJa64q420OmJQcRboplcoP8XU4Ym8mLA== X-Google-Smtp-Source: AA6agR79C0vG3Y/fZJC9zqt7wRsrkhs3qhS67wNEx4F0nHY7Sawm5oPNn1AmgU+Sa9qBp98DS0zaOQ== X-Received: by 2002:a17:902:f641:b0:172:9642:1bf1 with SMTP id m1-20020a170902f64100b0017296421bf1mr22463313plg.36.1661211206518; Mon, 22 Aug 2022 16:33:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 05/22] target/i386: Create gen_update_eip_next Date: Mon, 22 Aug 2022 16:33:01 -0700 Message-Id: <20220822233318.1728621-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212353752100001 Content-Type: text/plain; charset="utf-8" Sync EIP before exiting a translation block. Replace all gen_jmp_im that use s->pc. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 45 ++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 78b7641786..36883410e0 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -521,6 +521,11 @@ static void gen_update_eip_cur(DisasContext *s) gen_jmp_im(s, s->base.pc_next - s->cs_base); } =20 +static void gen_update_eip_next(DisasContext *s) +{ + gen_jmp_im(s, s->pc - s->cs_base); +} + /* Compute SEG:REG into A0. SEG is selected from the override segment (OVR_SEG) and the default segment (DEF_SEG). OVR_SEG may be -1 to indicate no override. */ @@ -5562,7 +5567,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_pop_update(s, ot); /* Note that reg =3D=3D R_SS in gen_movl_seg_T0 always sets is_jmp= . */ if (s->base.is_jmp) { - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); if (reg =3D=3D R_SS) { s->flags &=3D ~HF_TF_MASK; gen_eob_inhibit_irq(s, true); @@ -5577,7 +5582,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_movl_seg_T0(s, (b >> 3) & 7); gen_pop_update(s, ot); if (s->base.is_jmp) { - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); } break; @@ -5628,7 +5633,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_movl_seg_T0(s, reg); /* Note that reg =3D=3D R_SS in gen_movl_seg_T0 always sets is_jmp= . */ if (s->base.is_jmp) { - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); if (reg =3D=3D R_SS) { s->flags &=3D ~HF_TF_MASK; gen_eob_inhibit_irq(s, true); @@ -5835,7 +5840,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) /* then put the data */ gen_op_mov_reg_v(s, ot, reg, s->T1); if (s->base.is_jmp) { - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); } break; @@ -6891,7 +6896,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_pop_update(s, ot); set_cc_op(s, CC_OP_EFLAGS); /* abort translation because TF/AC flag may change */ - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); } break; @@ -7227,7 +7232,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) if (check_iopl(s)) { gen_helper_sti(cpu_env); /* interruptions are enabled only the first insn after sti */ - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob_inhibit_irq(s, true); } break; @@ -7303,7 +7308,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) } =20 gen_set_label(l3); - gen_jmp_im(s, next_eip); + gen_update_eip_next(s); tcg_gen_br(l2); =20 gen_set_label(l1); @@ -7321,7 +7326,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_helper_rdmsr(cpu_env); } else { gen_helper_wrmsr(cpu_env); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); } } @@ -7521,7 +7526,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } gen_helper_clac(cpu_env); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); break; =20 @@ -7531,7 +7536,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } gen_helper_stac(cpu_env); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); break; =20 @@ -7576,7 +7581,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); gen_helper_xsetbv(cpu_env, s->tmp2_i32, s->tmp1_i64); /* End TB because translation flags may change. */ - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); break; =20 @@ -7638,7 +7643,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) } gen_update_cc_op(s); gen_helper_stgi(cpu_env); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); break; =20 @@ -7677,7 +7682,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) tcg_gen_ext32u_tl(s->A0, cpu_regs[R_EAX]); } gen_helper_flush_page(cpu_env, s->A0); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); break; =20 @@ -7761,7 +7766,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) tcg_gen_andi_tl(s->T1, s->T1, ~0xe); tcg_gen_or_tl(s->T0, s->T0, s->T1); gen_helper_write_crN(cpu_env, tcg_constant_i32(0), s->T0); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); break; =20 @@ -7772,7 +7777,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_svm_check_intercept(s, SVM_EXIT_INVLPG); gen_lea_modrm(env, s, modrm); gen_helper_flush_page(cpu_env, s->A0); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); break; =20 @@ -8172,7 +8177,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_svm_check_intercept(s, SVM_EXIT_WRITE_CR0 + reg); gen_op_mov_v_reg(s, ot, s->T0, rm); gen_helper_write_crN(cpu_env, tcg_constant_i32(reg), s->T0); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); } else { gen_svm_check_intercept(s, SVM_EXIT_READ_CR0 + reg); @@ -8207,7 +8212,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_op_mov_v_reg(s, ot, s->T0, rm); tcg_gen_movi_i32(s->tmp2_i32, reg); gen_helper_set_dr(cpu_env, s->tmp2_i32, s->T0); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); } else { gen_svm_check_intercept(s, SVM_EXIT_READ_DR0 + reg); @@ -8222,7 +8227,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_svm_check_intercept(s, SVM_EXIT_WRITE_CR0); gen_helper_clts(cpu_env); /* abort block because static cpu state changed */ - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); } break; @@ -8320,7 +8325,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) /* XRSTOR is how MPX is enabled, which changes how we translate. Thus we need to end the TB. */ gen_update_cc_op(s); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_eob(s); break; =20 @@ -8454,7 +8459,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) g_assert_not_reached(); #else gen_update_cc_op(s); - gen_jmp_im(s, s->pc - s->cs_base); + gen_update_eip_next(s); gen_helper_rsm(cpu_env); #endif /* CONFIG_USER_ONLY */ gen_eob(s); --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661211805; cv=none; d=zohomail.com; s=zohoarc; b=dg32PsK/qPNrjGfuBQ1L83HnCT79evN3ZGNBDjY+IuJ8n2E96bumT0FjlDe6quyTXVbmuvk5vGCFMR3Pp8U1RykquLx0euqYgJ14LIGEI0FkUmevq5/G2i2XymRk/Flvk+r/zjcO3Qz82rCN3N8bkGR9z0x8KQ5kTkQqXSiZdiQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661211805; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Cfuu6TL6rDe8aq8wLymEDU+hmx0te8Z/lEdyanUGYGQ=; b=Sbx+eb0sciBCDW+IBkdXSOqi2Pf3vpUKuOjjuxmT/rOlfij8K72Fy4n1zFbAOcZ/vGRakn3t5dnujufVnNa6QkxAZQY7iFYxn25rVgq21NwnvzLoTChb63I5QzzXUY8rD+zbIpyWKpJ3Vmlp9gNrAXpDLlKqQIEG13uZSdlkE3Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661211805824288.1504809761815; Mon, 22 Aug 2022 16:43:25 -0700 (PDT) Received: from localhost ([::1]:47582 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQH4m-00014z-K2 for importer@patchew.org; Mon, 22 Aug 2022 19:43:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47834) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvD-0005tp-59 for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:31 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]:46824) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvB-0007FS-Dv for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:30 -0400 Received: by mail-pf1-x429.google.com with SMTP id p9so10754177pfq.13 for ; Mon, 22 Aug 2022 16:33:28 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=Cfuu6TL6rDe8aq8wLymEDU+hmx0te8Z/lEdyanUGYGQ=; b=uUuurCgIoZsDLI14JFxvfxciJEQ5CnKicn/HRuk4pCewN/Bl8CQiJGhkClVhr/FnmH uNM4YYhH/Yq4nk3vFgXYTGY4matlqOsfvS4u3zZPP8XwCURs7UKHuPrdVkwDc6CFnOpy YAKfynOoLR18B+WkPp3RLuSwn6Ve88bw+Ye+cUBxVGn49yKWun2Gn3SyCiHHhJaiz2P/ BKoMjNSF8ozcO9LNMPdw24DdyhdbJuZh1t6H2psNSj/3N4Yycvbusf6bTvaJfFHSvy9C YYS8a10Z8uEH1HVqDfPqO/8FrLXfHrMJAfdT2vk7JgzjDWUDw6BLmTsUdM8qgu3Kugnp brFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=Cfuu6TL6rDe8aq8wLymEDU+hmx0te8Z/lEdyanUGYGQ=; b=xybcS9uLI2SPClgtWrG8tZUdbGrH36myhRZ59fN81VRIbaUZp1RdfDzKvWV8glJALE Ws5Ox5JEipoGgmwKn9auIYOrY7D3bYo2TaFvaJbPMoy+0muhDwf3klnL8uYLz0temspc 189enoEJmyLYyhwS7EE33T8JkZ0tOzuDPoP5Gu3KihAxEgr2DJ49G7bwA02oogETWIUD 9wA71A20Qf9r/b1Lz1Od8mF9U305U5djZQ8PVW2YpcJCl0ZaVQ2KUMrC/SQCmTZykNYq vfVqKUYZ4bLBnZl34PDenwlXwwBwHdcsVHBwupaLVzgbAnU7w7qF6pNZsQ6U585nuJqr 4C3A== X-Gm-Message-State: ACgBeo02Gsvdc0Q6ZEXfaQtH1TI7+p60QKZ47Vzs9JxxLleDLYV0hfqA UmLmowCtjhov/vJWpOJ1z8nRH0nn98AShA== X-Google-Smtp-Source: AA6agR4Ke3uA9bysce0YdDGJkIVQehVOUAV9oJHwmHnOyj+NsfpCHd5oaM46FVxJe1G8bfC/cprGuw== X-Received: by 2002:a62:7b14:0:b0:536:b424:3780 with SMTP id w20-20020a627b14000000b00536b4243780mr6040748pfc.63.1661211207701; Mon, 22 Aug 2022 16:33:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 06/22] target/i386: Introduce DISAS_EOB* Date: Mon, 22 Aug 2022 16:33:02 -0700 Message-Id: <20220822233318.1728621-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661211807053100001 Content-Type: text/plain; charset="utf-8" Add a few DISAS_TARGET_* aliases to reduce the number of calls to gen_eob() and gen_eob_inhibit_irq(). So far, only update i386_tr_translate_insn for exiting the block because of single-step or previous inhibit irq. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 36883410e0..579ba37e76 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -132,6 +132,10 @@ typedef struct DisasContext { TCGOp *prev_insn_end; } DisasContext; =20 +#define DISAS_EOB_ONLY DISAS_TARGET_0 +#define DISAS_EOB_NEXT DISAS_TARGET_1 +#define DISAS_EOB_INHIBIT_IRQ DISAS_TARGET_2 + /* The environment in which user-only runs is constrained. */ #ifdef CONFIG_USER_ONLY #define PE(S) true @@ -8701,7 +8705,7 @@ static void i386_tr_translate_insn(DisasContextBase *= dcbase, CPUState *cpu) * the flag and abort the translation to give the irqs a * chance to happen. */ - dc->base.is_jmp =3D DISAS_TOO_MANY; + dc->base.is_jmp =3D DISAS_EOB_NEXT; } else if (!is_same_page(&dc->base, pc_next)) { dc->base.is_jmp =3D DISAS_TOO_MANY; } @@ -8713,9 +8717,24 @@ static void i386_tr_tb_stop(DisasContextBase *dcbase= , CPUState *cpu) { DisasContext *dc =3D container_of(dcbase, DisasContext, base); =20 - if (dc->base.is_jmp =3D=3D DISAS_TOO_MANY) { + switch (dc->base.is_jmp) { + case DISAS_NORETURN: + break; + case DISAS_TOO_MANY: + case DISAS_EOB_NEXT: + gen_update_cc_op(dc); gen_update_eip_cur(dc); + /* fall through */ + case DISAS_EOB_ONLY: gen_eob(dc); + break; + case DISAS_EOB_INHIBIT_IRQ: + gen_update_cc_op(dc); + gen_update_eip_cur(dc); + gen_eob_inhibit_irq(dc, true); + break; + default: + g_assert_not_reached(); } } =20 --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212076; cv=none; d=zohomail.com; s=zohoarc; b=WQwEcimvJGvuoHtgD9NNZYSIlZjh6DtR/0B2ob6QzM9qCK4Ch02W6inm3F18VWv4C0P4SlPm8rGM+ZRNKkLMRmYUTmWQKVYlxthjd6EUmhjbib1F/eGAmZ5b0g3m9HaJdyQjcM042N7iGkQTRYzimp6xByPRq2M4EOUFqhExU/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212076; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jKb8loPtKw8T5KNmqMg72+z1tROhcSAfpg6d4iTJR78=; b=RNLQqF0xzTwmQsm/ei0aXLXQzl0GdtRM7glZypaCvSZdNu2CvnAkVKFldgJLV02thNsk5eBksO1V2gjEvFIfU1PVN8g9t7QUC3arBw4haC9neZBR3TTfXYu4c7t1BDRVSt/2GmkufS4WLX9rZfdDJLkwam7WQSpLFgaIMREOPkA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212076433527.8247917833784; Mon, 22 Aug 2022 16:47:56 -0700 (PDT) Received: from localhost ([::1]:39902 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQH99-0006sT-DS for importer@patchew.org; Mon, 22 Aug 2022 19:47:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47836) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvE-0005xS-5U for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:32 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]:40932) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvC-0007FY-2y for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:31 -0400 Received: by mail-pf1-x436.google.com with SMTP id y141so11832382pfb.7 for ; Mon, 22 Aug 2022 16:33:29 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=jKb8loPtKw8T5KNmqMg72+z1tROhcSAfpg6d4iTJR78=; b=huNmScgEN4h6o3cb1PeeakLwBKJYxg4jSv1tqRaHMqjQHL0+4chtqHaXN0AvTGy03P Tw2n0p1ric/6yBsFHEPBittE2PYDOvvnVRL4wUDkuwcrRRT/GsCRhancBaOqEI7POUUh R8ayIt44NXin7RTtazlFWLWJ3fyHR97DcOB8ALQVuXEmBKzn3ZFWx2tI7cePkWUOHL64 QCw9dWHYJEBVbkCqQWhOlKQyD0M3Xb2xy7oAImPWJy7ZHprYpMdwjgqCW3xcdX2F4SnF 27DepMZnHstADKDbi45Gr/lwSzq7Jl0y6Kpk3nbYRWicknlvxe42hFHskQTymePlJ5Mn AUJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=jKb8loPtKw8T5KNmqMg72+z1tROhcSAfpg6d4iTJR78=; b=fjbRi+YUiTGE3QzpXYgX6R+flRnUAuRtojbRRxFLmpXQdIh2dncy9VEzjiezz88GcV 2SP6qMy4Qr7/vsQHG7M2vLOIRxv44yayL06pLy4Jv3U10OjZ93KAYD8Ycnyd340LymJy T1fS0NUo6WORDgO1woEqikz8hR+nry3UhZkJYdxIdutWof976ytW8kZR7zHaRBr/cvg3 BayADHL/J/04r6ANqpiU1l/Do407B0kccNvt0xIzLd1VBIC9e2XfsNx5EY0UwyCPBgm3 HPt8+PZTcs0RloqrB4hgrrVjgrW1OGQvoegklNgLR9ohXAXhfgs7y5R8hpNaWoJvGdJJ BvjA== X-Gm-Message-State: ACgBeo0lEi9cUORvqN0FbkaG6GbH5n70EYRjx/0nrJqGAhEO3bqcN5cB hl03kAZBbGp7kAAM/RVOSDIG/9YkQsa5mQ== X-Google-Smtp-Source: AA6agR5LXa53p7C2g/0Ld9Ld+begvJ3/13D5W9wUcXWylQsm+d5RqllbooXiak7+8iyGoTngfMmPJw== X-Received: by 2002:a63:4d65:0:b0:419:d6ae:27df with SMTP id n37-20020a634d65000000b00419d6ae27dfmr18993339pgl.179.1661211208827; Mon, 22 Aug 2022 16:33:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 07/22] target/i386: Use DISAS_EOB* in gen_movl_seg_T0 Date: Mon, 22 Aug 2022 16:33:03 -0700 Message-Id: <20220822233318.1728621-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212078448100001 Content-Type: text/plain; charset="utf-8" Set is_jmp properly in gen_movl_seg_T0, so that the callers need to nothing special. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 36 +++++------------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 579ba37e76..4dc8f4c1f8 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2432,13 +2432,15 @@ static void gen_movl_seg_T0(DisasContext *s, X86Seg= seg_reg) because ss32 may change. For R_SS, translation must always stop as a special handling must be done to disable hardware interrupts for the next instruction */ - if (seg_reg =3D=3D R_SS || (CODE32(s) && seg_reg < R_FS)) { - s->base.is_jmp =3D DISAS_TOO_MANY; + if (seg_reg =3D=3D R_SS) { + s->base.is_jmp =3D DISAS_EOB_INHIBIT_IRQ; + } else if (CODE32(s) && seg_reg < R_FS) { + s->base.is_jmp =3D DISAS_EOB_NEXT; } } else { gen_op_movl_seg_T0_vm(s, seg_reg); if (seg_reg =3D=3D R_SS) { - s->base.is_jmp =3D DISAS_TOO_MANY; + s->base.is_jmp =3D DISAS_EOB_INHIBIT_IRQ; } } } @@ -5569,26 +5571,12 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) ot =3D gen_pop_T0(s); gen_movl_seg_T0(s, reg); gen_pop_update(s, ot); - /* Note that reg =3D=3D R_SS in gen_movl_seg_T0 always sets is_jmp= . */ - if (s->base.is_jmp) { - gen_update_eip_next(s); - if (reg =3D=3D R_SS) { - s->flags &=3D ~HF_TF_MASK; - gen_eob_inhibit_irq(s, true); - } else { - gen_eob(s); - } - } break; case 0x1a1: /* pop fs */ case 0x1a9: /* pop gs */ ot =3D gen_pop_T0(s); gen_movl_seg_T0(s, (b >> 3) & 7); gen_pop_update(s, ot); - if (s->base.is_jmp) { - gen_update_eip_next(s); - gen_eob(s); - } break; =20 /**************************/ @@ -5635,16 +5623,6 @@ static bool disas_insn(DisasContext *s, CPUState *cp= u) goto illegal_op; gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); gen_movl_seg_T0(s, reg); - /* Note that reg =3D=3D R_SS in gen_movl_seg_T0 always sets is_jmp= . */ - if (s->base.is_jmp) { - gen_update_eip_next(s); - if (reg =3D=3D R_SS) { - s->flags &=3D ~HF_TF_MASK; - gen_eob_inhibit_irq(s, true); - } else { - gen_eob(s); - } - } break; case 0x8c: /* mov Gv, seg */ modrm =3D x86_ldub_code(env, s); @@ -5843,10 +5821,6 @@ static bool disas_insn(DisasContext *s, CPUState *cp= u) gen_movl_seg_T0(s, op); /* then put the data */ gen_op_mov_reg_v(s, ot, reg, s->T1); - if (s->base.is_jmp) { - gen_update_eip_next(s); - gen_eob(s); - } break; =20 /************************/ --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212279; cv=none; d=zohomail.com; s=zohoarc; b=MbhMf7bNYl688TVInY3nq6GqQH6S2REMZtiw3BQVX4haTnxJ5gl7ggwnSjSEeF51CFs7Tdx1u26E7gZG5MBjNP2MW4ghn/qQA8QPfPKim6kCjXNPBlT3rBe1qFkb3E+9Y60YGLO+KsnXvxCoS3VNrEw1ecoVBEPlbDYIMswtonc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212279; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oqjsX/TV9fFb0FKaIyHXMo7pwCHH1A0NzKkq/LQYAFc=; b=MdnF7R0S+Ly0y+3rSsMr3LzTAfGCTgimLw7LUgn097QfE9EJ2r7dhOlGLcIsHldHdv1JBTE9Jwc6F4btuq0mcgQqqffsrXWlPR7hHdlpJ5tytjiuAovKA/0/NeMdarq2Mm+JxRnHHl3dGxVg9XhuA3Bts36SGPwIXs+Mx/fqwJQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212279119180.5593099585368; Mon, 22 Aug 2022 16:51:19 -0700 (PDT) Received: from localhost ([::1]:40326 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHCQ-00040A-2D for importer@patchew.org; Mon, 22 Aug 2022 19:51:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47838) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvF-00061f-BQ for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:33 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]:33412) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvD-0007Fs-HI for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:33 -0400 Received: by mail-pg1-x52f.google.com with SMTP id l64so10798134pge.0 for ; Mon, 22 Aug 2022 16:33:31 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=oqjsX/TV9fFb0FKaIyHXMo7pwCHH1A0NzKkq/LQYAFc=; b=KpyMfWf/ViZKTpnvq9qZACT23EiriyKD/3+cmVK0h8g+BkDpcwU3NYY6qUI8VuQpjX fEc1KhvW5bf9iqy/s3JMJ7lRZDEERBFlkpTP1AOR72hljv+Nyn+Loq9Ns22goC/B0RvS PauN+OAxpRTG9hGyQJdRFhyqLTmrN7QqU5uPmBdOVy5iygSBTV27tgTJfm92oZpIuhca fYO7ukxa0apPZjlvTrYldregKggasiZ53mjkvR03lQ5rjpcZRzlsLnHbpyfpyOgC3i+R p8yOMNJ1FGnFWm7ZCqZZDl4McTHnq2X9zK07zDqeVBxT1kGzA1V0MZI/Hq/TXpD/JH7N IO+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=oqjsX/TV9fFb0FKaIyHXMo7pwCHH1A0NzKkq/LQYAFc=; b=7YmmlOqFzwg4ql/VnY3AXoPUHN7tiX4DwX3mBY7ChM7Kl+aV7xOkgvPno3Uz1xZ26Q AnhUeKd8r1Mrukwmu8Bf3NaAdRSJLrfi3HPSad2mMxP2BgnDGv+rkFxluKT66ym0E0cY x0+Y/nQ6SB5W2tUBLhmY9fNq2J7nXGsg8+OqdrRHvMNRBohpHXWVnMrOJX3dWmbWv4yx 4BtxJRUFHooB9CCDQIN7RkvHEASjTQqwh3q5Vd5PydfUQCZ480JOK6/iR0sEK4ds0WXY diX+zDE8Aveu5f7PohItkcB0VfmiuGj0nYFUY9bV+FNxo1wSTgERhICyfKY9tziqmVJj pA7w== X-Gm-Message-State: ACgBeo2dUup9TTDewbda4T+fKDe71cAvr9Jgrc3Kvb0LhSGdwKAOqhW4 IWb01TqtZz+35pTr9z+AQ6S0HrxPntzeBQ== X-Google-Smtp-Source: AA6agR6nSOGtJ/ByMK4NC2QaOvXNTjnVRmRXqRkjziY+IkCYFTBORslgVCiIp7LcBIUZh9V9VsbckQ== X-Received: by 2002:a63:f34b:0:b0:429:f039:ccfc with SMTP id t11-20020a63f34b000000b00429f039ccfcmr18915403pgj.95.1661211210239; Mon, 22 Aug 2022 16:33:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 08/22] target/i386: Use DISAS_EOB_NEXT Date: Mon, 22 Aug 2022 16:33:04 -0700 Message-Id: <20220822233318.1728621-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212279546100001 Content-Type: text/plain; charset="utf-8" Replace sequences of gen_update_cc_op, gen_update_eip_next, and gen_eob with the new is_jmp enumerator. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 40 ++++++++++++------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 4dc8f4c1f8..73e4330fc0 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -6874,8 +6874,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_pop_update(s, ot); set_cc_op(s, CC_OP_EFLAGS); /* abort translation because TF/AC flag may change */ - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; } break; case 0x9e: /* sahf */ @@ -7304,8 +7303,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_helper_rdmsr(cpu_env); } else { gen_helper_wrmsr(cpu_env); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; } } break; @@ -7504,8 +7502,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } gen_helper_clac(cpu_env); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; break; =20 case 0xcb: /* stac */ @@ -7514,8 +7511,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } gen_helper_stac(cpu_env); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; break; =20 CASE_MODRM_MEM_OP(1): /* sidt */ @@ -7559,8 +7555,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); gen_helper_xsetbv(cpu_env, s->tmp2_i32, s->tmp1_i64); /* End TB because translation flags may change. */ - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; break; =20 case 0xd8: /* VMRUN */ @@ -7621,8 +7616,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) } gen_update_cc_op(s); gen_helper_stgi(cpu_env); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; break; =20 case 0xdd: /* CLGI */ @@ -7660,8 +7654,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) tcg_gen_ext32u_tl(s->A0, cpu_regs[R_EAX]); } gen_helper_flush_page(cpu_env, s->A0); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; break; =20 CASE_MODRM_MEM_OP(2): /* lgdt */ @@ -7744,8 +7737,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) tcg_gen_andi_tl(s->T1, s->T1, ~0xe); tcg_gen_or_tl(s->T0, s->T0, s->T1); gen_helper_write_crN(cpu_env, tcg_constant_i32(0), s->T0); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; break; =20 CASE_MODRM_MEM_OP(7): /* invlpg */ @@ -7755,8 +7747,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_svm_check_intercept(s, SVM_EXIT_INVLPG); gen_lea_modrm(env, s, modrm); gen_helper_flush_page(cpu_env, s->A0); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; break; =20 case 0xf8: /* swapgs */ @@ -8155,8 +8146,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_svm_check_intercept(s, SVM_EXIT_WRITE_CR0 + reg); gen_op_mov_v_reg(s, ot, s->T0, rm); gen_helper_write_crN(cpu_env, tcg_constant_i32(reg), s->T0); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; } else { gen_svm_check_intercept(s, SVM_EXIT_READ_CR0 + reg); gen_helper_read_crN(s->T0, cpu_env, tcg_constant_i32(reg)); @@ -8190,8 +8180,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_op_mov_v_reg(s, ot, s->T0, rm); tcg_gen_movi_i32(s->tmp2_i32, reg); gen_helper_set_dr(cpu_env, s->tmp2_i32, s->T0); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; } else { gen_svm_check_intercept(s, SVM_EXIT_READ_DR0 + reg); tcg_gen_movi_i32(s->tmp2_i32, reg); @@ -8205,8 +8194,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_svm_check_intercept(s, SVM_EXIT_WRITE_CR0); gen_helper_clts(cpu_env); /* abort block because static cpu state changed */ - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; } break; /* MMX/3DNow!/SSE/SSE2/SSE3/SSSE3/SSE4 support */ @@ -8302,9 +8290,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_helper_xrstor(cpu_env, s->A0, s->tmp1_i64); /* XRSTOR is how MPX is enabled, which changes how we translate. Thus we need to end the TB. */ - gen_update_cc_op(s); - gen_update_eip_next(s); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_NEXT; break; =20 CASE_MODRM_MEM_OP(6): /* xsaveopt / clwb */ --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212656; cv=none; d=zohomail.com; s=zohoarc; b=GMCvyU7444zO9j+pl1dGPpKwOqaFtAyQdh9srpbB/8PvDiyn1akoSYEPnKPmR5k9JKzAbbspm4i2PiccNn8I+y+gO04Qp8a4EouCBCFBbHBlIsEpiT/SvJHgbA3ASaAM6JwFHx9AP6GxW3IHB+E8+0IzDsTAtZMIUdDAlSYlZwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212656; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=O05wWIZNEG/mOSoZy79SV4w8GiH9QrYOqHtGfeY48U0=; b=ILk1zHK0k/Chk4yXg7yGFSWz/4apI/Dw5wKfiXbmDbOdOux0D6y1TV48N23Roo1t0GXb64ea1i0cLHB/afkPW//B+3UE1Wsy8rp5PHSXP+kzWaVf18moUBa/okXzvDEQM3ha2McKJi9AaOpTvm3Ei8/Ife5aLY0Hq2ItU6g8WcI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212656978311.0214243937552; Mon, 22 Aug 2022 16:57:36 -0700 (PDT) Received: from localhost ([::1]:44538 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHIV-0001Zu-T2 for importer@patchew.org; Mon, 22 Aug 2022 19:57:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58806) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvW-00069a-G7 for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:51 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]:40520) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvF-0007GG-6f for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:34 -0400 Received: by mail-pj1-x102c.google.com with SMTP id t11-20020a17090a510b00b001fac77e9d1fso12808988pjh.5 for ; Mon, 22 Aug 2022 16:33:32 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=O05wWIZNEG/mOSoZy79SV4w8GiH9QrYOqHtGfeY48U0=; b=GDdaeDiCyDRQbJSwUTgSAjRv8lF5aFCSQTZmzhx5Xg8UxjJMQXwHRXJ9IXsgRx8+rP KfVgtsvpqaKSvUis3FTEmBeQ6p+Sg2j54Lqw4dZk1VVHO0o18nMkrI4mUXmNW+RY+y1i t77OoVCJmsSZ1iSMSXv1YAWMg7kXsCnoXVIhrP/BN7ZVitzJ0knfQ006lkxt7WVQvX8n zd2MV5tibyWLaAbqMwVWgHWTrE6ves3JCRqLSf78fEgz6ZW7M5ho5zhCm738gaL5FN4+ Sf1l4AvCwZTsT/mh7N4htDY5oZtL6MIvShZF66RjnQ9ibwePUopbiej3aePdGpFfgLxM Iqfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=O05wWIZNEG/mOSoZy79SV4w8GiH9QrYOqHtGfeY48U0=; b=29QdaICprervrsqMyT2adsvi7lS83bEDncwzkiwrLpRpmWv4RmeJC4v7ABzZbf0VUS nD+3wwj49BXE84ygRzxe8OmOE0r7IFq5N1BB+tF7xi/oKpCxhynvvgdxtSCtK86W1Gmn kPuIYF/sAdL0eMWtGLXL9AL/Lb1Qp3L5v8IK9tXYeUdSKDCsiIU1FtimCsrP85Vy6FsL MxR0tVwjfKZ/YDWYsd/AECLBAwIN2tZ6votINl+Vcw8JBB6nLrPCl+EFsYKUbcXMhbMU 4USScfqsbCjXvJKXstIrIUuZapbF0R2MS+6HQ8ELsCKwWnq87WSs+JMm2YjTVL4JwXP1 RA0w== X-Gm-Message-State: ACgBeo2j1sG0Avhv9ag4HMYeKpDdDXYNGtQuaQoFgrpecrQtP605tSNw cD2cDSa5UR+OImLaWkkOoAJQkXmC+43fGw== X-Google-Smtp-Source: AA6agR5ZIMYDejlIQKPhWO7YUIfMPEMnDuE9STmmuooIDyub+lCnM1crMZYEMtLaVkqgxsxe0jANng== X-Received: by 2002:a17:90a:4fc2:b0:1fb:3486:7b3d with SMTP id q60-20020a17090a4fc200b001fb34867b3dmr635982pjh.49.1661211211714; Mon, 22 Aug 2022 16:33:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 09/22] target/i386: USe DISAS_EOB_ONLY Date: Mon, 22 Aug 2022 16:33:05 -0700 Message-Id: <20220822233318.1728621-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212659168100001 Content-Type: text/plain; charset="utf-8" Replace lone calls to gen_eob() with the new enumerator. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 73e4330fc0..1dc3ff67ae 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -6687,7 +6687,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) /* add stack offset */ gen_stack_update(s, val + (2 << dflag)); } - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_ONLY; break; case 0xcb: /* lret */ val =3D 0; @@ -6705,7 +6705,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) tcg_const_i32(s->pc - s->cs_base)); } set_cc_op(s, CC_OP_EFLAGS); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_ONLY; break; case 0xe8: /* call im */ { @@ -7291,7 +7291,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_set_label(l1); gen_jmp_im(s, tval); gen_set_label(l2); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_ONLY; } break; case 0x130: /* wrmsr */ @@ -7332,7 +7332,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_exception_gpf(s); } else { gen_helper_sysenter(cpu_env); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_ONLY; } break; case 0x135: /* sysexit */ @@ -7343,7 +7343,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_exception_gpf(s); } else { gen_helper_sysexit(cpu_env, tcg_const_i32(dflag - 1)); - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_ONLY; } break; #ifdef TARGET_X86_64 @@ -8426,7 +8426,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_update_eip_next(s); gen_helper_rsm(cpu_env); #endif /* CONFIG_USER_ONLY */ - gen_eob(s); + s->base.is_jmp =3D DISAS_EOB_ONLY; break; case 0x1b8: /* SSE4.2 popcnt */ if ((prefixes & (PREFIX_REPZ | PREFIX_LOCK | PREFIX_REPNZ)) !=3D --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212490; cv=none; d=zohomail.com; s=zohoarc; b=GJvdrfACOPeQ/QXPaGbkIK1BfcVdpTiSBonvnTHuLeBNkmPYRj5pAhnUrBacV9QbDm7p3Zb+sJx4G2mPRFFFfwCst/HJ55BNJJjvlgXeXw9PjM2kMKW5B/vbBgtzxcPHv0W1QycxDOAKHngUCQWlLUFxSiPdO+luW0quewoiqyA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212490; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+OJB/KgYLATLASrlEThWGbrHHghDFAhGZdOzeh5O3nA=; b=bdKKwSumJvUerW69pBD6Xye4hSv7dNEeLlyzqBQvAN5sEPUmSzuhUxB33tM7LRkJwHAaOZGeXlkxiOA5bCXgamEhv7FCF7ZKQ3Mqa81V4DMviQD4gwyhcaUnEeRJdkp5Qx6isa4sPkB4ag9mqmE9U5rNKkKVhqBiF1INm5ignlM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212490708419.7508713463127; Mon, 22 Aug 2022 16:54:50 -0700 (PDT) Received: from localhost ([::1]:46100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHFp-0004VN-MR for importer@patchew.org; Mon, 22 Aug 2022 19:54:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58808) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvW-00069b-Ge for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:51 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]:35415) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvF-0007FB-FH for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:35 -0400 Received: by mail-pg1-x52f.google.com with SMTP id r69so10781228pgr.2 for ; Mon, 22 Aug 2022 16:33:33 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=+OJB/KgYLATLASrlEThWGbrHHghDFAhGZdOzeh5O3nA=; b=xLtk26nh/DujLrPeyWNtLD4Nd3B5S7lGt8a2bX8GLDqctGEfJRW2+3hvlpLNj4UFh4 gq7Lqp1x9P+Sk8s5iGwFmzDltytaUklPL9t4HM1WHr56Tn4ODYkrgGleZ1aCDuYovZK3 6Sg5hnBUMtvlgUBxGjqIc+NXQ5kJPJXiuo2VGg28K8bJ+pN6wHNIJQVT4iEDgMoWUhNu k2YHKR1jDR9gSTJAHWn+2XdtUci6hlHYcxErpJlAz/EW7oGj4qDw6N+ToxNMxGyeeMpG 1ybBFjoIOQER61nR4q2EQLrwsN6EUEw0zVqhF6HFqgBz4JaOFkESHQiRZ3opjDSl6oJ0 DIig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=+OJB/KgYLATLASrlEThWGbrHHghDFAhGZdOzeh5O3nA=; b=pEXf1iSvqaMGuXRiYTR+0Q1CLkaI15wFUyarm7G23676jBMNOXKC7ySwYEmEPy43hK mhAKRwMtgRkU0JfctLuwTLK8H4rFBz1h4sp691i3rfznMfdsWtJeOrq6gi+uUYnP3U6I kXUwJMgpSE0pL/dnVAdm7sxq9pAOqN8lHEByCNnE7Huv+rnPxJQi9sOwkdg9u8Vbkd/x NbbcLGYBWzA4bXJO2ZcimSMVOtmflC3dbdzHy7Z6Hm6dxT6jhul5JdacoByt5SVTSUHk b2Vb1l2ulvnFGt4JlTOy3Lv3I4nRTas1iqER9LNif5oUMtrLtw0ypJK/l5fWdrD9nmMk Lw9Q== X-Gm-Message-State: ACgBeo10PDWzirgyE8Wxzpv5p4OIWygm16oj8pMitzvJnPVNtzjpVQfr 9k8tsDNWXWeddSEUoKHOAz/XqgOk/Wp2yQ== X-Google-Smtp-Source: AA6agR4Jx5gdywYpBcakG3AzkBZuSgkl/yA7h6uGFdaPoRY+/1EM2s7cXuvPymZ3HJi+E8LeXKwywg== X-Received: by 2002:a65:6048:0:b0:412:73c7:cca9 with SMTP id a8-20020a656048000000b0041273c7cca9mr19112568pgp.257.1661211212591; Mon, 22 Aug 2022 16:33:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 10/22] target/i386: Create cur_insn_len, cur_insn_len_i32 Date: Mon, 22 Aug 2022 16:33:06 -0700 Message-Id: <20220822233318.1728621-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212492430100001 Content-Type: text/plain; charset="utf-8" Create common routines for computing the length of the insn. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 1dc3ff67ae..ee8e87a617 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -530,6 +530,16 @@ static void gen_update_eip_next(DisasContext *s) gen_jmp_im(s, s->pc - s->cs_base); } =20 +static int cur_insn_len(DisasContext *s) +{ + return s->pc - s->base.pc_next; +} + +static TCGv_i32 cur_insn_len_i32(DisasContext *s) +{ + return tcg_constant_i32(cur_insn_len(s)); +} + /* Compute SEG:REG into A0. SEG is selected from the override segment (OVR_SEG) and the default segment (DEF_SEG). OVR_SEG may be -1 to indicate no override. */ @@ -712,9 +722,6 @@ static bool gen_check_io(DisasContext *s, MemOp ot, TCG= v_i32 port, gen_helper_check_io(cpu_env, port, tcg_constant_i32(1 << ot)); } if (GUEST(s)) { - target_ulong cur_eip =3D s->base.pc_next - s->cs_base; - target_ulong next_eip =3D s->pc - s->cs_base; - gen_update_cc_op(s); gen_update_eip_cur(s); if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { @@ -723,7 +730,7 @@ static bool gen_check_io(DisasContext *s, MemOp ot, TCG= v_i32 port, svm_flags |=3D 1 << (SVM_IOIO_SIZE_SHIFT + ot); gen_helper_svm_check_io(cpu_env, port, tcg_constant_i32(svm_flags), - tcg_constant_i32(next_eip - cur_eip)); + cur_insn_len_i32(s)); } return true; #endif @@ -2028,7 +2035,7 @@ static uint64_t advance_pc(CPUX86State *env, DisasCon= text *s, int num_bytes) } =20 s->pc +=3D num_bytes; - if (unlikely(s->pc - s->base.pc_next > X86_MAX_INSN_LENGTH)) { + if (unlikely(cur_insn_len(s) > X86_MAX_INSN_LENGTH)) { /* If the instruction's 16th byte is on a different page than the = 1st, a * page fault on the second page wins over the general protection = fault * caused by the instruction being too long. @@ -2622,7 +2629,7 @@ static void gen_interrupt(DisasContext *s, int intno) gen_update_cc_op(s); gen_update_eip_cur(s); gen_helper_raise_interrupt(cpu_env, tcg_constant_i32(intno), - tcg_constant_i32(s->pc - s->base.pc_next)); + cur_insn_len_i32(s)); s->base.is_jmp =3D DISAS_NORETURN; } =20 @@ -7166,7 +7173,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) if (prefixes & PREFIX_REPZ) { gen_update_cc_op(s); gen_update_eip_cur(s); - gen_helper_pause(cpu_env, tcg_const_i32(s->pc - s->base.pc_nex= t)); + gen_helper_pause(cpu_env, cur_insn_len_i32(s)); s->base.is_jmp =3D DISAS_NORETURN; } break; @@ -7192,7 +7199,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; gen_update_cc_op(s); gen_update_eip_cur(s); - gen_helper_into(cpu_env, tcg_const_i32(s->pc - s->base.pc_next)); + gen_helper_into(cpu_env, cur_insn_len_i32(s)); break; #ifdef WANT_ICEBP case 0xf1: /* icebp (undocumented, exits to external debugger) */ @@ -7351,7 +7358,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) /* XXX: is it usable in real mode ? */ gen_update_cc_op(s); gen_update_eip_cur(s); - gen_helper_syscall(cpu_env, tcg_const_i32(s->pc - s->base.pc_next)= ); + gen_helper_syscall(cpu_env, cur_insn_len_i32(s)); /* TF handling for the syscall insn is different. The TF bit is c= hecked after the syscall insn completes. This allows #DB to not be generated after one has entered CPL0 if TF is set in FMASK. */ @@ -7383,7 +7390,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) if (check_cpl0(s)) { gen_update_cc_op(s); gen_update_eip_cur(s); - gen_helper_hlt(cpu_env, tcg_const_i32(s->pc - s->base.pc_next)= ); + gen_helper_hlt(cpu_env, cur_insn_len_i32(s)); s->base.is_jmp =3D DISAS_NORETURN; } break; @@ -7492,7 +7499,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) } gen_update_cc_op(s); gen_update_eip_cur(s); - gen_helper_mwait(cpu_env, tcg_const_i32(s->pc - s->base.pc_nex= t)); + gen_helper_mwait(cpu_env, cur_insn_len_i32(s)); s->base.is_jmp =3D DISAS_NORETURN; break; =20 @@ -7568,7 +7575,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_update_cc_op(s); gen_update_eip_cur(s); gen_helper_vmrun(cpu_env, tcg_const_i32(s->aflag - 1), - tcg_const_i32(s->pc - s->base.pc_next)); + cur_insn_len_i32(s)); tcg_gen_exit_tb(NULL, 0); s->base.is_jmp =3D DISAS_NORETURN; break; --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661213463; cv=none; d=zohomail.com; s=zohoarc; b=Rnlub3HPbdIuyYEFQSP12SktuZc0lO+dRZUV6eIalLm9t1BKOpEx1NY8qpKssMi3RHNoNS81krkJ37LTchLUtVtJAu3HeRa4rSKIk4MFG5CbW2ywhwooXZ880L2MDnxmcCxxX9hfx/1pZ6KYEqOqdcT/19HmSaxDsDZUBj47oiI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661213463; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9Arjo42FMfgOHUOKPnaNXPkKeSDs2OlIA7G2pgMh604=; b=EzZs9JhTsKGFTlLxps7WmWlOJw3SCWIfXQxot3pe4011VaPsi7MkHwy3J8GHvG8ZryQl5hZzNKR4RQycwfDFWfD2ApIRS/nmlZdlnpLbZn0/RkoP9/rU7Z9dOwoVzPXG5Amkx1lKNgxcRR9xNWB17E3KdWuBKCyLdhfPwPZ2VaU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661213463652170.93302139997581; Mon, 22 Aug 2022 17:11:03 -0700 (PDT) Received: from localhost ([::1]:44764 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHVU-0005kf-DV for importer@patchew.org; Mon, 22 Aug 2022 20:11:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33620) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvb-0006AO-SX for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:57 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:38588) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007FP-Az for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:54 -0400 Received: by mail-pl1-x634.google.com with SMTP id x19so11307984plc.5 for ; Mon, 22 Aug 2022 16:33:34 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=9Arjo42FMfgOHUOKPnaNXPkKeSDs2OlIA7G2pgMh604=; b=oRJcB4J/rAnLz2zMQ69ha5QOspBg74tylUxtGUxlbB0oWfYGxogzZofig1QuAssG5f kER3jmrIMGbgbkUdWVJi2FCSTosQ9EH1OG4tY9GdWIf8Keycylv9N+8k1fyH2ZexYV+0 HMfFEc7hVtZZdpRi+a1PxE1qMG+1J4HNvuSvSzaGaH8UHpc5d44pljUS3AfoXQ+yyu2s oRD6ibdEwsux257RZwngit+wkeAtJajs9euw4tvPDtOtsNhItO40YnAXhwOhu6HhoTQn fSF8XC7ccdpfMuhW4mHtsU85/KFVgToymfcDHyaCT4gN4zkor8VJOm7Z+HUm+kxgO+Tf w0/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=9Arjo42FMfgOHUOKPnaNXPkKeSDs2OlIA7G2pgMh604=; b=sVTP8lyoxewZ4XL3SV8/A6Y5WY57bkA9OVhTPgL8KAKbkaWLRDRMgXrgOlQXISwOCZ O6yKAY1y89IBOQsuWfwbzmMxGiQmX8tYAC8KIhSMjcqlfW5pnmzlwab9IGIzxelDtEbX LtM7MyxVrue66XBSk/yXlz7TQIMdvX5dhj5ZmmMgY7NSRrEJ6qHUwfPNcbKsUH+LQ+Nj ZmE9K4LpDdolH2ndABQ7YEPrRquLujSW76LaMtD4uwPtLmS97ztedGeqoEnCGnRpartx q6WRYB8ByAzM/pCrjasrAdjp8QkrqBIiGDK7UTE776Oan4ZEVyxD67+OMTqcYclYU/DZ QDrg== X-Gm-Message-State: ACgBeo1l17RXCZaDaYb8xeNbMqazo0qLTJVDsZlEnvh7U8sHwSJxN4Vp jxx4CSB1CEnYZtrAmH/eMqMQjevt+73A/w== X-Google-Smtp-Source: AA6agR7zJYNX/59Lzj+NwjwpewvP8gDUpkqU84PiJOL09WoWpYpLhVa6A85ZgaeDTmlkpD5t25fyew== X-Received: by 2002:a17:902:d403:b0:172:9f0a:e591 with SMTP id b3-20020a170902d40300b001729f0ae591mr22491176ple.109.1661211213925; Mon, 22 Aug 2022 16:33:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 11/22] target/i386: Remove cur_eip, next_eip arguments to gen_repz* Date: Mon, 22 Aug 2022 16:33:07 -0700 Message-Id: <20220822233318.1728621-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661213465328100001 Content-Type: text/plain; charset="utf-8" All callers pass s->base.pc_next and s->pc, which we can just as well compute within the functions. Pull out common helpers and reduce the amount of code under macros. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 116 ++++++++++++++++++------------------ 1 file changed, 57 insertions(+), 59 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index ee8e87a617..38f4589fd2 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -736,7 +736,7 @@ static bool gen_check_io(DisasContext *s, MemOp ot, TCG= v_i32 port, #endif } =20 -static inline void gen_movs(DisasContext *s, MemOp ot) +static void gen_movs(DisasContext *s, MemOp ot) { gen_string_movl_A0_ESI(s); gen_op_ld_v(s, ot, s->T0, s->A0); @@ -1156,18 +1156,18 @@ static inline void gen_jcc1(DisasContext *s, int b,= TCGLabel *l1) =20 /* XXX: does not work with gdbstub "ice" single step - not a serious problem */ -static TCGLabel *gen_jz_ecx_string(DisasContext *s, target_ulong next_eip) +static TCGLabel *gen_jz_ecx_string(DisasContext *s) { TCGLabel *l1 =3D gen_new_label(); TCGLabel *l2 =3D gen_new_label(); gen_op_jnz_ecx(s, s->aflag, l1); gen_set_label(l2); - gen_jmp_tb(s, next_eip, 1); + gen_jmp_tb(s, s->pc - s->cs_base, 1); gen_set_label(l1); return l2; } =20 -static inline void gen_stos(DisasContext *s, MemOp ot) +static void gen_stos(DisasContext *s, MemOp ot) { gen_op_mov_v_reg(s, MO_32, s->T0, R_EAX); gen_string_movl_A0_EDI(s); @@ -1176,7 +1176,7 @@ static inline void gen_stos(DisasContext *s, MemOp ot) gen_op_add_reg_T0(s, s->aflag, R_EDI); } =20 -static inline void gen_lods(DisasContext *s, MemOp ot) +static void gen_lods(DisasContext *s, MemOp ot) { gen_string_movl_A0_ESI(s); gen_op_ld_v(s, ot, s->T0, s->A0); @@ -1185,7 +1185,7 @@ static inline void gen_lods(DisasContext *s, MemOp ot) gen_op_add_reg_T0(s, s->aflag, R_ESI); } =20 -static inline void gen_scas(DisasContext *s, MemOp ot) +static void gen_scas(DisasContext *s, MemOp ot) { gen_string_movl_A0_EDI(s); gen_op_ld_v(s, ot, s->T1, s->A0); @@ -1194,7 +1194,7 @@ static inline void gen_scas(DisasContext *s, MemOp ot) gen_op_add_reg_T0(s, s->aflag, R_EDI); } =20 -static inline void gen_cmps(DisasContext *s, MemOp ot) +static void gen_cmps(DisasContext *s, MemOp ot) { gen_string_movl_A0_EDI(s); gen_op_ld_v(s, ot, s->T1, s->A0); @@ -1222,7 +1222,7 @@ static void gen_bpt_io(DisasContext *s, TCGv_i32 t_po= rt, int ot) } } =20 -static inline void gen_ins(DisasContext *s, MemOp ot) +static void gen_ins(DisasContext *s, MemOp ot) { gen_string_movl_A0_EDI(s); /* Note: we must do this dummy write first to be restartable in @@ -1238,7 +1238,7 @@ static inline void gen_ins(DisasContext *s, MemOp ot) gen_bpt_io(s, s->tmp2_i32, ot); } =20 -static inline void gen_outs(DisasContext *s, MemOp ot) +static void gen_outs(DisasContext *s, MemOp ot) { gen_string_movl_A0_ESI(s); gen_op_ld_v(s, ot, s->T0, s->A0); @@ -1252,42 +1252,49 @@ static inline void gen_outs(DisasContext *s, MemOp = ot) gen_bpt_io(s, s->tmp2_i32, ot); } =20 -/* same method as Valgrind : we generate jumps to current or next - instruction */ -#define GEN_REPZ(op) = \ -static inline void gen_repz_ ## op(DisasContext *s, MemOp ot, = \ - target_ulong cur_eip, target_ulong next_e= ip) \ -{ = \ - TCGLabel *l2; = \ - gen_update_cc_op(s); = \ - l2 =3D gen_jz_ecx_string(s, next_eip); = \ - gen_ ## op(s, ot); = \ - gen_op_add_reg_im(s, s->aflag, R_ECX, -1); = \ - /* a loop would cause two single step exceptions if ECX =3D 1 = \ - before rep string_insn */ = \ - if (s->repz_opt) = \ - gen_op_jz_ecx(s, s->aflag, l2); = \ - gen_jmp(s, cur_eip); = \ +/* Generate jumps to current or next instruction */ +static void gen_repz(DisasContext *s, MemOp ot, + void (*fn)(DisasContext *s, MemOp ot)) +{ + TCGLabel *l2; + gen_update_cc_op(s); + l2 =3D gen_jz_ecx_string(s); + fn(s, ot); + gen_op_add_reg_im(s, s->aflag, R_ECX, -1); + /* + * A loop would cause two single step exceptions if ECX =3D 1 + * before rep string_insn + */ + if (s->repz_opt) { + gen_op_jz_ecx(s, s->aflag, l2); + } + gen_jmp(s, s->base.pc_next - s->cs_base); } =20 -#define GEN_REPZ2(op) = \ -static inline void gen_repz_ ## op(DisasContext *s, MemOp ot, = \ - target_ulong cur_eip, = \ - target_ulong next_eip, = \ - int nz) = \ -{ = \ - TCGLabel *l2; = \ - gen_update_cc_op(s); = \ - l2 =3D gen_jz_ecx_string(s, next_eip); = \ - gen_ ## op(s, ot); = \ - gen_op_add_reg_im(s, s->aflag, R_ECX, -1); = \ - gen_update_cc_op(s); = \ - gen_jcc1(s, (JCC_Z << 1) | (nz ^ 1), l2); = \ - if (s->repz_opt) = \ - gen_op_jz_ecx(s, s->aflag, l2); = \ - gen_jmp(s, cur_eip); = \ +#define GEN_REPZ(op) \ + static inline void gen_repz_ ## op(DisasContext *s, MemOp ot) \ + { gen_repz(s, ot, gen_##op); } + +static void gen_repz2(DisasContext *s, MemOp ot, int nz, + void (*fn)(DisasContext *s, MemOp ot)) +{ + TCGLabel *l2; + gen_update_cc_op(s); + l2 =3D gen_jz_ecx_string(s); + fn(s, ot); + gen_op_add_reg_im(s, s->aflag, R_ECX, -1); + gen_update_cc_op(s); + gen_jcc1(s, (JCC_Z << 1) | (nz ^ 1), l2); + if (s->repz_opt) { + gen_op_jz_ecx(s, s->aflag, l2); + } + gen_jmp(s, s->base.pc_next - s->cs_base); } =20 +#define GEN_REPZ2(op) \ + static inline void gen_repz_ ## op(DisasContext *s, MemOp ot, int nz) \ + { gen_repz2(s, ot, nz, gen_##op); } + GEN_REPZ(movs) GEN_REPZ(stos) GEN_REPZ(lods) @@ -6475,8 +6482,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) case 0xa5: ot =3D mo_b_d(b, dflag); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_movs(s, ot, s->base.pc_next - s->cs_base, - s->pc - s->cs_base); + gen_repz_movs(s, ot); } else { gen_movs(s, ot); } @@ -6486,8 +6492,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) case 0xab: ot =3D mo_b_d(b, dflag); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_stos(s, ot, s->base.pc_next - s->cs_base, - s->pc - s->cs_base); + gen_repz_stos(s, ot); } else { gen_stos(s, ot); } @@ -6496,8 +6501,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) case 0xad: ot =3D mo_b_d(b, dflag); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_lods(s, ot, s->base.pc_next - s->cs_base, - s->pc - s->cs_base); + gen_repz_lods(s, ot); } else { gen_lods(s, ot); } @@ -6506,11 +6510,9 @@ static bool disas_insn(DisasContext *s, CPUState *cp= u) case 0xaf: ot =3D mo_b_d(b, dflag); if (prefixes & PREFIX_REPNZ) { - gen_repz_scas(s, ot, s->base.pc_next - s->cs_base, - s->pc - s->cs_base, 1); + gen_repz_scas(s, ot, 1); } else if (prefixes & PREFIX_REPZ) { - gen_repz_scas(s, ot, s->base.pc_next - s->cs_base, - s->pc - s->cs_base, 0); + gen_repz_scas(s, ot, 0); } else { gen_scas(s, ot); } @@ -6520,11 +6522,9 @@ static bool disas_insn(DisasContext *s, CPUState *cp= u) case 0xa7: ot =3D mo_b_d(b, dflag); if (prefixes & PREFIX_REPNZ) { - gen_repz_cmps(s, ot, s->base.pc_next - s->cs_base, - s->pc - s->cs_base, 1); + gen_repz_cmps(s, ot, 1); } else if (prefixes & PREFIX_REPZ) { - gen_repz_cmps(s, ot, s->base.pc_next - s->cs_base, - s->pc - s->cs_base, 0); + gen_repz_cmps(s, ot, 0); } else { gen_cmps(s, ot); } @@ -6542,8 +6542,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_io_start(); } if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_ins(s, ot, s->base.pc_next - s->cs_base, - s->pc - s->cs_base); + gen_repz_ins(s, ot); /* jump generated by gen_repz_ins */ } else { gen_ins(s, ot); @@ -6564,8 +6563,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_io_start(); } if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_outs(s, ot, s->base.pc_next - s->cs_base, - s->pc - s->cs_base); + gen_repz_outs(s, ot); /* jump generated by gen_repz_outs */ } else { gen_outs(s, ot); --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661213016; cv=none; d=zohomail.com; s=zohoarc; b=mvAooMgszTHMbggXqBHO4SBEm9g7e+6fZsfZj9pqeNrB0XWq4dK7ICXzCyXoPkIAo1gEfFWe/C+k2JVFZdrA73qxYosKXcvI93TQyziFroa0RfI+5HRMpjHsgkWtBf+TRyFK517u0YjOQakNREp4b5t67I3fa64FtHFiJCyxXiU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661213016; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=StqOv8lM7EsBPsIyrOVv+mUXMeqQOE/sW2DxFQvSCeI=; b=Wn02tGGXzbPyxd4c9pL/seIsUvFaJtEodzY7USZLnmHvemOIpTSqRcLBZPkJ5e3xLZhXucgPPi9u+QHKXwJkcwQEncI+ZmYc02LxktcsZNQ/VOoVyqeoyXP8Ym/di8GGh8vFHqAovVguL2suLm2FFTzj4rSEl6bOMj9M7wO6xkE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661213016983939.3873327852907; Mon, 22 Aug 2022 17:03:36 -0700 (PDT) Received: from localhost ([::1]:47598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHOJ-0003aY-SB for importer@patchew.org; Mon, 22 Aug 2022 20:03:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33622) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvb-0006AP-Si for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:57 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]:40909) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007H7-AG for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:54 -0400 Received: by mail-pg1-x52c.google.com with SMTP id w13so5685527pgq.7 for ; Mon, 22 Aug 2022 16:33:36 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=StqOv8lM7EsBPsIyrOVv+mUXMeqQOE/sW2DxFQvSCeI=; b=aIzOR5Qb0GeCtNLKCDsWMRL65pD5AqF8HaC1xEONBY7HzMnV6PxDKIpTWhlB1+YvoU ZeImsWMQte2krtVF2kIn6PLDryxzQiw+qU7MxCw4NM9kiK5Q3HdFjqKNUTUx/npnuE3e h4L/BPErFVeDGd/HiX0Jl+yiIFBb/Wsj4n02DTBYjv5CE0VhqmsP7+AzAINBkYktgyse 8NOMQLh8ofTDoqVbvac8NtreY/sMuN/I8kK4V4kTrASpEquPw1ZhPg1/lNCbYf4ipSX8 QZhUwtwHmtU+UYnsmFD9r0YlrkohzHxBQ8KbIY2dSHhQOdp+6koXcS8oM34m1uuNJBKO Eygw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=StqOv8lM7EsBPsIyrOVv+mUXMeqQOE/sW2DxFQvSCeI=; b=BrW+Bddw/HjJc5i2wTPo08AtTTxdCnJTW9ipdHSbDb2ubrIZuwZ5fS2BrutF2M5fr2 tvUubK1JUNAET5mjUczjo3cFPkM8J4Nf/MJVkeXqlSEvZnX3+8HgFbnhjCMFScdqQiaT NcEBHUd0l5G9Qx02tBNshbL4cUWEwZXknPlKWYdr391p/cKtucl2LLF2qFiFg9MYxB0D Q8PzEG16T6kYqrxK3RRn3jzGv+rOI1tgWM57+CJX3h9IgqobgK9tNeSST3KEecS7Ooqi QDHPFwCS+NdZzKkQSvDPk15jvRcXdzr06mdxycYDLMiU3+AozAxKftK8wEN22TWCDS/v vYVA== X-Gm-Message-State: ACgBeo1Y0WeqAqM1OfQZPNl213nwD0rqxbSLWlpP7+nlJRwZbCWjghmz xXBwReg/Fn9iWWfid4OkQXrfOxBZIYOwxw== X-Google-Smtp-Source: AA6agR7PaMHlyiORxL6zfss6OQPfIEfTqsOnNeEKsJ4oxxr6T9bE9AUDJiHa7J4NTUjIPT1oTTH1+g== X-Received: by 2002:a05:6a00:c96:b0:52e:979c:dd63 with SMTP id a22-20020a056a000c9600b0052e979cdd63mr23123909pfv.50.1661211215360; Mon, 22 Aug 2022 16:33:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 12/22] target/i386: Introduce DISAS_JUMP Date: Mon, 22 Aug 2022 16:33:08 -0700 Message-Id: <20220822233318.1728621-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661213019024100001 Content-Type: text/plain; charset="utf-8" Drop the unused dest argument to gen_jr(). Remove most of the calls to gen_jr, and use DISAS_JUMP. Remove some unused loads of eip for lcall and ljmp. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 38f4589fd2..367a7a335a 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -135,6 +135,7 @@ typedef struct DisasContext { #define DISAS_EOB_ONLY DISAS_TARGET_0 #define DISAS_EOB_NEXT DISAS_TARGET_1 #define DISAS_EOB_INHIBIT_IRQ DISAS_TARGET_2 +#define DISAS_JUMP DISAS_TARGET_3 =20 /* The environment in which user-only runs is constrained. */ #ifdef CONFIG_USER_ONLY @@ -222,7 +223,7 @@ STUB_HELPER(wrmsr, TCGv_env env) #endif =20 static void gen_eob(DisasContext *s); -static void gen_jr(DisasContext *s, TCGv dest); +static void gen_jr(DisasContext *s); static void gen_jmp(DisasContext *s, target_ulong eip); static void gen_jmp_tb(DisasContext *s, target_ulong eip, int tb_num); static void gen_op(DisasContext *s1, int op, MemOp ot, int d); @@ -2360,7 +2361,7 @@ static void gen_goto_tb(DisasContext *s, int tb_num, = target_ulong eip) } else { /* jump to another page */ gen_jmp_im(s, eip); - gen_jr(s, s->tmp0); + gen_jr(s); } } =20 @@ -2729,7 +2730,7 @@ static void gen_eob(DisasContext *s) } =20 /* Jump to register */ -static void gen_jr(DisasContext *s, TCGv dest) +static void gen_jr(DisasContext *s) { do_gen_eob_worker(s, false, false, true); } @@ -5171,7 +5172,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_push_v(s, s->T1); gen_op_jmp_v(s->T0); gen_bnd_jmp(s); - gen_jr(s, s->T0); + s->base.is_jmp =3D DISAS_JUMP; break; case 3: /* lcall Ev */ if (mod =3D=3D 3) { @@ -5192,8 +5193,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) tcg_const_i32(dflag - 1), tcg_const_i32(s->pc - s->cs_base)); } - tcg_gen_ld_tl(s->tmp4, cpu_env, offsetof(CPUX86State, eip)); - gen_jr(s, s->tmp4); + s->base.is_jmp =3D DISAS_JUMP; break; case 4: /* jmp Ev */ if (dflag =3D=3D MO_16) { @@ -5201,7 +5201,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) } gen_op_jmp_v(s->T0); gen_bnd_jmp(s); - gen_jr(s, s->T0); + s->base.is_jmp =3D DISAS_JUMP; break; case 5: /* ljmp Ev */ if (mod =3D=3D 3) { @@ -5219,8 +5219,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_op_movl_seg_T0_vm(s, R_CS); gen_op_jmp_v(s->T1); } - tcg_gen_ld_tl(s->tmp4, cpu_env, offsetof(CPUX86State, eip)); - gen_jr(s, s->tmp4); + s->base.is_jmp =3D DISAS_JUMP; break; case 6: /* push Ev */ gen_push_v(s, s->T0); @@ -6660,7 +6659,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) /* Note that gen_pop_T0 uses a zero-extending load. */ gen_op_jmp_v(s->T0); gen_bnd_jmp(s); - gen_jr(s, s->T0); + s->base.is_jmp =3D DISAS_JUMP; break; case 0xc3: /* ret */ ot =3D gen_pop_T0(s); @@ -6668,7 +6667,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) /* Note that gen_pop_T0 uses a zero-extending load. */ gen_op_jmp_v(s->T0); gen_bnd_jmp(s); - gen_jr(s, s->T0); + s->base.is_jmp =3D DISAS_JUMP; break; case 0xca: /* lret im */ val =3D x86_ldsw_code(env, s); @@ -8698,6 +8697,9 @@ static void i386_tr_tb_stop(DisasContextBase *dcbase,= CPUState *cpu) gen_update_eip_cur(dc); gen_eob_inhibit_irq(dc, true); break; + case DISAS_JUMP: + gen_jr(dc); + break; default: g_assert_not_reached(); } --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212436; cv=none; d=zohomail.com; s=zohoarc; b=EhIdOkHF4dpOOeWp7Uce67X6IAOLsBx7a6DDanktRjNrpg8bTmT+XBice55bc6yAh4f2h8rB+s1D+WrJYq+muWxVZranI2QxKAgY6clrtwJcEcxouA6HmmDQC2m7tsnkh+dsZgmcKMKo1M7/NLrC+VE/R5HcB1S0W1HdAhgvzCs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212436; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kxgqCCWuJTk37ZVQTycQC25Ehrr1bCZKZB4kFGqdRhM=; b=GRlCcttAW1Fvgmyiy6nR0xXG4U59iBJr7QNwhIfvqlYgzQhb4Mk/PaSOeoM1ybdaqBHgJHWSv23MziggTBCzU3IO0GjeXdx4knmv59NRGIVk35e3p+WM+3/vx8tr/XvMcAndT9vLDVP9u0uOGKyGf2GAx5BvgvQGiAWv+0u6oy8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212436695434.0493466859044; Mon, 22 Aug 2022 16:53:56 -0700 (PDT) Received: from localhost ([::1]:37430 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHEx-0002dP-H4 for importer@patchew.org; Mon, 22 Aug 2022 19:53:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58816) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvZ-0006AH-6a for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:56 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]:33412) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007Fs-9F for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:52 -0400 Received: by mail-pg1-x52f.google.com with SMTP id l64so10798323pge.0 for ; Mon, 22 Aug 2022 16:33:37 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=kxgqCCWuJTk37ZVQTycQC25Ehrr1bCZKZB4kFGqdRhM=; b=NVh60Onj0olOZMWd/6N4G21DugD/WQnwsLNPton8TfNIpzNMsEsreF0TqTeIjDQOtq +DihU1zhaAR92USQouYfIeMG2lLQpp47oi1yEDr8nreyUw8QUlbU1ubgCeDbZfuMMm9W b5Ujru3+mBulXSAPPZ6Wx6OTAU8uolYNqas8bwkIhSA/uD0Se1c/0Ynr7gIReW0J6dFl yyYnIhulW+vvP9ax8WF4+FI9DOwLVivG5zdDlTREK6gMt3xY/L5s6kUcMZfmJ+xCULAA yt/C2Uz8bH74cz+/Qg0I3ZGuND894Dzyo+2mot2/4pKEd6WL8ByyXlmEDtjuoyK1h24M CwMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=kxgqCCWuJTk37ZVQTycQC25Ehrr1bCZKZB4kFGqdRhM=; b=urSMCzwtN9l+l5ZWn9Av06x7hpUfYdwWf5iBVlp7xOXQZAuzg8N+Wh4t0zBD3B0aY7 W+Y6xeAJm2ObSuOaTgDG268kMjGEntqpFTf2aM6Zdxys89OfSCK4Dh0WJx8Ui0bT6Ppb V80CAgz/u3vmF4sTFUoxvP4tHYVDeb5ENgTfXKZsaDxndN5KTabmqelYVPMVRuSRGgju kpVKNq68Vxs2jE6Z/rMWtBYix/utU763gDEgc06R0J/J9rJxCmnyJk5dklIxMjnbt1J5 Qy18XaB5WdfSfITviJDpCSx4HLJG2GB+ZWY5mFxw1mPSf/ibS5R0QRZK+0RKeFHvfPHt fdmw== X-Gm-Message-State: ACgBeo1O6mYkgvw6j/6TxJlMrE3rV2s91Zr4PoqJFErwFlJ7q465d8c5 NyvQNkAe9IMQm0y3zZJSqUzHu42aoX3k+Q== X-Google-Smtp-Source: AA6agR70gfyBksPS/gxWNlHfi1p9xdBFO5JEX6ddjxTJ9ysFrt6GZOsH44GC6v6nLj6zA12ym5b+Qg== X-Received: by 2002:a63:85c1:0:b0:42a:1230:e3c2 with SMTP id u184-20020a6385c1000000b0042a1230e3c2mr17898944pgd.370.1661211216878; Mon, 22 Aug 2022 16:33:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 13/22] target/i386: Truncate values for lcall_real to i32 Date: Mon, 22 Aug 2022 16:33:09 -0700 Message-Id: <20220822233318.1728621-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212438145100001 Content-Type: text/plain; charset="utf-8" Use i32 not int or tl for eip and cs arguments. Signed-off-by: Richard Henderson --- target/i386/helper.h | 2 +- target/i386/tcg/seg_helper.c | 6 ++---- target/i386/tcg/translate.c | 3 ++- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index ac3b4d1ee3..39a3c24182 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -37,7 +37,7 @@ DEF_HELPER_2(lldt, void, env, int) DEF_HELPER_2(ltr, void, env, int) DEF_HELPER_3(load_seg, void, env, int, int) DEF_HELPER_4(ljmp_protected, void, env, int, tl, tl) -DEF_HELPER_5(lcall_real, void, env, int, tl, int, int) +DEF_HELPER_5(lcall_real, void, env, i32, i32, int, i32) DEF_HELPER_5(lcall_protected, void, env, int, tl, int, tl) DEF_HELPER_2(iret_real, void, env, int) DEF_HELPER_3(iret_protected, void, env, int, int) diff --git a/target/i386/tcg/seg_helper.c b/target/i386/tcg/seg_helper.c index bffd82923f..539189b4d1 100644 --- a/target/i386/tcg/seg_helper.c +++ b/target/i386/tcg/seg_helper.c @@ -1504,14 +1504,12 @@ void helper_ljmp_protected(CPUX86State *env, int ne= w_cs, target_ulong new_eip, } =20 /* real mode call */ -void helper_lcall_real(CPUX86State *env, int new_cs, target_ulong new_eip1, - int shift, int next_eip) +void helper_lcall_real(CPUX86State *env, uint32_t new_cs, uint32_t new_eip, + int shift, uint32_t next_eip) { - int new_eip; uint32_t esp, esp_mask; target_ulong ssp; =20 - new_eip =3D new_eip1; esp =3D env->regs[R_ESP]; esp_mask =3D get_sp_mask(env->segs[R_SS].flags); ssp =3D env->segs[R_SS].base; diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 367a7a335a..13577f5d7b 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -5189,7 +5189,8 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) tcg_const_tl(s->pc - s->cs_base= )); } else { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); - gen_helper_lcall_real(cpu_env, s->tmp2_i32, s->T1, + tcg_gen_trunc_tl_i32(s->tmp3_i32, s->T1); + gen_helper_lcall_real(cpu_env, s->tmp2_i32, s->tmp3_i32, tcg_const_i32(dflag - 1), tcg_const_i32(s->pc - s->cs_base)); } --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212614; cv=none; d=zohomail.com; s=zohoarc; b=Vp1tkkIdjyw+NzYgMKUV1/6Nn63AMQ7mfYMDnZwQ5GZnZFS5OT9gi/kpBr/fHKfM5xrjJwyfD7QznXL3HP3QJs6BzyosF6L3aUh8QOGwjL9aSuhEXGEXvZN8Gq6Mptf8YfLxx5DTVn8yIpyV9vmMy7dx21yrrB8Gefo0o8b+0SQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212614; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3+r7ENE17P6x6oNam3ERs0Fe6mXrQa7o5OMdmOs7Dek=; b=Hes0g5Gf+dQiQf+kQSn35aMK5UZOGf0O9a8wkyiGf5MfW6lXwI867W/YTd/bxhOsznoe6tnNqHz6J11XpxfAMSjV2H5aUYMoughap+JcodbeTQvDpHLlY45Puhj8G723N4gukU+aeei1hastKnM33hDz1gC6KKJsK9/omZWpbUc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166121261433038.1971525848345; Mon, 22 Aug 2022 16:56:54 -0700 (PDT) Received: from localhost ([::1]:56954 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHHo-00004s-1z for importer@patchew.org; Mon, 22 Aug 2022 19:56:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58820) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvZ-0006AJ-Dm for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:56 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]:43617) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007HH-A3 for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:53 -0400 Received: by mail-pj1-x1032.google.com with SMTP id o5-20020a17090a3d4500b001ef76490983so12927440pjf.2 for ; Mon, 22 Aug 2022 16:33:39 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=3+r7ENE17P6x6oNam3ERs0Fe6mXrQa7o5OMdmOs7Dek=; b=Za7FP29lBafCOlDjwBQmXdek551ji38LS2eYLls+IJYY9IB/dB6BGEeNx9KQr/JYtH 2649HJClQra9ahfmgeJUsA9MemEdW7DBdzHxVjls/shisQi2MVhYou8X8EpCgC+kHYSy dCIxInUpWatjwKxPOxyv52L3aXzHAzBrVCoMwopMYVUKq50pGfeTuByOc7z9SZ/tA4L9 acpO11b/BlkMSZGb4KBpB9oYlGx/r8LMr8wrB2tkf+1LLre/iL4OOEH83rCM9cb8zRK1 TsYZ0sbBYMFSEHnNEklBdyaSKGM5cNh0gQ66j4ngS8MxUR4HvTIgQ6yOx1B+B7Md8Ec1 oohA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=3+r7ENE17P6x6oNam3ERs0Fe6mXrQa7o5OMdmOs7Dek=; b=rNbVaO88O4whby1lyfJMCTvgIyoTpxDEmElg6HG1Bx2WZQjgP1fBcNf53jjVZc5toq ZuZJu0Vv68sXPO+4UmkX9e4MlsDJLp5fzjW7KFrAeKhfV6dJmL3CNe9xvuoLomh+KVI6 aEdXxJbwWTzQIH6Mb35oOGMaKNFXlUh9Wx+9oT+2JU/4SBerFHsg+3aALHVq1PXlqkfH oApXFbXynN+NxouU1rjVmjzjDBD+T62ha5C8qjFBRbBH/HGYTN+XZ5x4CdTc5f+zWc2T k5sX6E7MMDh5JSqvsghxdyVuTNI48anyJWlETtFLTIacQgfmgOunNvW2IQfuoy7ZPVPF m1LQ== X-Gm-Message-State: ACgBeo13mZ2g2Jtv9oU3HKJ3UD/fkiDwSvju3Z3FchQYSJFgZ5Rda6ve uf+zlmXQRcxjK1ZnpW2wDggZr4BQwE2CCA== X-Google-Smtp-Source: AA6agR76xHYeZJ/tD037P0i6dzS67rSPNZyxYBtEn79AUI2YNrU+YFV5DNlp+om+M/pxOT2opwRo5g== X-Received: by 2002:a17:902:e5c2:b0:172:f66b:c760 with SMTP id u2-20020a170902e5c200b00172f66bc760mr3857629plf.92.1661211218939; Mon, 22 Aug 2022 16:33:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 14/22] target/i386: Create eip_next_* Date: Mon, 22 Aug 2022 16:33:10 -0700 Message-Id: <20220822233318.1728621-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212614959100001 Content-Type: text/plain; charset="utf-8" Create helpers for loading the address of the next insn. Use tcg_constant_* in adjacent code where convenient. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 44 +++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 13577f5d7b..47d6cd2fce 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -541,6 +541,16 @@ static TCGv_i32 cur_insn_len_i32(DisasContext *s) return tcg_constant_i32(cur_insn_len(s)); } =20 +static TCGv_i32 eip_next_i32(DisasContext *s) +{ + return tcg_constant_i32(s->pc - s->cs_base); +} + +static TCGv eip_next_tl(DisasContext *s) +{ + return tcg_constant_tl(s->pc - s->cs_base); +} + /* Compute SEG:REG into A0. SEG is selected from the override segment (OVR_SEG) and the default segment (DEF_SEG). OVR_SEG may be -1 to indicate no override. */ @@ -1213,12 +1223,9 @@ static void gen_bpt_io(DisasContext *s, TCGv_i32 t_p= ort, int ot) /* user-mode cpu should not be in IOBPT mode */ g_assert_not_reached(); #else - TCGv_i32 t_size =3D tcg_const_i32(1 << ot); - TCGv t_next =3D tcg_const_tl(s->pc - s->cs_base); - + TCGv_i32 t_size =3D tcg_constant_i32(1 << ot); + TCGv t_next =3D eip_next_tl(s); gen_helper_bpt_io(cpu_env, t_port, t_size, t_next); - tcg_temp_free_i32(t_size); - tcg_temp_free(t_next); #endif /* CONFIG_USER_ONLY */ } } @@ -5167,9 +5174,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) if (dflag =3D=3D MO_16) { tcg_gen_ext16u_tl(s->T0, s->T0); } - next_eip =3D s->pc - s->cs_base; - tcg_gen_movi_tl(s->T1, next_eip); - gen_push_v(s, s->T1); + gen_push_v(s, eip_next_tl(s)); gen_op_jmp_v(s->T0); gen_bnd_jmp(s); s->base.is_jmp =3D DISAS_JUMP; @@ -5185,14 +5190,14 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) if (PE(s) && !VM86(s)) { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_lcall_protected(cpu_env, s->tmp2_i32, s->T1, - tcg_const_i32(dflag - 1), - tcg_const_tl(s->pc - s->cs_base= )); + tcg_constant_i32(dflag - 1), + eip_next_tl(s)); } else { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); tcg_gen_trunc_tl_i32(s->tmp3_i32, s->T1); gen_helper_lcall_real(cpu_env, s->tmp2_i32, s->tmp3_i32, - tcg_const_i32(dflag - 1), - tcg_const_i32(s->pc - s->cs_base)); + tcg_constant_i32(dflag - 1), + eip_next_i32(s)); } s->base.is_jmp =3D DISAS_JUMP; break; @@ -5215,7 +5220,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) if (PE(s) && !VM86(s)) { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_ljmp_protected(cpu_env, s->tmp2_i32, s->T1, - tcg_const_tl(s->pc - s->cs_base)= ); + eip_next_tl(s)); } else { gen_op_movl_seg_T0_vm(s, R_CS); gen_op_jmp_v(s->T1); @@ -6706,8 +6711,8 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) } gen_helper_iret_real(cpu_env, tcg_const_i32(dflag - 1)); } else { - gen_helper_iret_protected(cpu_env, tcg_const_i32(dflag - 1), - tcg_const_i32(s->pc - s->cs_base)); + gen_helper_iret_protected(cpu_env, tcg_constant_i32(dflag - 1), + eip_next_i32(s)); } set_cc_op(s, CC_OP_EFLAGS); s->base.is_jmp =3D DISAS_EOB_ONLY; @@ -6719,15 +6724,13 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } else { tval =3D (int16_t)insn_get(env, s, MO_16); } - next_eip =3D s->pc - s->cs_base; - tval +=3D next_eip; + tval +=3D s->pc - s->cs_base; if (dflag =3D=3D MO_16) { tval &=3D 0xffff; } else if (!CODE64(s)) { tval &=3D 0xffffffff; } - tcg_gen_movi_tl(s->T0, next_eip); - gen_push_v(s, s->T0); + gen_push_v(s, eip_next_tl(s)); gen_bnd_jmp(s); gen_jmp(s, tval); } @@ -7261,8 +7264,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) TCGLabel *l1, *l2, *l3; =20 tval =3D (int8_t)insn_get(env, s, MO_8); - next_eip =3D s->pc - s->cs_base; - tval +=3D next_eip; + tval +=3D s->pc - s->cs_base; if (dflag =3D=3D MO_16) { tval &=3D 0xffff; } --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212746; cv=none; d=zohomail.com; s=zohoarc; b=ey2Yb/23yz7IFbqHYRUGGplLmkE3qwMknG4PT+ensY7K+Ay9Ql3PexbJmWEuRiAUgZt0pRPa1kRBNK3h1820/F2HRZxmGBmo0+2X8Vvu64ny1JTKcKeFbcnZAG4Bic+K7sFmexqNS9ZTMQrXX6gIiG2+t5teYN3AuTcvxHR9GQQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212746; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3g0L0mSk6Sn1c+VmjW7Vt89UONp5whGx/8SFykv65y4=; b=g54joJnuCVVz6wUbRlRysaZXIMZuNltyAWFB8Rhvq/nFz8g9eOiz/5C/MnvLJZJFov/bsI7KoeKrLOmd5sEuD8Wp3+UeI61QHZn/5C29uBjtMKe4J4IsJsboMPVdi482LfFbCh+7lQZcmf89dTpXP2ZBGknWPHJP+c+/QivWSq0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212746554660.5388556511358; Mon, 22 Aug 2022 16:59:06 -0700 (PDT) Received: from localhost ([::1]:54648 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHJw-0005DP-Fu for importer@patchew.org; Mon, 22 Aug 2022 19:59:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58810) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvY-0006AA-3X for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:55 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]:40530) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007HL-7b for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:51 -0400 Received: by mail-pl1-x62c.google.com with SMTP id x23so11300852pll.7 for ; Mon, 22 Aug 2022 16:33:40 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=3g0L0mSk6Sn1c+VmjW7Vt89UONp5whGx/8SFykv65y4=; b=ytmCgEYrUlOrJjclEE2deiT6I5G4AFjJoGJbtk7D5B1tHrz1RewQDIyW0apx2yXUu6 HLjBVN2hzJLDQ1cRMKhSW/zU1MBw0+noq0CTWJADS5VMcKJGt5ZKGzn/Cj8V1CPd7EYi Ww3UcDqwkd7Ycb1UB6bQbC+lrhaCpY062+IGGRBdp4lG0w/Q7Wv9/hzpJUSgAmcdhl2n Ko3GRE8ptfpHdahGGLzyxDxRM6A7DLqSeFxh4pvdTXj0W08Tzd0L9WkRmQqDRwXSoW3N yPNi5XbMNkseAPBeT9F5gDjUJMt7G4yyxfT0oQyFJhlGWRhRuQdFnx80J1hHM6SsH48X llrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=3g0L0mSk6Sn1c+VmjW7Vt89UONp5whGx/8SFykv65y4=; b=nm+qYtQPeJkanu3c1j7g0SKAZ9nQTLIjiH+Ezk3AcZi3zhKIYEgsUw/pMJ6GzspLpQ qz2E0952eEgpUtNgeBhEYzpzicBvAPKjDAdZ+BrI+9Rb0G2uV182Bp0dFytRfWN19HZK h95E6LU/cihWldRgp7TUYIm3N04r/4GkI4n7AV7XgXL+YiyVwV5MUizT7WxRsHueeghu Xog7RfDZbGK6d6BWK5f+uuoN2Bxsc8HeOYdxDuezWYLhss2RHhjgSNaz9Ka2eubq7qpJ B7Z6bubxfz1bOfsTMWGe/ssCKCZaRcAFl3Pg78SAfW2KB3ERo2Hz79lHuPjqVEuSCvN4 DucQ== X-Gm-Message-State: ACgBeo1b1VXcS2oHxU6O7pFnImnXl+76zG9yFXJ+7vHrtlJm/FATgTON byn8EckbC4V6PnfuMiAFXR1wsKmThIavKw== X-Google-Smtp-Source: AA6agR6/yxqPOq8awGcCzsq4W39bd2IXpMJhWbg5AJ/T1qW6CpWYj8FGv3DeTVYhhdOEixxH3R1Ryw== X-Received: by 2002:a17:902:6b42:b0:172:ed37:bc55 with SMTP id g2-20020a1709026b4200b00172ed37bc55mr6363456plt.33.1661211219837; Mon, 22 Aug 2022 16:33:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 15/22] target/i386: Use DISAS_TOO_MANY to exit after gen_io_start Date: Mon, 22 Aug 2022 16:33:11 -0700 Message-Id: <20220822233318.1728621-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212747679100001 Content-Type: text/plain; charset="utf-8" We can set is_jmp early, using only one if, and let that be overwritten by gen_repz_* etc. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 42 +++++++++---------------------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 47d6cd2fce..cacd52c50f 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -5492,14 +5492,12 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } gen_helper_rdrand(s->T0, cpu_env); rm =3D (modrm & 7) | REX_B(s); gen_op_mov_reg_v(s, dflag, rm, s->T0); set_cc_op(s, CC_OP_EFLAGS); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } break; =20 default: @@ -6545,15 +6543,12 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_ins(s, ot); - /* jump generated by gen_repz_ins */ } else { gen_ins(s, ot); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } } break; case 0x6e: /* outsS */ @@ -6566,15 +6561,12 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_outs(s, ot); - /* jump generated by gen_repz_outs */ } else { gen_outs(s, ot); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } } break; =20 @@ -6591,13 +6583,11 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } gen_helper_in_func(ot, s->T1, s->tmp2_i32); gen_op_mov_reg_v(s, ot, R_EAX, s->T1); gen_bpt_io(s, s->tmp2_i32, ot); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } break; case 0xe6: case 0xe7: @@ -6609,14 +6599,12 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } gen_op_mov_v_reg(s, ot, s->T1, R_EAX); tcg_gen_trunc_tl_i32(s->tmp3_i32, s->T1); gen_helper_out_func(ot, s->tmp2_i32, s->tmp3_i32); gen_bpt_io(s, s->tmp2_i32, ot); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } break; case 0xec: case 0xed: @@ -6628,13 +6616,11 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } gen_helper_in_func(ot, s->T1, s->tmp2_i32); gen_op_mov_reg_v(s, ot, R_EAX, s->T1); gen_bpt_io(s, s->tmp2_i32, ot); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } break; case 0xee: case 0xef: @@ -6646,14 +6632,12 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } gen_op_mov_v_reg(s, ot, s->T1, R_EAX); tcg_gen_trunc_tl_i32(s->tmp3_i32, s->T1); gen_helper_out_func(ot, s->tmp2_i32, s->tmp3_i32); gen_bpt_io(s, s->tmp2_i32, ot); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } break; =20 /************************/ @@ -7319,11 +7303,9 @@ static bool disas_insn(DisasContext *s, CPUState *cp= u) gen_update_eip_cur(s); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } gen_helper_rdtsc(cpu_env); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } break; case 0x133: /* rdpmc */ gen_update_cc_op(s); @@ -7780,11 +7762,9 @@ static bool disas_insn(DisasContext *s, CPUState *cp= u) gen_update_eip_cur(s); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } gen_helper_rdtscp(cpu_env); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } break; =20 default: @@ -8148,6 +8128,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) =20 if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); + s->base.is_jmp =3D DISAS_TOO_MANY; } if (b & 2) { gen_svm_check_intercept(s, SVM_EXIT_WRITE_CR0 + reg); @@ -8158,9 +8139,6 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) gen_svm_check_intercept(s, SVM_EXIT_READ_CR0 + reg); gen_helper_read_crN(s->T0, cpu_env, tcg_constant_i32(reg)); gen_op_mov_reg_v(s, ot, rm, s->T0); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_jmp(s, s->pc - s->cs_base); - } } break; =20 --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212798; cv=none; d=zohomail.com; s=zohoarc; b=LTcIh8x5zbkYJ/T+Oth4RzTvfoj6phbDdpSuINFvljrs0hZhsZTE6HmmejGsDvM2VGo/mgFnrrG8wEwhqltbUe+rfKiE7vk8dIT86LcOA7uPgIbT9YYXq3do3ub+qJ9Gjw24DJ5Jugsoogp9ltpvkk4+TLiwhHscOsumWGD3cMk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212798; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EZyND4NGeoU1eMvAx2PNVOo/qLZXAFJyhVnn9sXD44Q=; b=kvmJGOZAbSVT3kvlOPJ3LDpOITYjTPNzpidOiYZqW/N1sqF8PrpwMk4e6TiQO4mF/DyUy4XVBCYAKk6QCxB4EJdcn+PpS8WpOCyEMguvMMxO0fOcElECv9z5zEbvA99jPCHO5wsSzsS6YebpNqlWkiKYVfo9upqdg9delfC1AyM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212798873162.4230182323214; Mon, 22 Aug 2022 16:59:58 -0700 (PDT) Received: from localhost ([::1]:38804 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHKn-0007A3-QY for importer@patchew.org; Mon, 22 Aug 2022 19:59:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58814) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvZ-0006AG-5m for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:56 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]:35418) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007HS-80 for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:52 -0400 Received: by mail-pl1-x631.google.com with SMTP id y4so11315568plb.2 for ; Mon, 22 Aug 2022 16:33:41 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=EZyND4NGeoU1eMvAx2PNVOo/qLZXAFJyhVnn9sXD44Q=; b=i9n0X2K5lB2HZxUdQ9lZb6/1QliTF84Rlec3KVda6/IlqPpp3cjt52S8482CbMb9Z5 FqvV/l9XKf1tZaXL4tUqt+V4mvrsk1IlT6eRkP+p3E/sfHaNdipVctzoW8QFbTjClpJH cdH0TFtscOee1a1S6nT3oawH9RH8e3DBVd7Xa7Xif3yBfkWz+6HYgllpcz0vkvqrfScb Zqw2zIesabaLE8csKSm+L4FfvdQkWeOejsDMhv2vAX5CzikLTq9YDAeBWNsXa2/DLsLH F2brMZ193O/qzOwHNTjmh0AszmvOkMnsAPuatYOig8XAIagMQ2Tuf9ZqS0MdPBLf/MOX iAZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=EZyND4NGeoU1eMvAx2PNVOo/qLZXAFJyhVnn9sXD44Q=; b=V6NtU+dobzLWPDu7JxeH3RLiLUbmBLgwwPcoL37qvFOgBr4j9Di82fJ5koNiX7t35q fL3J1F/P4JPGOL3WN4GNmP6bstpAxX7DGZUVBS05R7pKag0ypAu6wTenX81qtLL4f5nc D53tKe2txDqkBtdcbgPC6l3bi3SSHN0kyYfqckdUPxH4+SCb25kdDOoDiePK/RvnMFNI WyCLLE5BA/ufCkMEv8FwHVdkK8AMDEQWCiCdg8krDzC4CrFV2dCq5ONQbyy8/m5NRKcF zbRsDjHiSvIZ9QUgD8Jrnp6nbotNp3jL5Vtb/ukXO+dogGo060oNulF0Zpb67/gxVMxS 7N/A== X-Gm-Message-State: ACgBeo11ANKQREK+JHXc2EhCUGXFWOvwIG05wPnlB2rurlNTS14pqgH1 rB/irNkBjVodtlexIcdjjQxhhZ1/2YIr0Q== X-Google-Smtp-Source: AA6agR7J64dZxzmj3z7ILVC3JP6gruEi6SBlDNUgxW64HoGfXorIbii0WiBeO56zWgaodxQ0/HVjug== X-Received: by 2002:a17:902:f083:b0:172:9128:c70d with SMTP id p3-20020a170902f08300b001729128c70dmr21929353pla.145.1661211220963; Mon, 22 Aug 2022 16:33:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 16/22] target/i386: Create gen_jmp_rel Date: Mon, 22 Aug 2022 16:33:12 -0700 Message-Id: <20220822233318.1728621-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212799798100001 Content-Type: text/plain; charset="utf-8" Create a common helper for pc-relative branches. The jmp jb insn was missing a mask for CODE32. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 57 ++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index cacd52c50f..0a2ec85972 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -226,6 +226,7 @@ static void gen_eob(DisasContext *s); static void gen_jr(DisasContext *s); static void gen_jmp(DisasContext *s, target_ulong eip); static void gen_jmp_tb(DisasContext *s, target_ulong eip, int tb_num); +static void gen_jmp_rel(DisasContext *s, MemOp ot, int diff, int tb_num); static void gen_op(DisasContext *s1, int op, MemOp ot, int d); static void gen_exception_gpf(DisasContext *s); =20 @@ -1173,7 +1174,7 @@ static TCGLabel *gen_jz_ecx_string(DisasContext *s) TCGLabel *l2 =3D gen_new_label(); gen_op_jnz_ecx(s, s->aflag, l1); gen_set_label(l2); - gen_jmp_tb(s, s->pc - s->cs_base, 1); + gen_jmp_rel(s, MO_32, 0, 1); gen_set_label(l1); return l2; } @@ -2756,6 +2757,18 @@ static void gen_jmp_tb(DisasContext *s, target_ulong= eip, int tb_num) } } =20 +static void gen_jmp_rel(DisasContext *s, MemOp ot, int diff, int tb_num) +{ + target_ulong dest =3D s->pc - s->cs_base + diff; + + if (ot =3D=3D MO_16) { + dest &=3D 0xffff; + } else if (!CODE64(s)) { + dest &=3D 0xffffffff; + } + gen_jmp_tb(s, dest, tb_num); +} + static void gen_jmp(DisasContext *s, target_ulong eip) { gen_jmp_tb(s, eip, 0); @@ -6703,20 +6716,12 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) break; case 0xe8: /* call im */ { - if (dflag !=3D MO_16) { - tval =3D (int32_t)insn_get(env, s, MO_32); - } else { - tval =3D (int16_t)insn_get(env, s, MO_16); - } - tval +=3D s->pc - s->cs_base; - if (dflag =3D=3D MO_16) { - tval &=3D 0xffff; - } else if (!CODE64(s)) { - tval &=3D 0xffffffff; - } + int diff =3D (dflag !=3D MO_16 + ? (int32_t)insn_get(env, s, MO_32) + : (int16_t)insn_get(env, s, MO_16)); gen_push_v(s, eip_next_tl(s)); gen_bnd_jmp(s); - gen_jmp(s, tval); + gen_jmp_rel(s, dflag, diff, 0); } break; case 0x9a: /* lcall im */ @@ -6734,19 +6739,13 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } goto do_lcall; case 0xe9: /* jmp im */ - if (dflag !=3D MO_16) { - tval =3D (int32_t)insn_get(env, s, MO_32); - } else { - tval =3D (int16_t)insn_get(env, s, MO_16); + { + int diff =3D (dflag !=3D MO_16 + ? (int32_t)insn_get(env, s, MO_32) + : (int16_t)insn_get(env, s, MO_16)); + gen_bnd_jmp(s); + gen_jmp_rel(s, dflag, diff, 0); } - tval +=3D s->pc - s->cs_base; - if (dflag =3D=3D MO_16) { - tval &=3D 0xffff; - } else if (!CODE64(s)) { - tval &=3D 0xffffffff; - } - gen_bnd_jmp(s); - gen_jmp(s, tval); break; case 0xea: /* ljmp im */ { @@ -6763,12 +6762,10 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } goto do_ljmp; case 0xeb: /* jmp Jb */ - tval =3D (int8_t)insn_get(env, s, MO_8); - tval +=3D s->pc - s->cs_base; - if (dflag =3D=3D MO_16) { - tval &=3D 0xffff; + { + int diff =3D (int8_t)insn_get(env, s, MO_8); + gen_jmp_rel(s, dflag, diff, 0); } - gen_jmp(s, tval); break; case 0x70 ... 0x7f: /* jcc Jb */ tval =3D (int8_t)insn_get(env, s, MO_8); --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661213319; cv=none; d=zohomail.com; s=zohoarc; b=nJAXff2eZm33Dnw+EEUUtTsicHHTYw9dFTAxXlpFO9HabWZ9TU80USpMaw+zHgpqNe8dyDWGxGTXZrxKK4GTW0z3Pn7IHubSnhin1mK/OS0m6cjhNfTSMle1BOVXITnUF/SLjLJcUs2uarQOetkvXkNg1IZ0G5sqhpJP1aD3aLs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661213319; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jF8bW2hxoYDJVrtP30w9zGlMhhg9saC7gHcaAbgRXww=; b=C0Kb7Z7lr6eHidskIbk5vXL+Q8p38iFgmpiXChUM7+AHaVuYmsJrUdLTf9/NPbRST5Uqa5UxSJoyLsK3oRIq1eozEtKWVFZnnkYcqCG2ksg4dU914lyASCM3mgJYYQZ/IQhjVR5guwvz2ArtxGtrUGt0o1S9R4QMLWdGaQEsYqA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661213319841833.909067037358; Mon, 22 Aug 2022 17:08:39 -0700 (PDT) Received: from localhost ([::1]:34836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHTB-0000HG-RU for importer@patchew.org; Mon, 22 Aug 2022 20:08:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58812) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvZ-0006AF-2m for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:56 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]:46075) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007HX-8h for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:52 -0400 Received: by mail-pl1-x62c.google.com with SMTP id u22so11293485plq.12 for ; Mon, 22 Aug 2022 16:33:43 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=jF8bW2hxoYDJVrtP30w9zGlMhhg9saC7gHcaAbgRXww=; b=F09LuDWPN5WbOOxj7uB84B+JXsxH+ZKODwjR8NtzTro1G5kl3kIy4TZscr+kA8m4fp y1Pn/nu6BqDXT8ueeadyM6bJxHdQ5FhPQZ2XXGj+vLve0+eRL6xxqmndU0JqZOGb5Icl r7gxaIlToR2dypbFrZPB+2nKxI2AeaFSP99eyLTuP0MRYoWMqcOwQMKBgl5WYTKWiO4G nuMaDZDC9xQOGTPSH+CLZrKwj2nMvjLp7LlOSs/9sREUD3rwGI3XNIR+gwwI5Ab4S4Mg sgujslZXJ9V6WQaTILuWKJ0IVAlPauu+EKl7bzokIIa/u3tsSsAxwUSRpe5vmPUSwUgO 8A4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=jF8bW2hxoYDJVrtP30w9zGlMhhg9saC7gHcaAbgRXww=; b=LSq3R1IHmXsRgnT7B2+zmVEkgSGODLiFE1/MRaxm0Eb0HsW5nWaFj3eAZ68HIUvND4 pv5Wu3FOmqGRIIuKplAmK6PnVAbVYKQDTW0T4sasMuhAdDiAgjcXKCmesO6lMcj9Yj5E oPXluqQc3pm2wcX6IVlGECiwgQWIdzzuACgGRLMKCrbc7/3LfXkH2oqxv+gGA7P//YkS 24+CNGgjBrvL6wMTq3dJACtTwCVV6sCVN82xjFLqjkaW+MaGBZgGldoCV65EQnx5MQOz UQxMfYPj6Z4vS9udj7jjgY4yYGiYsaUEeeMRljouyAv4nvc8qu5B1mfgs/L/0tDFww7l hT9A== X-Gm-Message-State: ACgBeo32r8o8VEoA9GIOL2HuBFf4Mk5pattsxkPT8ltPJrnsNEXeOqhk Ty4i0faQu6KnJG+/Gj9Qi7AaI+lOnhmE9Q== X-Google-Smtp-Source: AA6agR7SS+u522yo2Rp4Rhz94t8teVLxS5hBTzlVTfN7NbJFY63R3vWyytm+9GOS0jW3DYyM0dlzrA== X-Received: by 2002:a17:902:b090:b0:172:dacb:5732 with SMTP id p16-20020a170902b09000b00172dacb5732mr10862843plr.5.1661211223044; Mon, 22 Aug 2022 16:33:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 17/22] target/i386: Use gen_jmp_rel for loop and jecxz insns Date: Mon, 22 Aug 2022 16:33:13 -0700 Message-Id: <20220822233318.1728621-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661213320601100001 Content-Type: text/plain; charset="utf-8" With gen_jmp_rel, we may chain to the next tb instead of merely writing to eip and exiting. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 0a2ec85972..59e7596629 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -7242,24 +7242,18 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) case 0xe2: /* loop */ case 0xe3: /* jecxz */ { - TCGLabel *l1, *l2, *l3; - - tval =3D (int8_t)insn_get(env, s, MO_8); - tval +=3D s->pc - s->cs_base; - if (dflag =3D=3D MO_16) { - tval &=3D 0xffff; - } + TCGLabel *l1, *l2; + int diff =3D (int8_t)insn_get(env, s, MO_8); =20 l1 =3D gen_new_label(); l2 =3D gen_new_label(); - l3 =3D gen_new_label(); gen_update_cc_op(s); b &=3D 3; switch(b) { case 0: /* loopnz */ case 1: /* loopz */ gen_op_add_reg_im(s, s->aflag, R_ECX, -1); - gen_op_jz_ecx(s, s->aflag, l3); + gen_op_jz_ecx(s, s->aflag, l2); gen_jcc1(s, (JCC_Z << 1) | (b ^ 1), l1); break; case 2: /* loop */ @@ -7272,14 +7266,11 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) break; } =20 - gen_set_label(l3); - gen_update_eip_next(s); - tcg_gen_br(l2); + gen_set_label(l2); + gen_jmp_rel(s, MO_32, 0, 1); =20 gen_set_label(l1); - gen_jmp_im(s, tval); - gen_set_label(l2); - s->base.is_jmp =3D DISAS_EOB_ONLY; + gen_jmp_rel(s, dflag, diff, 0); } break; case 0x130: /* wrmsr */ --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212302; cv=none; d=zohomail.com; s=zohoarc; b=TyuW5iI9rJBCZqn3B95HkFUDqDZ+8mD6frGXVD4JUPgwmALXTnIJuIUVn6VaswWpPiqAasmUvhQcnxvsh+t7P7YhbkFZpk7NYUDD3pwqC5n0706EABlipUobpakzFP8+d+MNY3/nDsuud1yPDF3IDjMsZFLVXv85r2GCzo89eWI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212302; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=wlQ7TubdU07QaJgJNanX9RFDjUgVlHllrag0UgF/OJg=; b=UtNJLyan0VeTpaUXQQpeTyDocefkRSfXvf6pJ5sLXGiyjl5q17bJaZOEi/OhP/lQ+DmDvpvLrvKsJrnb7YvXZLDyQ7SCgWnggYXGw+MpSkibl/KbtO/in3hhKnq8vfO2MnJK5XAGMtg29IvGLS6DzgfdArBniIsXlXi+SL/RccI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212302094444.225461342685; Mon, 22 Aug 2022 16:51:42 -0700 (PDT) Received: from localhost ([::1]:44208 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHCm-0005NO-Sz for importer@patchew.org; Mon, 22 Aug 2022 19:51:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58822) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGva-0006AL-DP for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:56 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]:41946) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007Hb-AC for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:54 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 202so10764579pgc.8 for ; Mon, 22 Aug 2022 16:33:45 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=wlQ7TubdU07QaJgJNanX9RFDjUgVlHllrag0UgF/OJg=; b=bi0LjhkGM7/SS28IJmPhcj5jJF2e/oI9QPsH4NtUHxsvts1p2jymigNNvyU8Xuqe96 8VR8ViscbNMu9Fjb5BEty6k1QO7hjrrQksFOUWiVc9w5XzlqtIxcGqT5noA2GFRdbtCs p4F0UENNQIoJsrR8xq2J+JIJ1O0eN1vFoRjCYFf5qLp+0hVwxy2GuOf3Mv2CFRGmZt+r cr19ewewMqlP6AjW2pGV1SJNYd9l9it54QChD/N5Ih1tRi7R5r4EPDN7bBvE1EURvlJT bT3FwVHVTYwLa7IvH/IuoiYwzjapnf8+7ageKA5+zwb8uTUx+fT5nk20k9lC2RumDkfM 6JOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=wlQ7TubdU07QaJgJNanX9RFDjUgVlHllrag0UgF/OJg=; b=a3lYuNfnAzEzvGaQhoRfYqGStn+O4RU/Snw0q/5l5cjoNUKYLoCnhf48jpQhX9Txk6 TYp+ku9v1Md0ar8JFLRIkFtcDfAKHbgbojj9X6OPYZ60vjzzAEAkWMOxMB3QCSsqg3+I Ysbs/5v7viFKeRTOarzvI3ZXp/UEJgup5EvHZpMhXYIhXXrD+C+WxQUhl88rcwC9seXV Kz3hNFJUoImIXJcZ/xHQ3JayVUj7C1pZVLGmhrQ8VBfmFAB5zzRfDVGDGhgFrrw2/y1K R/1qIy3rsT0BsbasFZdbf9eN/XT73jFg5bfBOILZpznD7n1AlJdEzXqY2I7GxiKcwUFi OJaA== X-Gm-Message-State: ACgBeo1ybmEQfY4zV73dUzSJ3M4SbsLRFcX8fZOJVOUfj/Br3I5PUYjX 7SoGq2dVWtRQmnqCz/Xcwh6ePPECo0Uh6g== X-Google-Smtp-Source: AA6agR5c2aqo7X9HT3/ku754vRGX01nwXrsvKrxKz8wMqPAHx3R4X3UtHP0CnnaCRsFx9Fis7f4Q1g== X-Received: by 2002:a05:6a00:15c4:b0:536:ed66:bb9d with SMTP id o4-20020a056a0015c400b00536ed66bb9dmr1896667pfu.75.1661211224413; Mon, 22 Aug 2022 16:33:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 18/22] target/i386: Use gen_jmp_rel for gen_jcc Date: Mon, 22 Aug 2022 16:33:14 -0700 Message-Id: <20220822233318.1728621-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212303600100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 57 ++++++++++++------------------------- 1 file changed, 18 insertions(+), 39 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 59e7596629..6d6c751c10 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2373,32 +2373,14 @@ static void gen_goto_tb(DisasContext *s, int tb_num= , target_ulong eip) } } =20 -static inline void gen_jcc(DisasContext *s, int b, - target_ulong val, target_ulong next_eip) +static void gen_jcc(DisasContext *s, MemOp ot, int b, int diff) { - TCGLabel *l1, *l2; + TCGLabel *l1 =3D gen_new_label(); =20 - if (s->jmp_opt) { - l1 =3D gen_new_label(); - gen_jcc1(s, b, l1); - - gen_goto_tb(s, 0, next_eip); - - gen_set_label(l1); - gen_goto_tb(s, 1, val); - } else { - l1 =3D gen_new_label(); - l2 =3D gen_new_label(); - gen_jcc1(s, b, l1); - - gen_jmp_im(s, next_eip); - tcg_gen_br(l2); - - gen_set_label(l1); - gen_jmp_im(s, val); - gen_set_label(l2); - gen_eob(s); - } + gen_jcc1(s, b, l1); + gen_jmp_rel(s, ot, 0, 1); + gen_set_label(l1); + gen_jmp_rel(s, ot, diff, 0); } =20 static void gen_cmovcc1(CPUX86State *env, DisasContext *s, MemOp ot, int b, @@ -4608,7 +4590,6 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) int shift; MemOp ot, aflag, dflag; int modrm, reg, rm, mod, op, opreg, val; - target_ulong next_eip, tval; bool orig_cc_op_dirty =3D s->cc_op_dirty; CCOp orig_cc_op =3D s->cc_op; =20 @@ -6768,22 +6749,20 @@ static bool disas_insn(DisasContext *s, CPUState *c= pu) } break; case 0x70 ... 0x7f: /* jcc Jb */ - tval =3D (int8_t)insn_get(env, s, MO_8); - goto do_jcc; + { + int diff =3D (int8_t)insn_get(env, s, MO_8); + gen_bnd_jmp(s); + gen_jcc(s, dflag, b, diff); + } + break; case 0x180 ... 0x18f: /* jcc Jv */ - if (dflag !=3D MO_16) { - tval =3D (int32_t)insn_get(env, s, MO_32); - } else { - tval =3D (int16_t)insn_get(env, s, MO_16); + { + int diff =3D (dflag !=3D MO_16 + ? (int32_t)insn_get(env, s, MO_32) + : (int16_t)insn_get(env, s, MO_16)); + gen_bnd_jmp(s); + gen_jcc(s, dflag, b, diff); } - do_jcc: - next_eip =3D s->pc - s->cs_base; - tval +=3D next_eip; - if (dflag =3D=3D MO_16) { - tval &=3D 0xffff; - } - gen_bnd_jmp(s); - gen_jcc(s, b, tval, next_eip); break; =20 case 0x190 ... 0x19f: /* setcc Gv */ --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661213006; cv=none; d=zohomail.com; s=zohoarc; b=VbPgsz8gmPpphjXm5vUmfMOISCqHkpHE6bi6BdeB1ANy6hsiyQvnELtLHPBR8xaKfS3oWIUecXU8kWhFO2i6gZykcjTP5afAPeiWA926/eT4eXK5D3oSyPuDAinLNJLyQT83yu1pE+gQbZkniNWlmKu7Po0XEDthwWDr7CeB3Vc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661213006; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=cs9G+21OdHQdLobnzvJt7VPWHa06hM37G+iQ/J7TZ4Y=; b=JvdGdi4GXmexxwal6rHPjdMI9fxVSTE6xCgvjDFk65lzyAxkZDlz2T5PsuPo2NpQ8nPqcwE2Aj7dThsnn9gVos3cdCse7X4iJ7fg4HCN0oew48zgk7IMJhj0HLDOg7h9G192oIUsWux3CjulO1A/kTzyLrqMWO5Njx4NJvET9V4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661213006784287.42827976246303; Mon, 22 Aug 2022 17:03:26 -0700 (PDT) Received: from localhost ([::1]:41050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHO9-0002xl-81 for importer@patchew.org; Mon, 22 Aug 2022 20:03:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58818) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvZ-0006AI-6h for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:56 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]:40932) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007FY-9u for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:52 -0400 Received: by mail-pf1-x436.google.com with SMTP id y141so11832834pfb.7 for ; Mon, 22 Aug 2022 16:33:45 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=cs9G+21OdHQdLobnzvJt7VPWHa06hM37G+iQ/J7TZ4Y=; b=p6j0dpO8Jcr0jWfqc1LCZCxge97eUR6eVbEnM4r1V+OmzxVc/FLlke/+jPM+0iP+nb lzBeuh82hlWbfztqxNO1RfslzHDkmTVDFRoobbrcS1SBmZ4Ka578mZLtSqThUXAS9Sol 5E0BeUM91dryKPtlDKM/BW1txu2/o639xQn3jh3L/l7EiaUxnj/u69qpbxu0dE/tgebm 8d1sN8lxcqZCrEobfaoeSbQQE7fuOmnuXmIISLnDSjGZGdBH7nMKDnk6zfzNlxsLUOlE 2o1jplmU+Bz9/8PkHCxoMKaQgBVD+LOVJOti5jgzL86OYiEqWh1XybxZxsMMyuhUQAFb qbBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=cs9G+21OdHQdLobnzvJt7VPWHa06hM37G+iQ/J7TZ4Y=; b=CvW5/3O04ypx/Rg8CcDLLnrDMDf9IdqOeHyG+oFv6StdyXnB7sAa2VO7ESF5Kfu5xS Kr0TYJKE8cTeoLnaJEnnMw/hmN+KJE/auHQr/NmILT4GalzNgEwJsyVczRNzvUHtsuBE ZtyhrZpKAkshXWg2cE/NkHOkSAQHlU0fpu9js/vDcaiM5YioSQU0XiBDpnkIORdujqiU t2VPkSE6j7T6UawDaB5uy/uBh3NygP/oEsIfQWyAhWHkcjDfD7KO1XgcL4IkebfFlAHJ gXDAQKjxF14ZtHZ/CkiVXQY5wRlxYRswsirs364xxRON43ZCBAHjZiVCVadeMP4ZhkgN K//Q== X-Gm-Message-State: ACgBeo2MPTpYG+Ljtwl8a/N//8HyNeffGNNJBIYerm+uDzA1VBx4QF0X iaZjQHd1N5HxDt3ndYbNNQ63aPDL8Sk9Mg== X-Google-Smtp-Source: AA6agR5cMwjw7c43uTS1eCLeF5Qs6Tz80uH41H3sOi3ztRDogIryrAaaIirdfe6DEZ1650J1bplRtw== X-Received: by 2002:a05:6a00:10ca:b0:536:ec31:827c with SMTP id d10-20020a056a0010ca00b00536ec31827cmr1982664pfu.67.1661211225455; Mon, 22 Aug 2022 16:33:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 19/22] target/i386: Use gen_jmp_rel for gen_repz* Date: Mon, 22 Aug 2022 16:33:15 -0700 Message-Id: <20220822233318.1728621-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661213009976100001 Content-Type: text/plain; charset="utf-8" Subtract cur_insn_len to restart the current insn. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 6d6c751c10..67c803263b 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -224,7 +224,6 @@ STUB_HELPER(wrmsr, TCGv_env env) =20 static void gen_eob(DisasContext *s); static void gen_jr(DisasContext *s); -static void gen_jmp(DisasContext *s, target_ulong eip); static void gen_jmp_tb(DisasContext *s, target_ulong eip, int tb_num); static void gen_jmp_rel(DisasContext *s, MemOp ot, int diff, int tb_num); static void gen_op(DisasContext *s1, int op, MemOp ot, int d); @@ -1277,7 +1276,7 @@ static void gen_repz(DisasContext *s, MemOp ot, if (s->repz_opt) { gen_op_jz_ecx(s, s->aflag, l2); } - gen_jmp(s, s->base.pc_next - s->cs_base); + gen_jmp_rel(s, MO_32, -cur_insn_len(s), 0); } =20 #define GEN_REPZ(op) \ @@ -1297,7 +1296,7 @@ static void gen_repz2(DisasContext *s, MemOp ot, int = nz, if (s->repz_opt) { gen_op_jz_ecx(s, s->aflag, l2); } - gen_jmp(s, s->base.pc_next - s->cs_base); + gen_jmp_rel(s, MO_32, -cur_insn_len(s), 0); } =20 #define GEN_REPZ2(op) \ @@ -2751,11 +2750,6 @@ static void gen_jmp_rel(DisasContext *s, MemOp ot, i= nt diff, int tb_num) gen_jmp_tb(s, dest, tb_num); } =20 -static void gen_jmp(DisasContext *s, target_ulong eip) -{ - gen_jmp_tb(s, eip, 0); -} - static inline void gen_ldq_env_A0(DisasContext *s, int offset) { tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212757; cv=none; d=zohomail.com; s=zohoarc; b=Bbaxc3yi7OQcfsw/oUT0oMlRk5lYlDkvra/Mf+mA9h2G7ZXaEZzn0ijvOOE2i2/Cuuki4BoBT4Psm64Vp/Uk2UsIf6x6A2KekD2jMeocKQ7+QDYcK7M795Jy5BlOb4mqdu70cB2OLLcJPP3JF/W7EEEG8flNyeFksa6ElCZJT5Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212757; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fK7z6rYpSkLAcVSpIb1K7FULXyqRfpPeN4PMueAi39g=; b=EVzi3OOe6FHVQmJk8I4DAJnHegycNIB0UZe78e9OrCWdtWwPYbm9DJyKKLFH/QCEhNF23VKijV/HU1duH9pRO4wbeONptjRh92KOjAgcJd9YSqO5vKwTgECE2M18vsU3fEPr5v03IOIruCDlJaBvinDF5T0Y4BV92MJSacUcVvk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212757766196.11685451621736; Mon, 22 Aug 2022 16:59:17 -0700 (PDT) Received: from localhost ([::1]:36110 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHK7-0005np-L6 for importer@patchew.org; Mon, 22 Aug 2022 19:59:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58824) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvb-0006AM-LL for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:57 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:34374) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007Hh-Ab for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:54 -0400 Received: by mail-pj1-x1031.google.com with SMTP id c16-20020a17090aa61000b001fb3286d9f7so75081pjq.1 for ; Mon, 22 Aug 2022 16:33:47 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=fK7z6rYpSkLAcVSpIb1K7FULXyqRfpPeN4PMueAi39g=; b=DcoSbjrOA65xkTbZbOVsSsMcNIBulsgqjElj65vP6aTgwivgcF9G75NUxMZJqxzTq7 cBhUeWH5OVKTUhWwf9XsznbZxEZH9Su2a9Tk1JZn5ME1aGMGMVgS07VVLGu98AicKRjb 83dCXKBwEe0helwrU/pk6cra49h/KQvdieRmmnk911FXt1f+b8Na++r6p+cndqtU9rJF QYuGgfTicZQumwelYU5F8AvYVEOiFu4Dv0dR83efL1SGfb5vyxYzfwH3DTJaVsguQqFf cy9veyE0gu4P3ZrR765yC38nb2A4GHIwV210k4YKIFWtPamarvVM09YvfL13QmKwUKAK uaJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=fK7z6rYpSkLAcVSpIb1K7FULXyqRfpPeN4PMueAi39g=; b=GmU59ufEfu1dxHCr0C8i39+FewEeMIZ3d7LVP0kB9Pm3M4pSQkreN1mqfU0PyBmiI+ QKT+CwJJswKem3pCQ0Bdrdkna+r0WXNy6N+mq2DhBIKBZe9gKyYQRRMnHI9oydvQxoAn JUt4LH1xrh870smOYD3EJdQZAAyhdhzBfbDO/fTfj7RKFBkEBrU1dDo5VHlctVzoPyGN 8avccAIOji6G4xhx6DHxvUzYWr1BQTgv78IcPO/vCcWQ3PBDbYFvNjZ1fHGlPUoD+2De w7wMqI/aTvkLfMnykLsyCh4rtNb07qszUhaUtKjdtkrw2FO9mvaWw+HGnKIp0XJ+HC9S 8Bqw== X-Gm-Message-State: ACgBeo3vnEqxmykAw4IZC4fwCIUwGSVefYLsXU+INLj7NyNeHMckQd92 ZTfP/xPRYv1lTusGKljq+2GwlG62bu7SEA== X-Google-Smtp-Source: AA6agR5K3N6830tXGC1pFEvBsB1oRafAXkrE02kkmnsMtA39itSrSltnCUlTYspwTQMMZTVSEinjBQ== X-Received: by 2002:a17:90a:4e46:b0:1fb:45e2:5d86 with SMTP id t6-20020a17090a4e4600b001fb45e25d86mr636483pjl.193.1661211226482; Mon, 22 Aug 2022 16:33:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 20/22] target/i386: Use gen_jmp_rel for DISAS_TOO_MANY Date: Mon, 22 Aug 2022 16:33:16 -0700 Message-Id: <20220822233318.1728621-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212759637100001 Content-Type: text/plain; charset="utf-8" With gen_jmp_rel, we may chain between two translation blocks which may only be separated because of TB size limits. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 67c803263b..846040c1ab 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -8627,6 +8627,9 @@ static void i386_tr_tb_stop(DisasContextBase *dcbase,= CPUState *cpu) case DISAS_NORETURN: break; case DISAS_TOO_MANY: + gen_update_cc_op(dc); + gen_jmp_rel(dc, MO_32, 0, 0); + break; case DISAS_EOB_NEXT: gen_update_cc_op(dc); gen_update_eip_cur(dc); --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212444; cv=none; d=zohomail.com; s=zohoarc; b=RvBkp30IWGfv0Y389e4ImY4cl1BgySEqIKDSEwMbJ+ft+tr+BZOvITmy2laePnp/EFQ7bAFKQbOUdXzhBNx8I7S5BaALozSdM8iHA64Qby7HTDLv5om+YJtIDhscd2kxdMIjWrzEz2QVgR0YymMVrJe7H+4U/aV++IkNgej2Faw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212444; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0Ulk/EP55oycLg6EdOWobL0jk3DQ47228AWYkja4WL8=; b=DQoxdEy2GpRdrND+xtLdpF9xKaU5wAQpzQ8N+2eVjBT+InQzWnJ1Y01STmabgqK7tROemDQChEiRjiZpyQX/vqoLwjcvGEdIQKrhrtLsS0EOMYjjyHxqcu7YNI0B0upEKwxLUMS9XIK+fSZ4juZ2W5XeOHdaoxnKu+rw5x+2PwI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212444646614.4462901113864; Mon, 22 Aug 2022 16:54:04 -0700 (PDT) Received: from localhost ([::1]:40514 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHF5-00038e-Kk for importer@patchew.org; Mon, 22 Aug 2022 19:54:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33624) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvb-0006AQ-UF for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:57 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]:45916) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007Ho-BO for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:54 -0400 Received: by mail-pf1-x42c.google.com with SMTP id z187so11809861pfb.12 for ; Mon, 22 Aug 2022 16:33:48 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=0Ulk/EP55oycLg6EdOWobL0jk3DQ47228AWYkja4WL8=; b=x+axZSuX48vgaBy97vIG9f3WX8r2TV4Ce8fHtWaUYTKRzNBUStlfJl5EBKMU8ulf0e gsJlJTDr4EXLxtnLuwRBscnyOS3LpyJpWOocNzj6OlR4U5/5A92VEHY9UwNRwOwtp74L lGzSob8ozOk11tclEF56NuqUB1XIAqipRMu9lm0c6u37U00asYlXKxu/Asl62mwWHxIJ 5xVxOI0+zWgjRPx2/b1O6KMZ4ej4d+XXVr9f1iMw+lvpUb8BODyJJQP3SmNsE+eGawru CnwllD1g+PQYs9AHkHHjJYn8xQu3fYYXnKgDvfMNUDkrYOGRLpuP8zdmS0OrsHX7FUvN cXGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=0Ulk/EP55oycLg6EdOWobL0jk3DQ47228AWYkja4WL8=; b=Gef6EPUx7wPpCYzMM1jPCqyndvThaoTgpSTn3qHSQWCOR/DA22Zr/moV1DxcXyjay4 8kjZHl2/VOQdQgZtFML3kR4B6s/fRuq/0EjAW9h/fqgUmWlKTW/lnLj1osaLSzRqLs9w 7sRJeD1zl34xal+l0INXgrDsVnZrduOf7SyWKo8wIcmg4UktRIG/gr97Tav70FkTmNpv R5LZXy9c+Y3uGMl7NJkj2b1GJGgZAQOYAWMLHUTOHldKWH7C54jPgydkVMbBiMOfyBVJ T8EBJ0trP7Geo2HV5haHgGxY5xTeefjNPlNLyEcYqO1Z8Iba2za8ZA/rbrdt+DgYPJQw G1Zw== X-Gm-Message-State: ACgBeo15DBdgsWtd77K1UvHmjfuQnCNGQOWR+i3/m17/l7xhWW4Cuvr5 PDkbpt67ZPB5ro6h3TEdYjQskU4BqyXiXg== X-Google-Smtp-Source: AA6agR7WjvE2ma+mAAaQIYfqLHM937lFo/+w9c1iU8NkTFHf8hAjSJ2VX0EKCJmjoFN9jP3ZdAstqQ== X-Received: by 2002:a05:6a00:114f:b0:528:2c7a:634c with SMTP id b15-20020a056a00114f00b005282c7a634cmr22698610pfm.41.1661211227475; Mon, 22 Aug 2022 16:33:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 21/22] target/i386: Create gen_eip_cur Date: Mon, 22 Aug 2022 16:33:17 -0700 Message-Id: <20220822233318.1728621-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212446195100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 846040c1ab..6192a3e30e 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -516,6 +516,11 @@ static inline void gen_op_st_rm_T0_A0(DisasContext *s,= int idx, int d) } } =20 +static TCGv gen_eip_cur(DisasContext *s) +{ + return tcg_constant_tl(s->base.pc_next - s->cs_base); +} + static void gen_jmp_im(DisasContext *s, target_ulong pc) { gen_op_jmp_v(tcg_constant_tl(pc)); @@ -6461,7 +6466,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) offsetof(CPUX86State, segs[R_CS].selector)); tcg_gen_st16_i32(s->tmp2_i32, cpu_env, offsetof(CPUX86State, fpcs)); - tcg_gen_st_tl(tcg_constant_tl(s->base.pc_next - s->cs_base= ), + tcg_gen_st_tl(gen_eip_cur(s), cpu_env, offsetof(CPUX86State, fpip)); } } --=20 2.34.1 From nobody Mon May 13 10:50:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1661212597; cv=none; d=zohomail.com; s=zohoarc; b=dvhdxY2ny2jOc/x7ofeIRgDRmx896G7Ep5mBHdFilaOkZL28S3fKEanx8Dtx0Z/kgZ1X5KuSnnlIdt3sJharng03ffXDWlWpj+UkEJ4PLqyfzDri4ISXoVlJlBTobEPNqiJRyYwv8QM5l0kh5mIfLSjqD5ECFl26HZWTxazG7Vs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661212597; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=89w0t8uvG/Xr6P47JSYwDEJn3f8tjoXZNYNMv9BRJFI=; b=SlpH0+0zIm8tR2jR9cjlJLxp9RSiyfeQd1tpd1PPToFQ3jse/Gp4SW/qjr1D08nkXIIvOUGxCODUtaVWg+tdHmR29B1mPKe4+GyexuBpWfdy+fPppSi2kBpFvUB+QYWWZhuSRtJy/eRTk43p1P2qLqhy58+AtTNwoGWSSq0x/js= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1661212597223492.17557539031066; Mon, 22 Aug 2022 16:56:37 -0700 (PDT) Received: from localhost ([::1]:54842 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oQHHY-000891-5w for importer@patchew.org; Mon, 22 Aug 2022 19:56:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oQGvc-0006AR-4v for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:57 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]:43713) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oQGvW-0007Hu-Mo for qemu-devel@nongnu.org; Mon, 22 Aug 2022 19:33:55 -0400 Received: by mail-pl1-x62e.google.com with SMTP id 20so11297537plo.10 for ; Mon, 22 Aug 2022 16:33:50 -0700 (PDT) Received: from stoup.. ([2602:47:d49d:ec01:c3f1:b74f:5edd:63af]) by smtp.gmail.com with ESMTPSA id 82-20020a621555000000b0053655af14easm5133124pfv.45.2022.08.22.16.33.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 16:33:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc; bh=89w0t8uvG/Xr6P47JSYwDEJn3f8tjoXZNYNMv9BRJFI=; b=s1gnqxeXhChrlh31mUUnqxjSkKJsW2M0XVSUD4MRgYJKGU+yDlG90q7gwXl3ecDOnM cfz11xOzYXu3uwmNjzGqWdmc7KxvtIvw66cuA9/0Wn8YmnQ9KlknUeBCscLLBd8dCb2K fZWO/mF8IdIJeib5/YPOW540D/GhjUZ8KF00P9Db1FCtwdzS1V4vGYqoR9oCnJpLbkwx drCAxdwzv2TPIXbmJ4S9caLig0MwRjgMjbXPEiZfZcX9grxEKVWZfCTaSoNJ7jNy5tt8 h62eFiZlBkRo1oMp9KmxodWKNlMkN1PE9GVyssMaOi97LQBbV3Xvx233g7W+8rcNeGj8 AK9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=89w0t8uvG/Xr6P47JSYwDEJn3f8tjoXZNYNMv9BRJFI=; b=kFsLSyAIV7WEeNhV0KYdu6/kWiBsBZsWaGbJ33FgKU0VPEa/SftfZHvjgXFNNtnLyS EqfButdDZEC9SwTrwFYRa/kjJ576CKEsli5pp42Jj0mJulVOPYC8GQGBnR0LMnIE5XGM Dep9XaPBnKP31sG7lPdriKAXm59D0hQvU884lsUVgn8YIgbsI0AQZJ1+dDk9vHSq/3Wt rjZmuxOg2x/125n7qL1o6ajGEeE93Es4uUB8LE29qgq8ROpnTG5j894IvJdy0YM8ekcd cj/zJIFU0+CM0N6kj1ZUnB4fH3wctTBvVrRbvuIrX7ftqA48u8TSY7lPu3rZF79stc2s ky1w== X-Gm-Message-State: ACgBeo2pylJUlT/fz6FPyT3X13pWcYXkcWRlj3NbdOdsz19yt2Pt+Hfp VZC/SeI+ttwjY+WiJEjvVBJ3i2wOXRmOmg== X-Google-Smtp-Source: AA6agR5PkZi7MfIXFddwYhkj0ppd9QOp9IrqXlUMl9bABzgerPtqVacVRx9YQlX75+duYue7FPnyUA== X-Received: by 2002:a17:90b:1a8f:b0:1f7:299d:9c08 with SMTP id ng15-20020a17090b1a8f00b001f7299d9c08mr641670pjb.190.1661211229134; Mon, 22 Aug 2022 16:33:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 22/22] target/i386: Enable TARGET_TB_PCREL Date: Mon, 22 Aug 2022 16:33:18 -0700 Message-Id: <20220822233318.1728621-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220822233318.1728621-1-richard.henderson@linaro.org> References: <20220822233318.1728621-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1661212598982100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/i386/cpu-param.h | 1 + target/i386/tcg/tcg-cpu.c | 8 ++-- target/i386/tcg/translate.c | 86 ++++++++++++++++++++++++++++++------- 3 files changed, 77 insertions(+), 18 deletions(-) diff --git a/target/i386/cpu-param.h b/target/i386/cpu-param.h index 9740bd7abd..51a3f153bf 100644 --- a/target/i386/cpu-param.h +++ b/target/i386/cpu-param.h @@ -24,5 +24,6 @@ #endif #define TARGET_PAGE_BITS 12 #define NB_MMU_MODES 3 +#define TARGET_TB_PCREL 1 =20 #endif diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c index 76989a5a9d..74333247c5 100644 --- a/target/i386/tcg/tcg-cpu.c +++ b/target/i386/tcg/tcg-cpu.c @@ -49,9 +49,11 @@ static void x86_cpu_exec_exit(CPUState *cs) static void x86_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb) { - X86CPU *cpu =3D X86_CPU(cs); - - cpu->env.eip =3D tb_pc(tb) - tb->cs_base; + /* The instruction pointer is always up to date with TARGET_TB_PCREL. = */ + if (!TARGET_TB_PCREL) { + CPUX86State *env =3D cs->env_ptr; + env->eip =3D tb_pc(tb) - tb->cs_base; + } } =20 #ifndef CONFIG_USER_ONLY diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 6192a3e30e..5e252f26b2 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -64,6 +64,7 @@ =20 /* global register indexes */ static TCGv cpu_cc_dst, cpu_cc_src, cpu_cc_src2; +static TCGv cpu_eip; static TCGv_i32 cpu_cc_op; static TCGv cpu_regs[CPU_NB_REGS]; static TCGv cpu_seg_base[6]; @@ -77,6 +78,7 @@ typedef struct DisasContext { =20 target_ulong pc; /* pc =3D eip + cs_base */ target_ulong cs_base; /* base of CS segment */ + target_ulong pc_save; =20 MemOp aflag; MemOp dflag; @@ -481,7 +483,7 @@ static void gen_add_A0_im(DisasContext *s, int val) =20 static inline void gen_op_jmp_v(TCGv dest) { - tcg_gen_st_tl(dest, cpu_env, offsetof(CPUX86State, eip)); + tcg_gen_mov_tl(cpu_eip, dest); } =20 static inline @@ -516,24 +518,36 @@ static inline void gen_op_st_rm_T0_A0(DisasContext *s= , int idx, int d) } } =20 -static TCGv gen_eip_cur(DisasContext *s) +static void gen_jmp_im(DisasContext *s, target_ulong eip) { - return tcg_constant_tl(s->base.pc_next - s->cs_base); -} - -static void gen_jmp_im(DisasContext *s, target_ulong pc) -{ - gen_op_jmp_v(tcg_constant_tl(pc)); + if (TARGET_TB_PCREL) { + target_ulong eip_save =3D s->pc_save - s->cs_base; + tcg_gen_addi_tl(cpu_eip, cpu_eip, eip - eip_save); + } else { + tcg_gen_movi_tl(cpu_eip, eip); + } } =20 static void gen_update_eip_cur(DisasContext *s) { gen_jmp_im(s, s->base.pc_next - s->cs_base); + s->pc_save =3D s->base.pc_next; } =20 static void gen_update_eip_next(DisasContext *s) { gen_jmp_im(s, s->pc - s->cs_base); + s->pc_save =3D s->pc; +} + +static TCGv gen_eip_cur(DisasContext *s) +{ + if (TARGET_TB_PCREL) { + gen_update_eip_cur(s); + return cpu_eip; + } else { + return tcg_constant_tl(s->base.pc_next - s->cs_base); + } } =20 static int cur_insn_len(DisasContext *s) @@ -548,12 +562,25 @@ static TCGv_i32 cur_insn_len_i32(DisasContext *s) =20 static TCGv_i32 eip_next_i32(DisasContext *s) { - return tcg_constant_i32(s->pc - s->cs_base); + if (TARGET_TB_PCREL) { + TCGv_i32 ret =3D tcg_temp_new_i32(); + tcg_gen_trunc_tl_i32(ret, cpu_eip); + tcg_gen_addi_i32(ret, ret, s->pc - s->pc_save); + return ret; + } else { + return tcg_constant_i32(s->pc - s->cs_base); + } } =20 static TCGv eip_next_tl(DisasContext *s) { - return tcg_constant_tl(s->pc - s->cs_base); + if (TARGET_TB_PCREL) { + TCGv ret =3D tcg_temp_new(); + tcg_gen_addi_tl(ret, cpu_eip, s->pc - s->pc_save); + return ret; + } else { + return tcg_constant_tl(s->pc - s->cs_base); + } } =20 /* Compute SEG:REG into A0. SEG is selected from the override segment @@ -2252,7 +2279,12 @@ static TCGv gen_lea_modrm_1(DisasContext *s, Address= Parts a) ea =3D cpu_regs[a.base]; } if (!ea) { - tcg_gen_movi_tl(s->A0, a.disp); + if (TARGET_TB_PCREL && a.base =3D=3D -2) { + /* With cpu_eip ~=3D pc_save, the expression is pc-relative. */ + tcg_gen_addi_tl(s->A0, cpu_eip, a.disp - s->pc_save); + } else { + tcg_gen_movi_tl(s->A0, a.disp); + } ea =3D s->A0; } else if (a.disp !=3D 0) { tcg_gen_addi_tl(s->A0, ea, a.disp); @@ -2366,8 +2398,13 @@ static void gen_goto_tb(DisasContext *s, int tb_num,= target_ulong eip) =20 if (translator_use_goto_tb(&s->base, pc)) { /* jump to same page: we can use a direct jump */ - tcg_gen_goto_tb(tb_num); - gen_jmp_im(s, eip); + if (TARGET_TB_PCREL) { + gen_jmp_im(s, eip); + tcg_gen_goto_tb(tb_num); + } else { + tcg_gen_goto_tb(tb_num); + gen_jmp_im(s, eip); + } tcg_gen_exit_tb(s->base.tb, tb_num); s->base.is_jmp =3D DISAS_NORETURN; } else { @@ -8458,6 +8495,13 @@ void tcg_x86_init(void) [R_EDI] =3D "edi", [R_EBP] =3D "ebp", [R_ESP] =3D "esp", +#endif + }; + static const char eip_name[] =3D { +#ifdef TARGET_X86_64 + "rip" +#else + "eip" #endif }; static const char seg_base_names[6][8] =3D { @@ -8484,6 +8528,7 @@ void tcg_x86_init(void) "cc_src"); cpu_cc_src2 =3D tcg_global_mem_new(cpu_env, offsetof(CPUX86State, cc_s= rc2), "cc_src2"); + cpu_eip =3D tcg_global_mem_new(cpu_env, offsetof(CPUX86State, eip), ei= p_name); =20 for (i =3D 0; i < CPU_NB_REGS; ++i) { cpu_regs[i] =3D tcg_global_mem_new(cpu_env, @@ -8520,6 +8565,7 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) int iopl =3D (flags >> IOPL_SHIFT) & 3; =20 dc->cs_base =3D dc->base.tb->cs_base; + dc->pc_save =3D dc->base.pc_next; dc->flags =3D flags; #ifndef CONFIG_USER_ONLY dc->cpl =3D cpl; @@ -8583,9 +8629,14 @@ static void i386_tr_tb_start(DisasContextBase *db, C= PUState *cpu) static void i386_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu) { DisasContext *dc =3D container_of(dcbase, DisasContext, base); + target_ulong pc_arg =3D dc->base.pc_next; =20 dc->prev_insn_end =3D tcg_last_op(); - tcg_gen_insn_start(dc->base.pc_next, dc->cc_op); + if (TARGET_TB_PCREL) { + pc_arg -=3D dc->cs_base; + pc_arg &=3D ~TARGET_PAGE_MASK; + } + tcg_gen_insn_start(pc_arg, dc->cc_op); } =20 static void i386_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu) @@ -8686,7 +8737,12 @@ void restore_state_to_opc(CPUX86State *env, Translat= ionBlock *tb, target_ulong *data) { int cc_op =3D data[1]; - env->eip =3D data[0] - tb->cs_base; + + if (TARGET_TB_PCREL) { + env->eip =3D (env->eip & TARGET_PAGE_MASK) | data[0]; + } else { + env->eip =3D data[0] - tb->cs_base; + } if (cc_op !=3D CC_OP_DYNAMIC) { env->cc_op =3D cc_op; } --=20 2.34.1