From nobody Wed May 15 12:57:24 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=1621449356; cv=none; d=zohomail.com; s=zohoarc; b=JZT/+xYzBGj20t98Vcr81DOzCDOSNlxelpElbCVBCo+GcBNUyv+Y8DUXqfz6CV4wjYaIuQYEoqUYDFV9leiF/4D+e0LE2EOSzFPmPcBxFBZrUWK/h426NPwEeERETJln7T8KE/MtmPN+iuTHqestoE7yP/Cx9QpD2FSeWIKEaeI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449356; h=Content-Transfer-Encoding:Cc: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=tQT3qvMjB0SKpKRhYpGQ33pLkT70ukeZN2bklKDWyic=; b=RgNr/0EUHl7dldW/aCAr63s9ElIkKN6Q+z15TTqtLEIMGjjpKkw/uKqpF0BDCifNrlh1dIMpt4MdtzUeXqCw/AIyhYgczbz0EVC4WODRI02KOGgnzvg2Z3Zc4R+v5J+ysU2XR/wnJohN3Pyw0L9LoLQv+UejRMWirHjSopLjrF8= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449356648509.13134896044755; Wed, 19 May 2021 11:35:56 -0700 (PDT) Received: from localhost ([::1]:45810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR2w-0003nk-Go for importer@patchew.org; Wed, 19 May 2021 14:35:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51004) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyF-0003PO-FM for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:03 -0400 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]:42732) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQy7-0005T1-1G for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:03 -0400 Received: by mail-ot1-x32c.google.com with SMTP id g7-20020a9d12870000b0290328b1342b73so4775208otg.9 for ; Wed, 19 May 2021 11:30:54 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.30.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:30:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tQT3qvMjB0SKpKRhYpGQ33pLkT70ukeZN2bklKDWyic=; b=anmSk9yFvRpUX85xip00FMzYwjWYmXIDfKWHJHhjjiCv/zTYxjJ3Xvgjun3GS5qxg+ i8OJb7DAovRtJ6pSlm9Vj+goxvlTHMTBsqzCaksI4XmzZyYQ4btowTmHkifhLFp6NRXi uQ1xJIG4b0CBBSam6Ncbb2QH45yxIKno19sNpsZTK09cEADkI6pGqTYKTStyeq26rduY tMJdLCO0Nk6Zu7a2ap3E2PFgjBP2Fk9dooR3wOVj+Ch2fXQPWt3Gw7KalT+irUpxslKB 117qwD2mbJNWK8nhg1ggunlMHoQdFA2HYZAhL8FaMU2AACOum+kLCVRcS08ikx3oLUQX TNPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tQT3qvMjB0SKpKRhYpGQ33pLkT70ukeZN2bklKDWyic=; b=g33jjwHHOXvVJhrwWoqEEUD5vjUfmEkNFofJNEEWmIsq3SpZcmYnAIHAHGQqO96F7o zGlhBJZRZy/Ph9+q6QdgyAq0OXizFZZkcTZoUKuHYgT9AmloXYbvcrruuKMCTUEs4cJ7 mgoxxREKVmzhcXRzEaoj1Lf3vdyl5FgFkFIQBsHwU4Jgnkp/y02EZRMLiJNOjJSmhgf1 ys3s7lndKqYBhPZb8zaErmY+G2ZZOpo7ZQL8+mqXF0GIDciBw/mW0O3nlztXjGouVjQT UPXggEcx9kJAlir3bn3UZbP4ntWmePRi6zK/tqByC99fznB3rllfUFiqYOeXzsCSjd5M 8jHg== X-Gm-Message-State: AOAM533owe5Bsr9AxfzFH3mgkV7GKk4QctXu0NZx2t3aQf1ZRXXHDM00 MPxoLNA1/5M8PqdHGE/Uui0nYdo6QuPAzlxt X-Google-Smtp-Source: ABdhPJwU/xKBCZSy5X3Uv2HQOwUsOc6hnvPCWlX70oRTF827jUH92hMiISKUr8idDK6rXwKa+xCaRg== X-Received: by 2002:a05:6830:1ac3:: with SMTP id r3mr649641otc.322.1621449054016; Wed, 19 May 2021 11:30:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 01/50] target/i386: Split out gen_exception_gpf Date: Wed, 19 May 2021 13:30:01 -0500 Message-Id: <20210519183050.875453-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32c; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32c.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_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-2-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 68 ++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index db56a48343..2672e08197 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -1276,6 +1276,12 @@ static void gen_illegal_opcode(DisasContext *s) gen_exception(s, EXCP06_ILLOP, s->pc_start - s->cs_base); } =20 +/* Generate #GP for the current instruction. */ +static void gen_exception_gpf(DisasContext *s) +{ + gen_exception(s, EXCP0D_GPF, s->pc_start - s->cs_base); +} + /* if d =3D=3D OR_TMP0, it means memory operand (address in A0) */ static void gen_op(DisasContext *s1, int op, MemOp ot, int d) { @@ -4502,7 +4508,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) s->vex_l =3D 0; s->vex_v =3D 0; if (sigsetjmp(s->jmpbuf, 0) !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); return s->pc; } =20 @@ -6567,7 +6573,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) set_cc_op(s, CC_OP_EFLAGS); } else if (s->vm86) { if (s->iopl !=3D 3) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_helper_iret_real(cpu_env, tcg_const_i32(dflag - 1)); set_cc_op(s, CC_OP_EFLAGS); @@ -6689,7 +6695,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x9c: /* pushf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_PUSHF); if (s->vm86 && s->iopl !=3D 3) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_update_cc_op(s); gen_helper_read_eflags(s->T0, cpu_env); @@ -6699,7 +6705,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x9d: /* popf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_POPF); if (s->vm86 && s->iopl !=3D 3) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { ot =3D gen_pop_T0(s); if (s->cpl =3D=3D 0) { @@ -7061,7 +7067,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xcd: /* int N */ val =3D x86_ldub_code(env, s); if (s->vm86 && s->iopl !=3D 3) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_interrupt(s, val, pc_start - s->cs_base, s->pc - s->cs_bas= e); } @@ -7084,13 +7090,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) if (s->cpl <=3D s->iopl) { gen_helper_cli(cpu_env); } else { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } } else { if (s->iopl =3D=3D 3) { gen_helper_cli(cpu_env); } else { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } } break; @@ -7101,7 +7107,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_jmp_im(s, s->pc - s->cs_base); gen_eob_inhibit_irq(s, true); } else { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } break; case 0x62: /* bound */ @@ -7194,7 +7200,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x130: /* wrmsr */ case 0x132: /* rdmsr */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); @@ -7226,7 +7232,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (CODE64(s) && env->cpuid_vendor1 !=3D CPUID_VENDOR_INTEL_1) goto illegal_op; if (!s->pe) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_helper_sysenter(cpu_env); gen_eob(s); @@ -7237,7 +7243,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (CODE64(s) && env->cpuid_vendor1 !=3D CPUID_VENDOR_INTEL_1) goto illegal_op; if (!s->pe) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_helper_sysexit(cpu_env, tcg_const_i32(dflag - 1)); gen_eob(s); @@ -7256,7 +7262,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x107: /* sysret */ if (!s->pe) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_helper_sysret(cpu_env, tcg_const_i32(dflag - 1)); /* condition codes are modified only in long mode */ @@ -7278,7 +7284,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xf4: /* hlt */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); @@ -7304,7 +7310,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!s->pe || s->vm86) goto illegal_op; if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_WRITE); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); @@ -7325,7 +7331,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!s->pe || s->vm86) goto illegal_op; if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_WRITE); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); @@ -7441,7 +7447,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX], @@ -7458,7 +7464,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7483,7 +7489,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7496,7 +7502,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7511,7 +7517,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7525,7 +7531,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7549,7 +7555,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7559,7 +7565,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 CASE_MODRM_MEM_OP(2): /* lgdt */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_GDTR_WRITE); @@ -7576,7 +7582,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 CASE_MODRM_MEM_OP(3): /* lidt */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_IDTR_WRITE); @@ -7622,7 +7628,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; CASE_MODRM_OP(6): /* lmsw */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); @@ -7634,7 +7640,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 CASE_MODRM_MEM_OP(7): /* invlpg */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7649,7 +7655,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) #ifdef TARGET_X86_64 if (CODE64(s)) { if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { tcg_gen_mov_tl(s->T0, cpu_seg_base[R_GS]); tcg_gen_ld_tl(cpu_seg_base[R_GS], cpu_env, @@ -7685,7 +7691,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x108: /* invd */ case 0x109: /* wbinvd */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_svm_check_intercept(s, pc_start, (b & 2) ? SVM_EXIT_INVD := SVM_EXIT_WBINVD); /* nothing to do */ @@ -8009,7 +8015,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x120: /* mov reg, crN */ case 0x122: /* mov crN, reg */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { modrm =3D x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)=3D=3D0xc0). @@ -8063,7 +8069,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x121: /* mov reg, drN */ case 0x123: /* mov drN, reg */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { #ifndef CONFIG_USER_ONLY modrm =3D x86_ldub_code(env, s); @@ -8099,7 +8105,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x106: /* clts */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); gen_helper_clts(cpu_env); --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449189; cv=none; d=zohomail.com; s=zohoarc; b=Sdup6MMIjVfBAMk3ZHA2vfrXyepw5ekONtzW2X5fmOloGxUutJu5CCz2CpxQLXEol2MN2OhIiIFUy1laipQIBu6D9XvYfUm8ITogqe2YU4uz2fQx/OnV6+3oN7XYB7njGmL8mUXm8zQr8bi8VXJwq4cSfdIE8uRSE3/wfgKAsQ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449189; h=Content-Transfer-Encoding:Cc: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=smdeYrB4Z2W/gFXPC6b0JTDnXTfTPJyfpJjMMWQ5xW4=; b=T7tbo6fxnaWoBPtnMsskKCTtTcaA7iNE5cW31Rp9n34GYJg/pDOzuumYpnEtuaU6vh7sBQUcJjZzQlPBApnRWWY1z3gWirwLjdqbmqWIxKojxgoUrjqU9J2QSeOw6bEemXN2J3I9ur8q82nDiwupGMqIWLEmvWhsMUXcfO6ogtE= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449189162476.62298204338936; Wed, 19 May 2021 11:33:09 -0700 (PDT) Received: from localhost ([::1]:37132 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR0F-0006HB-QH for importer@patchew.org; Wed, 19 May 2021 14:33:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50878) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyB-0003O9-FU for qemu-devel@nongnu.org; Wed, 19 May 2021 14:30:59 -0400 Received: from mail-oi1-x233.google.com ([2607:f8b0:4864:20::233]:44630) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQy9-0005Uf-3x for qemu-devel@nongnu.org; Wed, 19 May 2021 14:30:59 -0400 Received: by mail-oi1-x233.google.com with SMTP id d21so13962002oic.11 for ; Wed, 19 May 2021 11:30:55 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.30.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:30:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=smdeYrB4Z2W/gFXPC6b0JTDnXTfTPJyfpJjMMWQ5xW4=; b=MVnE/A5NFqfB2oTAwXNCs7IyVNub1Gm/SF8lQNktsVyO4fQ4mhcPdQjcY8afX2T1RZ FCQGLgmNYIXzfpheFaXjKvsLnPWH5yV9hTwdmtvaBkrqeU5DXfOyv1bcf6pnA45CsHB7 YT7N+WWxxjai9acCUOhkwV3di6N1q2jcMTALzUOQDtLtySV94JMEJFDjdyAdprn5DW+u 3vVQ6hb/8H9SP1hC0v6qRXCFYY+mol2ZXbiINLY+l/vtT8dbfGtQEMn1zQHh9pX26W3b jJ/9XbLvOLGxW7RDhRGLfdmz21w33nFQdHTNWg9jIXWm3/wv7Fz7KjDNQ97PBPbg5k30 jWOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=smdeYrB4Z2W/gFXPC6b0JTDnXTfTPJyfpJjMMWQ5xW4=; b=cbfVSYGXek07tfXUa2Tq3eokN9IRPHw7Dbjjhk2SM9bt1Gb2YuaQ043u4jntLvcR4a m4PRjKv9dzvGVVCjIeHdtjrCtoIMJuQ5mmQ98TZxGHQEU+t2XFGcCLz7VMNcZFeG8EN7 knSg1UZz9bu7V1evb+tS/oZrbzuHWv5lHnr6HJ33lhN+eGVrJZSoWLLqLMw4tXk9DKMX cN9aWIhesReipZ4QKbfls2C4/N2hii15agXrj296PQ8oDbpkJUfi36LpYPcbQAfsEoAN fyT2+0rDcoNTPiJ9IWxyp0V9iE1BQTqfBJAg7mi1HFDeeRUbxlWcgHgECrvQVwJOc01Q gvGg== X-Gm-Message-State: AOAM533p77hJ3MX4IUE5gLrI1yWHZym541NJULyhvDZQGcF13wAMN92G xeXmcJg8jdyKkLkMjyrsgpovUiDrCrmuVa4g X-Google-Smtp-Source: ABdhPJymb2kg8c/9JG25j/qqh9BIyU860RwISjLQjkgJvfueVLJpq7uKitHRb7URjr0oWuDXJzg2qA== X-Received: by 2002:aca:ea85:: with SMTP id i127mr395662oih.176.1621449054961; Wed, 19 May 2021 11:30:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 02/50] target/i386: Split out check_cpl0 Date: Wed, 19 May 2021 13:30:02 -0500 Message-Id: <20210519183050.875453-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::233; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x233.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Split out the check for CPL !=3D 0 and the raising of #GP. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-3-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 79 ++++++++++++++----------------------- 1 file changed, 30 insertions(+), 49 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 2672e08197..61b30117a3 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -1282,6 +1282,16 @@ static void gen_exception_gpf(DisasContext *s) gen_exception(s, EXCP0D_GPF, s->pc_start - s->cs_base); } =20 +/* Check for cpl =3D=3D 0; if not, raise #GP and return false. */ +static bool check_cpl0(DisasContext *s) +{ + if (s->cpl =3D=3D 0) { + return true; + } + gen_exception_gpf(s); + return false; +} + /* if d =3D=3D OR_TMP0, it means memory operand (address in A0) */ static void gen_op(DisasContext *s1, int op, MemOp ot, int d) { @@ -7199,9 +7209,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x130: /* wrmsr */ case 0x132: /* rdmsr */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); if (b & 2) { @@ -7283,9 +7291,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_helper_cpuid(cpu_env); break; case 0xf4: /* hlt */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); gen_helper_hlt(cpu_env, tcg_const_i32(s->pc - pc_start)); @@ -7309,9 +7315,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 2: /* lldt */ if (!s->pe || s->vm86) goto illegal_op; - if (s->cpl !=3D 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_WRITE); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); @@ -7330,9 +7334,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 3: /* ltr */ if (!s->pe || s->vm86) goto illegal_op; - if (s->cpl !=3D 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_WRITE); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); @@ -7446,8 +7448,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) | PREFIX_REPZ | PREFIX_REPNZ))) { goto illegal_op; } - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX], @@ -7463,8 +7464,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7488,8 +7488,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7501,8 +7500,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7516,8 +7514,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) || !s->pe) { goto illegal_op; } - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7530,8 +7527,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7554,8 +7550,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7564,8 +7559,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 CASE_MODRM_MEM_OP(2): /* lgdt */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_GDTR_WRITE); @@ -7581,8 +7575,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 CASE_MODRM_MEM_OP(3): /* lidt */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_IDTR_WRITE); @@ -7627,8 +7620,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_helper_wrpkru(cpu_env, s->tmp2_i32, s->tmp1_i64); break; CASE_MODRM_OP(6): /* lmsw */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); @@ -7639,8 +7631,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 CASE_MODRM_MEM_OP(7): /* invlpg */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7654,9 +7645,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xf8: /* swapgs */ #ifdef TARGET_X86_64 if (CODE64(s)) { - if (s->cpl !=3D 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { tcg_gen_mov_tl(s->T0, cpu_seg_base[R_GS]); tcg_gen_ld_tl(cpu_seg_base[R_GS], cpu_env, offsetof(CPUX86State, kernelgsbase)); @@ -7690,9 +7679,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0x108: /* invd */ case 0x109: /* wbinvd */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { gen_svm_check_intercept(s, pc_start, (b & 2) ? SVM_EXIT_INVD := SVM_EXIT_WBINVD); /* nothing to do */ } @@ -8014,9 +8001,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x120: /* mov reg, crN */ case 0x122: /* mov crN, reg */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { modrm =3D x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)=3D=3D0xc0). * AMD documentation (24594.pdf) and testing of @@ -8068,9 +8053,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x121: /* mov reg, drN */ case 0x123: /* mov drN, reg */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { #ifndef CONFIG_USER_ONLY modrm =3D x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)=3D=3D0xc0). @@ -8104,9 +8087,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } break; case 0x106: /* clts */ - if (s->cpl !=3D 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); gen_helper_clts(cpu_env); /* abort block because static cpu state changed */ --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449189; cv=none; d=zohomail.com; s=zohoarc; b=RseEPwT7RhJQyhkwvNRugNh7JhayZV9VBRkZ/tEg7+Te5je9b4FKKC40iBuMm3bk5AR9O7h39cYEAujrTLCt+bGIl8KXIrTZc0MzK9osb4B32El9h0VD4I2P+ma2F6kSpqpZ2rtjTC4UiqY8vdtPU5JBoPOO4odmQ1HgRaUSIBA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449189; h=Content-Transfer-Encoding:Cc: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=XkpdcvdsMOsMLR49VnhnztK5w7qTf2fMwT/yaQmjNjQ=; b=H1w4OJoG3Vb7Kn4LLzBbsMO8Oom7NYGvRanoZVlq7sIFIviwHrNKs4JLhmUaB6hcwUaZaFW6B3YPkGkZuxV5W1XUrxmY9wIbJenJmmv6hBkzQ1ux8tErDLPewRFsVf+8T2kghAEUaIYlOkvyk8tnXgWhd7CX7am9/Z/HUJp2MtY= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16214491890741006.2822506604188; Wed, 19 May 2021 11:33:09 -0700 (PDT) Received: from localhost ([::1]:37174 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR0F-0006Ib-Ex for importer@patchew.org; Wed, 19 May 2021 14:33:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50884) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyB-0003OB-Kd for qemu-devel@nongnu.org; Wed, 19 May 2021 14:30:59 -0400 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]:37648) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyA-0005Va-0S for qemu-devel@nongnu.org; Wed, 19 May 2021 14:30:59 -0400 Received: by mail-oi1-x22a.google.com with SMTP id h9so14023128oih.4 for ; Wed, 19 May 2021 11:30:57 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.30.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:30:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XkpdcvdsMOsMLR49VnhnztK5w7qTf2fMwT/yaQmjNjQ=; b=PGYfwyeE5W/Maowyoxk7yRgI+MyA0LH3O1jgGh5lukm01XKYxrWo3pJFEXAqy7Vyyr o6UaQpPX3VIsH90aimDOiHdaY1n/RFxzeP5EbB2/XT5LwiZHcS148v6SGVvr8Rb3DyIP Nr0FdzYx2lizBJ7ojdTf52gCGJa2iGyActDiUrvBAwvNZ83WRjdDocOsgxdh86n6gyY6 NnqKi3UvgMd9m8UTPid5f3R8AsPas2+c7oiAWx/VX3/qCIPqSji1bX7LTWzE+1OtcbTJ atCY6DLWhyaLLpEdMYbtr/7MUzWPKnNJ+HLGS83F/9CHca7e2Lt9QKGaEZY3g+hECOkR GgGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XkpdcvdsMOsMLR49VnhnztK5w7qTf2fMwT/yaQmjNjQ=; b=VsyTXiyx67csLNkQhmrqmr21gKhwumRxpdJ2L5HyrrgaPROD+U9TO1lEIjlkvtkWdn 9N7a9Gouwc0OpNLBqZk966TUFzEf+YED54EQoKSmTatBgRwnF7Em6pX2JcHb4VhaO2ih H03CwtfVaWC8JI+O6xgHyQ3Nb2iGubjnX+TbM/Y2rlnUTZmrwsDbkbV92c9yFkicbY28 eKslVHOyz2wXKRwrucLsGeoALcTZv98uTab4X2U3vX4+zoB4n6Csrt5NQ95oMQRmoaPJ mL7LhCyhZflUMc39lEt+kB/g5V47k+sCg0jFUL5uf83l6b1+xttSgb+QFS+xRXSQss4N LOOA== X-Gm-Message-State: AOAM532Tx8Y31WuRHrpco1TafITR9wrZRix/PVngOUoT4XxJhmwI+SGN kOvSBpIv4OLv+hYQejZsWAhhhrcw6yI5CDZf X-Google-Smtp-Source: ABdhPJwWMWBvGrhdT1LxbLyYWz6iwEL4OuOLOG9vDv6s+OLAgyrbj8HzMlNb3K6q3J3+1IqbGJMlaw== X-Received: by 2002:aca:f5c5:: with SMTP id t188mr384221oih.25.1621449055902; Wed, 19 May 2021 11:30:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 03/50] target/i386: Unify code paths for IRET Date: Wed, 19 May 2021 13:30:03 -0500 Message-Id: <20210519183050.875453-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22a; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22a.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" In vm86 mode, we use the same helper as real-mode, but with an extra check for IOPL. All non-exceptional paths set EFLAGS. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-4-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 61b30117a3..0a15662949 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -6577,22 +6577,18 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) goto do_lret; case 0xcf: /* iret */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_IRET); - if (!s->pe) { - /* real mode */ - gen_helper_iret_real(cpu_env, tcg_const_i32(dflag - 1)); - set_cc_op(s, CC_OP_EFLAGS); - } else if (s->vm86) { - if (s->iopl !=3D 3) { + if (!s->pe || s->vm86) { + /* real mode or vm86 mode */ + if (s->vm86 && s->iopl !=3D 3) { gen_exception_gpf(s); - } else { - gen_helper_iret_real(cpu_env, tcg_const_i32(dflag - 1)); - set_cc_op(s, CC_OP_EFLAGS); + break; } + 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)); - set_cc_op(s, CC_OP_EFLAGS); } + set_cc_op(s, CC_OP_EFLAGS); gen_eob(s); break; case 0xe8: /* call im */ --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449189; cv=none; d=zohomail.com; s=zohoarc; b=X7raxVq1Y5oQ67ZXu1WKFcvUGntzpt7owDREZ9Ni+MnRuPt5Ggxj/NwkeMMCJljdAQ8Lqzrz1gORMHksNXMrrqVEBjoiAfuprXyYVx85p9De+jQwALUg4+ndql0LoefNZMM8QbnFdxgbxOeuFz+QtsdtrdtWnvpGGoKxdIYl/Wo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449189; h=Content-Transfer-Encoding:Cc: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=0LXm7FUdAyY78wIi1+bFyfLTZfZQ4+PVm0Qu4rWwa4U=; b=Rrb1mgY3F4wxbcioEwfi8iaZo9Jqtp9NUlnG+iKMoLlsdRG0HZmPD0m4JEnBvM6nQUz2cRd+2NY61inZqRGocc9TaIvgy0T/6Sl+1lF9pXEynXwXa3TtMfaWNRgR1IF2TQOcoosBQLImKiWCWtjr4LQU/U2tF9GgnZ9p8PxOb2M= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449189865736.36341854808; Wed, 19 May 2021 11:33:09 -0700 (PDT) Received: from localhost ([::1]:37254 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR0G-0006MJ-K5 for importer@patchew.org; Wed, 19 May 2021 14:33:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50968) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyE-0003OQ-8y for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:02 -0400 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]:34684) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQy9-0005Wm-Tm for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:02 -0400 Received: by mail-ot1-x32c.google.com with SMTP id u25-20020a0568302319b02902ac3d54c25eso12655795ote.1 for ; Wed, 19 May 2021 11:30:57 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.30.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:30:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0LXm7FUdAyY78wIi1+bFyfLTZfZQ4+PVm0Qu4rWwa4U=; b=xdAI+HU1BdrDvizhT7524k7QQvH31zYzQvBpsDJN5d50sp0sl6WxJctB1ZPYemEzSm ra/rLm1YlXg5lRM2sgNsTthGwyIsmqGrnoypDPWysTSvP1Cmk56fLZI5dVo3MoDlWVGP 143wu+oL8K1mSUwgrg4QGNgAwgZvsvQ1qxLMHblXJleVU88YDXAUz6d7EZsfSI3tGJUe F1wKkoYpsswkkhwk7J3SibNU41EenzL1Bds0pU7eBikpmtIOpmOqz5JTE+PVR0CLhWdw GocAWsCixkLVQCP9aGwsFe+ZP7eDdnPQSuwGj/RfloPv4SDmwxXUJUb5l6vAw8rcGOmQ SRCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0LXm7FUdAyY78wIi1+bFyfLTZfZQ4+PVm0Qu4rWwa4U=; b=ZXN6GXOz7wqbEZIedTFtABhKJu21eD1t66YBtp4XjeNMoYWH02dATy+aMACgHtEM9b ZhXvo3nw8dKBncBH5aEEAaAlOV6fnMo+cn8FuJHWMOmKtbPgNg+xxslZTz9icmhgiPkb /OwDt7LEBC5pUzORJK6JYkz+9n1vWsnKU/rzmYioP0DZ2N983Qta+VFeLt4PHrjCbvio LTu/Ac3uEcf3rW9voTAIKD8OitKlkqMPsxthDOEyecFfmjD18UB/5tRZ4bCqV9MdN0dS HJ2/XWOV6eddwYpkX667FEELkwp1rbUG/eWGs8sNkPmJnOBqy5pc2Acj5fN8WiHctPbU sODw== X-Gm-Message-State: AOAM5332Jh3hlPpDd2elkSTj2wMCHOcQ4RD+cKInzf2QeXXJtDHrJW3e bYXR8L0Me1cg/FJDl45ZLeqNjgmr60B+qiBq X-Google-Smtp-Source: ABdhPJyJS7K2DVJDtC5FTs2D9oGO8N/BQQXjC4rMMnWOLio+0dy8wFTltoEiFGxjeFDrpcDiyh1QxA== X-Received: by 2002:a9d:be2:: with SMTP id 89mr630942oth.269.1621449056818; Wed, 19 May 2021 11:30:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 04/50] target/i386: Split out check_vm86_iopl Date: Wed, 19 May 2021 13:30:04 -0500 Message-Id: <20210519183050.875453-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32c; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32c.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-5-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 0a15662949..74f6024f82 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -1292,6 +1292,16 @@ static bool check_cpl0(DisasContext *s) return false; } =20 +/* If vm86, check for iopl =3D=3D 3; if not, raise #GP and return false. */ +static bool check_vm86_iopl(DisasContext *s) +{ + if (!s->vm86 || s->iopl =3D=3D 3) { + return true; + } + gen_exception_gpf(s); + return false; +} + /* if d =3D=3D OR_TMP0, it means memory operand (address in A0) */ static void gen_op(DisasContext *s1, int op, MemOp ot, int d) { @@ -6579,8 +6589,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_svm_check_intercept(s, pc_start, SVM_EXIT_IRET); if (!s->pe || s->vm86) { /* real mode or vm86 mode */ - if (s->vm86 && s->iopl !=3D 3) { - gen_exception_gpf(s); + if (!check_vm86_iopl(s)) { break; } gen_helper_iret_real(cpu_env, tcg_const_i32(dflag - 1)); @@ -6700,9 +6709,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* flags */ case 0x9c: /* pushf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_PUSHF); - if (s->vm86 && s->iopl !=3D 3) { - gen_exception_gpf(s); - } else { + if (check_vm86_iopl(s)) { gen_update_cc_op(s); gen_helper_read_eflags(s->T0, cpu_env); gen_push_v(s, s->T0); @@ -6710,9 +6717,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x9d: /* popf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_POPF); - if (s->vm86 && s->iopl !=3D 3) { - gen_exception_gpf(s); - } else { + if (check_vm86_iopl(s)) { ot =3D gen_pop_T0(s); if (s->cpl =3D=3D 0) { if (dflag !=3D MO_16) { @@ -7072,9 +7077,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xcd: /* int N */ val =3D x86_ldub_code(env, s); - if (s->vm86 && s->iopl !=3D 3) { - gen_exception_gpf(s); - } else { + if (check_vm86_iopl(s)) { gen_interrupt(s, val, pc_start - s->cs_base, s->pc - s->cs_bas= e); } break; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449352; cv=none; d=zohomail.com; s=zohoarc; b=NsF942DKYtZHbGH+xZAmWMOmCymwqxMlr/VVGNlcHYaFyL33enfE1sIHYRgSDuIBpugsIbVSo0yYadH9V1AKlS6xoEcJmCHRQ/s8v5FO9qoJi2nu1Sl27NidenKHa+nUZBnzNiOsXuP5MPjpPMNdbpXmJWfY9bAXx5AltNEpo4g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449352; h=Content-Transfer-Encoding:Cc: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=NjWJ8kBHVuAatpMu3NeT86JZz0YPmJ7lsGR0prh67KA=; b=N+BGmXN3kJXqDaQoDl+/iOrFASgpda6OEi11J8GfdTtMbiFcijjpC2HJX/bOYPEpWpoKpDVE+mHz3CmsX1Xrc4ha+F7by8fCMskPLFsL7SBk/RCtR43JJQQCCNdNGSQ0F3DqJftOOfAkD9fCLbdPxB0DifUafp/LZOnvKGHL/o8= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449352600169.9277345001601; Wed, 19 May 2021 11:35:52 -0700 (PDT) Received: from localhost ([::1]:45578 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR2t-0003eR-1f for importer@patchew.org; Wed, 19 May 2021 14:35:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50984) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyE-0003Oj-PX for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:02 -0400 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]:34735) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyA-0005Y2-QV for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:02 -0400 Received: by mail-oi1-x22f.google.com with SMTP id u11so14004068oiv.1 for ; Wed, 19 May 2021 11:30:58 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.30.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:30:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NjWJ8kBHVuAatpMu3NeT86JZz0YPmJ7lsGR0prh67KA=; b=gguHWSEWPLvMsxPzchXoJvvFZeYcHUHDqtX9QMtPDdhZpnCFxsd7MzcUyswvmzmtet 1LvrwewOT6fKYG3iFOSY6AjKa2SzcJZLk51pz3d+H1U4ZogH7LPQ9iWc5RnJbrkc4A3Z 2RPt16hCKbBrZ3xLvk0xVDZqEgkJiMNoeX/Of6epNDc8tKJctZyuBSlyzJY8HKbVH8j5 WRig4TI1Z5r4GE4vfjn6uxsLWARivDyG8uAvfofK2/i5RwR16mGZy1GusO+4jEx69fPR enO4MVZ1Zkqxic189S9+k2/Q6bba+fIXz23mHk+3EgnqkR8Yo0qWzNxmlGg+E8fAb2FV /woQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NjWJ8kBHVuAatpMu3NeT86JZz0YPmJ7lsGR0prh67KA=; b=rZgN4hImHyxuj8u5M7XXKih7D6OIBsJhOvmoHCYzzkeWV5uZnlu46EbHqDFR/2YMYB EQRRxTS2EQt6OeeCcNFrQBAIn3rj1VkoA2FSZGvy6SB81DC7BRwt1K5X4LHhrbTeTlo5 uZx91vNb0Hp+5JaG4tm5Scm6bAbRWAb3bH8tB4kd5SdFydety0njFQjx73bF2h+tXm/+ zqiqMwa2NqdIZxkSZZ4mHmBC2cPEo4T7FiC8FTa3Jz7opqip2InnxzOtcZj7i8hufxSD e4I0UTNtPvV1LnNDiW0Yq20f7N+3P5WHVvxwmUNlq9MXKPDPuH0KDKyJl+61IBx8QOTK 6rpw== X-Gm-Message-State: AOAM530CnA/oBpoMBXg8GbXLfSGkwk3RsFWcLT4j8cS4sbb0AXl4cqbj TFjeZYiOMcfq8r/ZQK9aURrBIIMMAyWUmrDd X-Google-Smtp-Source: ABdhPJx2d1B3k99V0aQePhrbb/i4Y0HkTuFSsLJq2NhRILX5yqR7UYgZKr+CS9qLnyiVyPo1qFRh3Q== X-Received: by 2002:aca:280a:: with SMTP id 10mr529541oix.13.1621449057779; Wed, 19 May 2021 11:30:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 05/50] target/i386: Split out check_iopl Date: Wed, 19 May 2021 13:30:05 -0500 Message-Id: <20210519183050.875453-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22f; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22f.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-6-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 74f6024f82..873ed00975 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -1302,6 +1302,16 @@ static bool check_vm86_iopl(DisasContext *s) return false; } =20 +/* Check for iopl allowing access; if not, raise #GP and return false. */ +static bool check_iopl(DisasContext *s) +{ + if (s->vm86 ? s->iopl =3D=3D 3 : s->cpl <=3D s->iopl) { + return true; + } + gen_exception_gpf(s); + return false; +} + /* if d =3D=3D OR_TMP0, it means memory operand (address in A0) */ static void gen_op(DisasContext *s1, int op, MemOp ot, int d) { @@ -7095,28 +7105,16 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) break; #endif case 0xfa: /* cli */ - if (!s->vm86) { - if (s->cpl <=3D s->iopl) { - gen_helper_cli(cpu_env); - } else { - gen_exception_gpf(s); - } - } else { - if (s->iopl =3D=3D 3) { - gen_helper_cli(cpu_env); - } else { - gen_exception_gpf(s); - } + if (check_iopl(s)) { + gen_helper_cli(cpu_env); } break; case 0xfb: /* sti */ - if (s->vm86 ? s->iopl =3D=3D 3 : s->cpl <=3D s->iopl) { + 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_eob_inhibit_irq(s, true); - } else { - gen_exception_gpf(s); } break; case 0x62: /* bound */ --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449488; cv=none; d=zohomail.com; s=zohoarc; b=Wy+tkOCr6in9+doparMDJBPlmnztx5+SdgVvh78pck2FT0rkvzw2KgFLyYLVBqq1D55bRQWuEEOCLJXd6Y8fUQ1NfoZGrbeaZNBtoP9nAuNeXe2I1WpgzwmtpzVayD4eJg0QNQg9G8cfaDnYA2CubBLScCadlD8366bPqelJ7rI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449488; h=Content-Transfer-Encoding:Cc: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=6jPucf3d8QVYiVwYtTgePgn0/KPRZsWR8rPsX9WQDzE=; b=QYQKj1ywTQhRgkOIEGlIKOtenXAA+k7j2s/raRSubjBBXsxbVF09FIp6DrJhWGX1AxsiqJVibFqTSEZVJq+mRf1FMvztt9JAEmM00gU6eQJuCNfLlX9Bvn6yykaKxq86jbbUZnQsBO2DnLpmEWOgLJp/ojH2ZXR5Zpx7XmPfp5M= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449488527236.30423286946314; Wed, 19 May 2021 11:38:08 -0700 (PDT) Received: from localhost ([::1]:54332 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR55-0001HW-Av for importer@patchew.org; Wed, 19 May 2021 14:38:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51030) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyG-0003SA-GJ for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:04 -0400 Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]:45851) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyB-0005Yv-Tu for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:04 -0400 Received: by mail-ot1-x329.google.com with SMTP id t10-20020a05683022eab0290304ed8bc759so12588147otc.12 for ; Wed, 19 May 2021 11:30:59 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.30.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:30:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6jPucf3d8QVYiVwYtTgePgn0/KPRZsWR8rPsX9WQDzE=; b=GOSFBsBuZlNUtKeJejwholxflAtxW+nS8r/Q0GdbH+cy+zTiVxT1iArr3nlvzaRrLD HKLo5W7hO5iXSjNeon3r3rQZ/zHI4qEQQwdOUdobTQy2m/Tv1mjDZViMZp9JG5xPRnLW 2+Qtf6p4vWb4KL/VIsKQTspf4ftAz2FeTYQzagXmeDqywCwx+4ZuqiiuTLV8t/tVLdOZ wwxQ0WXIcFgb1weNSWsYN8LBl+nr8kANW9LXfrZpjZYLYPoX4kQDXUWabsqtqywRhWOd HEnXJ0/txceGCiMTosgZ1M6vm077AJppVXPtqmssYimQyBxzoTmuDIG7+LINSyLaBmA4 sqhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6jPucf3d8QVYiVwYtTgePgn0/KPRZsWR8rPsX9WQDzE=; b=Zl+7bFqL9ZBneeIKW9EwKPsY/Hvky5Hu/A7BLD3OKwcaUFmsPsKMHE9dN7Ozip5M61 Jak3OfXedMkpwdMIMJpFwPkJaH6EdQkZfWCrrQRrN71nCGcxVB5GG/p+9qKoy3hszioH pRO3TBP1BySZZjRurnyzTAkVRogTEacyXYTn+Sm3f9AkTx2CFDwC9usXhJc7R8eU/O90 iNJqUSTNK93AP/5DipwApryU/LukfvwnRkyBXFgrcBOEpEP8zuHT5vbpIOGfxAeu7sRA vLNWup76/qb/jGrAtNhmrnoQxpmJ41VkgHRLZ8FLQS28V7tIvIAnQw5ypO6acj7WMw5/ uZ3A== X-Gm-Message-State: AOAM533RR+GsdWQlLaugNvdfTDfCRomqWNEtj4XHAinAv5UKLO4H6TGe Jsa5GkEwt5+fjtuZEtC0COwdOGBk3awkZR5v X-Google-Smtp-Source: ABdhPJz9POpJMBcH9Ykn7v700hcVLcK9G24+bxixq1gP1bZRQ28hd9SzuUbQbnAEq1mvmuPLFs3+Yg== X-Received: by 2002:a05:6830:3497:: with SMTP id c23mr689509otu.98.1621449058715; Wed, 19 May 2021 11:30:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 06/50] target/i386: Assert PE is set for user-only Date: Wed, 19 May 2021 13:30:06 -0500 Message-Id: <20210519183050.875453-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::329; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x329.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" A user-mode executable is never in real-mode. Since we're adding an accessor macro, pull the value directly out of flags for sysemu. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-7-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 69 +++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 873ed00975..7f3993fccb 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -94,7 +94,6 @@ typedef struct DisasContext { target_ulong pc; /* pc =3D eip + cs_base */ /* current block context */ target_ulong cs_base; /* base of CS segment */ - int pe; /* protected mode */ int code32; /* 32 bit code segment */ #ifdef TARGET_X86_64 int lma; /* long mode active */ @@ -146,6 +145,13 @@ typedef struct DisasContext { sigjmp_buf jmpbuf; } DisasContext; =20 +/* The environment in which user-only runs is constrained. */ +#ifdef CONFIG_USER_ONLY +#define PE(S) true +#else +#define PE(S) (((S)->flags & HF_PE_MASK) !=3D 0) +#endif + static void gen_eob(DisasContext *s); static void gen_jr(DisasContext *s, TCGv dest); static void gen_jmp(DisasContext *s, target_ulong eip); @@ -617,7 +623,7 @@ static void gen_check_io(DisasContext *s, MemOp ot, tar= get_ulong cur_eip, { target_ulong next_eip; =20 - if (s->pe && (s->cpl > s->iopl || s->vm86)) { + if (PE(s) && (s->cpl > s->iopl || s->vm86)) { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); switch (ot) { case MO_8: @@ -2345,7 +2351,7 @@ static inline void gen_op_movl_seg_T0_vm(DisasContext= *s, X86Seg seg_reg) call this function with seg_reg =3D=3D R_CS */ static void gen_movl_seg_T0(DisasContext *s, X86Seg seg_reg) { - if (s->pe && !s->vm86) { + if (PE(s) && !s->vm86) { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_load_seg(cpu_env, tcg_const_i32(seg_reg), s->tmp2_i32); /* abort translation because the addseg value may change or @@ -5108,7 +5114,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_add_A0_im(s, 1 << ot); gen_op_ld_v(s, MO_16, s->T0, s->A0); do_lcall: - if (s->pe && !s->vm86) { + if (PE(s) && !s->vm86) { 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), @@ -5138,7 +5144,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_add_A0_im(s, 1 << ot); gen_op_ld_v(s, MO_16, s->T0, s->A0); do_ljmp: - if (s->pe && !s->vm86) { + if (PE(s) && !s->vm86) { 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)= ); @@ -6571,7 +6577,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xca: /* lret im */ val =3D x86_ldsw_code(env, s); do_lret: - if (s->pe && !s->vm86) { + if (PE(s) && !s->vm86) { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); gen_helper_lret_protected(cpu_env, tcg_const_i32(dflag - 1), @@ -6597,7 +6603,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto do_lret; case 0xcf: /* iret */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_IRET); - if (!s->pe || s->vm86) { + if (!PE(s) || s->vm86) { /* real mode or vm86 mode */ if (!check_vm86_iopl(s)) { break; @@ -7236,7 +7242,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* For Intel SYSENTER is valid on 64-bit */ if (CODE64(s) && env->cpuid_vendor1 !=3D CPUID_VENDOR_INTEL_1) goto illegal_op; - if (!s->pe) { + if (!PE(s)) { gen_exception_gpf(s); } else { gen_helper_sysenter(cpu_env); @@ -7247,7 +7253,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* For Intel SYSEXIT is valid on 64-bit */ if (CODE64(s) && env->cpuid_vendor1 !=3D CPUID_VENDOR_INTEL_1) goto illegal_op; - if (!s->pe) { + if (!PE(s)) { gen_exception_gpf(s); } else { gen_helper_sysexit(cpu_env, tcg_const_i32(dflag - 1)); @@ -7266,7 +7272,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_eob_worker(s, false, true); break; case 0x107: /* sysret */ - if (!s->pe) { + if (!PE(s)) { gen_exception_gpf(s); } else { gen_helper_sysret(cpu_env, tcg_const_i32(dflag - 1)); @@ -7301,7 +7307,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) op =3D (modrm >> 3) & 7; switch(op) { case 0: /* sldt */ - if (!s->pe || s->vm86) + if (!PE(s) || s->vm86) goto illegal_op; gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, @@ -7310,7 +7316,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); break; case 2: /* lldt */ - if (!s->pe || s->vm86) + if (!PE(s) || s->vm86) goto illegal_op; if (check_cpl0(s)) { gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_WRITE); @@ -7320,7 +7326,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } break; case 1: /* str */ - if (!s->pe || s->vm86) + if (!PE(s) || s->vm86) goto illegal_op; gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, @@ -7329,7 +7335,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); break; case 3: /* ltr */ - if (!s->pe || s->vm86) + if (!PE(s) || s->vm86) goto illegal_op; if (check_cpl0(s)) { gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_WRITE); @@ -7340,7 +7346,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 4: /* verr */ case 5: /* verw */ - if (!s->pe || s->vm86) + if (!PE(s) || s->vm86) goto illegal_op; gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); gen_update_cc_op(s); @@ -7458,7 +7464,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xd8: /* VMRUN */ - if (!(s->flags & HF_SVME_MASK) || !s->pe) { + if (!(s->flags & HF_SVME_MASK) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7482,7 +7488,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xda: /* VMLOAD */ - if (!(s->flags & HF_SVME_MASK) || !s->pe) { + if (!(s->flags & HF_SVME_MASK) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7494,7 +7500,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xdb: /* VMSAVE */ - if (!(s->flags & HF_SVME_MASK) || !s->pe) { + if (!(s->flags & HF_SVME_MASK) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7508,7 +7514,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xdc: /* STGI */ if ((!(s->flags & HF_SVME_MASK) && !(s->cpuid_ext3_features & CPUID_EXT3_SKINIT)) - || !s->pe) { + || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7521,7 +7527,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xdd: /* CLGI */ - if (!(s->flags & HF_SVME_MASK) || !s->pe) { + if (!(s->flags & HF_SVME_MASK) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7535,7 +7541,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xde: /* SKINIT */ if ((!(s->flags & HF_SVME_MASK) && !(s->cpuid_ext3_features & CPUID_EXT3_SKINIT)) - || !s->pe) { + || !PE(s)) { goto illegal_op; } gen_update_cc_op(s); @@ -7544,7 +7550,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xdf: /* INVLPGA */ - if (!(s->flags & HF_SVME_MASK) || !s->pe) { + if (!(s->flags & HF_SVME_MASK) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7711,7 +7717,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) TCGLabel *label1; TCGv t0, t1, t2, a0; =20 - if (!s->pe || s->vm86) + if (!PE(s) || s->vm86) goto illegal_op; t0 =3D tcg_temp_local_new(); t1 =3D tcg_temp_local_new(); @@ -7759,7 +7765,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) { TCGLabel *label1; TCGv t0; - if (!s->pe || s->vm86) + if (!PE(s) || s->vm86) goto illegal_op; ot =3D dflag !=3D MO_16 ? MO_32 : MO_16; modrm =3D x86_ldub_code(env, s); @@ -8461,9 +8467,13 @@ static void i386_tr_init_disas_context(DisasContextB= ase *dcbase, CPUState *cpu) DisasContext *dc =3D container_of(dcbase, DisasContext, base); CPUX86State *env =3D cpu->env_ptr; uint32_t flags =3D dc->base.tb->flags; - target_ulong cs_base =3D dc->base.tb->cs_base; =20 - dc->pe =3D (flags >> HF_PE_SHIFT) & 1; + dc->cs_base =3D dc->base.tb->cs_base; + dc->flags =3D flags; + + /* We make some simplifying assumptions; validate they're correct. */ + g_assert(PE(dc) =3D=3D ((flags & HF_PE_MASK) !=3D 0)); + dc->code32 =3D (flags >> HF_CS32_SHIFT) & 1; dc->ss32 =3D (flags >> HF_SS32_SHIFT) & 1; dc->addseg =3D (flags >> HF_ADDSEG_SHIFT) & 1; @@ -8474,7 +8484,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) dc->tf =3D (flags >> TF_SHIFT) & 1; dc->cc_op =3D CC_OP_DYNAMIC; dc->cc_op_dirty =3D false; - dc->cs_base =3D cs_base; dc->popl_esp_hack =3D 0; /* select memory access functions */ dc->mem_index =3D 0; @@ -8491,7 +8500,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) dc->lma =3D (flags >> HF_LMA_SHIFT) & 1; dc->code64 =3D (flags >> HF_CS64_SHIFT) & 1; #endif - dc->flags =3D flags; dc->jmp_opt =3D !(dc->tf || dc->base.singlestep_enabled || (flags & HF_INHIBIT_IRQ_MASK)); /* Do not optimize repz jumps at all in icount mode, because @@ -8505,11 +8513,6 @@ static void i386_tr_init_disas_context(DisasContextB= ase *dcbase, CPUState *cpu) additional step for ecx=3D0 when icount is enabled. */ dc->repz_opt =3D !dc->jmp_opt && !(tb_cflags(dc->base.tb) & CF_USE_ICO= UNT); -#if 0 - /* check addseg logic */ - if (!dc->addseg && (dc->vm86 || !dc->pe || !dc->code32)) - printf("ERROR addseg\n"); -#endif =20 dc->T0 =3D tcg_temp_new(); dc->T1 =3D tcg_temp_new(); --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449352; cv=none; d=zohomail.com; s=zohoarc; b=j91e8t0B497uF1MZrrdWGNV2kU1BJf6fBScumJP5FK82QYFlkwp2y8ZnlJwOqu4Fc3NTjP0YCXmAg7dmMo9q7dk/4Ph2fyyyqn8bGEU/RqANid0E47oSHQDLxcOqjD1KFqW0EfCVt8fm3KWN9x6OmUZ6Z2tC3JKPznqZJSz7KtY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449352; h=Content-Transfer-Encoding:Cc: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=I9LVl7NkZXjA3C65kTwIIt1lI1AlgmXPdeZo4OH5Iz0=; b=Taqu+Z7/aggneism3iQAvVuhK7BB+VO33mMMLSg/9h1ihaKTXuKy21uwdJi/NEhreVQi2ga8uPbgJcH8Kcnw+rC8oyUxfj9Qj3z1UgVRcetT1iZE+DsDGC18MeKFh6ONn8TBmlVEY1H622tCFXNSOUj0VHkHDNZqjXEUy+eXUFM= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449352345636.95742150047; Wed, 19 May 2021 11:35:52 -0700 (PDT) Received: from localhost ([::1]:45556 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR2s-0003di-Rx for importer@patchew.org; Wed, 19 May 2021 14:35:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyI-0003Vn-5S for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:06 -0400 Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]:36650) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyE-0005Zn-0g for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:05 -0400 Received: by mail-ot1-x329.google.com with SMTP id n32-20020a9d1ea30000b02902a53d6ad4bdso12622010otn.3 for ; Wed, 19 May 2021 11:31:00 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.30.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:30:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=I9LVl7NkZXjA3C65kTwIIt1lI1AlgmXPdeZo4OH5Iz0=; b=QM56g6oTVBzys5Twvu8M6WpORK42HtjbtrR39ziXGAJNF8JqCq6ruw+75T+hU0Z9Pn DlTGojyBbbhQCBRYvmJYLw7LCLbxssjoe+/C6YYYEXqmsBRPssHY4dnXKhf+TDMfVSCR TN9dyIDhxp1PgZNFBrLokEZYF/IWR/7J/GTGKsGRSE9yzZTg0zu9gcSN44ZmlVOybhBt rWvwAhL0f4mlUKYS5JYj7OQUXdZjjVo4skeIINGH1I1lF2JN+ecCVvC7IaUOpcEuU/oU Xr9gcQHkar9UOMf5D7Hkt8jBLBQvouNc1kBGVAvk6SwcfwJ4r84uxYp/kDHE+fEq2iny moVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=I9LVl7NkZXjA3C65kTwIIt1lI1AlgmXPdeZo4OH5Iz0=; b=SQHacoiTNv3fP/vlETn9JCLW7UNNaULuck76C5EZJvHuE6NEgxK5H+GtzNYtr+YjW0 MtwN0Wl2c5mQ+ANHEsvF86VR6mcnwnj7jWhsihe4U24+HwzTvzUqQ3TossftB28xvIys SVypYphbmh023d/zT6mS67xjpdQz4v0E84nQ0mBy0R9MwjIrChvrSqe5dytBU26cqyvh lS0vbTysHgacwf4FdTELrT8Bvxu1dKT5oOhdO61oQCwno/wYuDeE4VnoDGV+Uyan9LJr 2IM2881hxyxhI0wWLguLjNqc8Mbos3iN7m3JLay7szYhJBwb/aSjS5N95CThBnDAHHF2 jXkA== X-Gm-Message-State: AOAM530l2lHP9yF63aoATeR/ixx3PlmaU3UIMuoRZnnl5qnFKRhFnp38 d+SSHfj4tgVmZTmcuhELnu24QMP0zUWnnBlH X-Google-Smtp-Source: ABdhPJydMerYpBjNdgGkknsO9M/Q5V4i/2gqq0KIllbTs8P01MdHl0dgiAb+vUGXr4qQTYzhjjYisA== X-Received: by 2002:a05:6830:4a1:: with SMTP id l1mr676276otd.25.1621449059691; Wed, 19 May 2021 11:30:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 07/50] target/i386: Assert CPL is 3 for user-only Date: Wed, 19 May 2021 13:30:07 -0500 Message-Id: <20210519183050.875453-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::329; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x329.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" A user-mode executable always runs in ring 3. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-8-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 7f3993fccb..4c9194416d 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -94,6 +94,11 @@ typedef struct DisasContext { target_ulong pc; /* pc =3D eip + cs_base */ /* current block context */ target_ulong cs_base; /* base of CS segment */ + +#ifndef CONFIG_USER_ONLY + uint8_t cpl; /* code priv level */ +#endif + int code32; /* 32 bit code segment */ #ifdef TARGET_X86_64 int lma; /* long mode active */ @@ -111,7 +116,6 @@ typedef struct DisasContext { int addseg; /* non zero if either DS/ES/SS have a non zero base */ int f_st; /* currently unused */ int vm86; /* vm86 mode */ - int cpl; int iopl; int tf; /* TF cpu flag */ int jmp_opt; /* use direct block chaining for direct jumps */ @@ -148,8 +152,10 @@ typedef struct DisasContext { /* The environment in which user-only runs is constrained. */ #ifdef CONFIG_USER_ONLY #define PE(S) true +#define CPL(S) 3 #else #define PE(S) (((S)->flags & HF_PE_MASK) !=3D 0) +#define CPL(S) ((S)->cpl) #endif =20 static void gen_eob(DisasContext *s); @@ -623,7 +629,7 @@ static void gen_check_io(DisasContext *s, MemOp ot, tar= get_ulong cur_eip, { target_ulong next_eip; =20 - if (PE(s) && (s->cpl > s->iopl || s->vm86)) { + if (PE(s) && (CPL(s) > s->iopl || s->vm86)) { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); switch (ot) { case MO_8: @@ -1291,7 +1297,7 @@ static void gen_exception_gpf(DisasContext *s) /* Check for cpl =3D=3D 0; if not, raise #GP and return false. */ static bool check_cpl0(DisasContext *s) { - if (s->cpl =3D=3D 0) { + if (CPL(s) =3D=3D 0) { return true; } gen_exception_gpf(s); @@ -1311,7 +1317,7 @@ static bool check_vm86_iopl(DisasContext *s) /* Check for iopl allowing access; if not, raise #GP and return false. */ static bool check_iopl(DisasContext *s) { - if (s->vm86 ? s->iopl =3D=3D 3 : s->cpl <=3D s->iopl) { + if (s->vm86 ? s->iopl =3D=3D 3 : CPL(s) <=3D s->iopl) { return true; } gen_exception_gpf(s); @@ -6735,7 +6741,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_svm_check_intercept(s, pc_start, SVM_EXIT_POPF); if (check_vm86_iopl(s)) { ot =3D gen_pop_T0(s); - if (s->cpl =3D=3D 0) { + if (CPL(s) =3D=3D 0) { if (dflag !=3D MO_16) { gen_helper_write_eflags(cpu_env, s->T0, tcg_const_i32((TF_MASK | AC_MA= SK | @@ -6750,7 +6756,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) & 0xffff)); } } else { - if (s->cpl <=3D s->iopl) { + if (CPL(s) <=3D s->iopl) { if (dflag !=3D MO_16) { gen_helper_write_eflags(cpu_env, s->T0, tcg_const_i32((TF_MASK | @@ -7380,7 +7386,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xc8: /* monitor */ - if (!(s->cpuid_ext_features & CPUID_EXT_MONITOR) || s->cpl != =3D 0) { + if (!(s->cpuid_ext_features & CPUID_EXT_MONITOR) || CPL(s) != =3D 0) { goto illegal_op; } gen_update_cc_op(s); @@ -7392,7 +7398,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xc9: /* mwait */ - if (!(s->cpuid_ext_features & CPUID_EXT_MONITOR) || s->cpl != =3D 0) { + if (!(s->cpuid_ext_features & CPUID_EXT_MONITOR) || CPL(s) != =3D 0) { goto illegal_op; } gen_update_cc_op(s); @@ -7403,7 +7409,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0xca: /* clac */ if (!(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_SMAP) - || s->cpl !=3D 0) { + || CPL(s) !=3D 0) { goto illegal_op; } gen_helper_clac(cpu_env); @@ -7413,7 +7419,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0xcb: /* stac */ if (!(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_SMAP) - || s->cpl !=3D 0) { + || CPL(s) !=3D 0) { goto illegal_op; } gen_helper_stac(cpu_env); @@ -8467,19 +8473,23 @@ static void i386_tr_init_disas_context(DisasContext= Base *dcbase, CPUState *cpu) DisasContext *dc =3D container_of(dcbase, DisasContext, base); CPUX86State *env =3D cpu->env_ptr; uint32_t flags =3D dc->base.tb->flags; + int cpl =3D (flags >> HF_CPL_SHIFT) & 3; =20 dc->cs_base =3D dc->base.tb->cs_base; dc->flags =3D flags; +#ifndef CONFIG_USER_ONLY + dc->cpl =3D cpl; +#endif =20 /* We make some simplifying assumptions; validate they're correct. */ g_assert(PE(dc) =3D=3D ((flags & HF_PE_MASK) !=3D 0)); + g_assert(CPL(dc) =3D=3D cpl); =20 dc->code32 =3D (flags >> HF_CS32_SHIFT) & 1; dc->ss32 =3D (flags >> HF_SS32_SHIFT) & 1; dc->addseg =3D (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st =3D 0; dc->vm86 =3D (flags >> VM_SHIFT) & 1; - dc->cpl =3D (flags >> HF_CPL_SHIFT) & 3; dc->iopl =3D (flags >> IOPL_SHIFT) & 3; dc->tf =3D (flags >> TF_SHIFT) & 1; dc->cc_op =3D CC_OP_DYNAMIC; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449720; cv=none; d=zohomail.com; s=zohoarc; b=It7kE3AT6GY6dv+z88ftdjo3KxhXxYIY1npmbGTdQkFmy5dg95er1BvEgVj9TjGY+gj3D0Ky+QDu8NRbhY7hb4VYLbJZoHJodaMlb+QnfUxFLLz0YK5rsQeG//PnPWwdZnAzXw7nH2rHMChzvGo/x7g/dVxrI1uEcTTJSdYxYMo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449720; h=Content-Transfer-Encoding:Cc: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=nrfuvBj4GUNKQqnvsf33MOe2/3eRkVdIcnIjEJTkPfA=; b=LASAXorKtdibJm9PAp00YsQG4XTHcnzx3aPnoQnFAcjRtmeLD9i1mchXm83O+XAQpnYKzNqj2MuMHFtfFjNIjaUEdaCUP6hAiuu1wPyVB5s7+WROx4b8YwDb9iISt/m/ADlQfIIgpiiwNYh09wFIsQHUHQQ+sx11KIdOS4XS7Y0= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449720796524.7295931755717; Wed, 19 May 2021 11:42:00 -0700 (PDT) Received: from localhost ([::1]:34726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR8p-0007IL-Ka for importer@patchew.org; Wed, 19 May 2021 14:41:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51056) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyH-0003Ti-Cw for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:05 -0400 Received: from mail-ot1-x32f.google.com ([2607:f8b0:4864:20::32f]:37412) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyE-0005aW-3L for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:05 -0400 Received: by mail-ot1-x32f.google.com with SMTP id v19-20020a0568301413b0290304f00e3d88so12618964otp.4 for ; Wed, 19 May 2021 11:31:01 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.30.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nrfuvBj4GUNKQqnvsf33MOe2/3eRkVdIcnIjEJTkPfA=; b=zkrZJp1UBmEoUfJko2hP5coN6hT/SKc+KWNjwVlLIzCDJV2uOkvAxdFg7maGJftfDS mqGdnEyJk9v8g0xnUzEX2omrO3rj6Wi9J/06xMeXLRN9iAz5ZPUJV0VrHHS7cHA2A7/N H4FQ5Krk0B8OC/F4w89QHGv4fS8UkQYfOIMkX4HRc2eJ5RYs3MuU90Ti7sgL9QAIuOwc u+0P/1QTdzR4v6J/2izQPIqZNIdDBfOdsQKi4MhE44l3XIarKdsqtySUztWlA0yv1oc4 cVjjWx0lPsIUN3S4RLy3Dj1MStk2LYY2FHyaBF5MyrfLTeuqeb78VLjYTLtp49rz+Q6J WdVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nrfuvBj4GUNKQqnvsf33MOe2/3eRkVdIcnIjEJTkPfA=; b=F1aDd2Nc/xrFvFqxtSCXGgzYyrSucSt3sQmUHLbkeNLKjgIXombcNpH5iwBcqVCnHL jGw/q+cq/unY2YOxdmyjoEL/uw6Nrzkfex4wrG6yct7YXTnAGMwv2q82JCa9rUH8xylI DgwGgh2EUor7C/We+Q6TWCy5lyjMVeikWdGS4dGS2To98vlG6gtTDo0krx7wW5BE5li2 mqKPGD3eRxOEGm7TTJmQM+XHEnDfR2TQHHSPrkVBY6vvFLZdWQNx6ATll1NU4F+A5JRW 8kon9VLTwZaBth0bGEL/WiFvlNr4uyldwSENyLmhh7h+7gUlM1zRUyDDeljEmLW3Z3Bj f2fA== X-Gm-Message-State: AOAM532KJXVpiwbsYwLo1DETKwvQmnMIAndYd8FiudzviTY9uIB8yV27 WiciqhAFU0Q2v59qmYWM7EPtkfEWzzmjA2hi X-Google-Smtp-Source: ABdhPJwKO/TxBVJbDCPLxX1mwjxgVQiPNDX0VdiBL8XbSD/RbxfFmpyk1xFOIdTN/rFrF8gOkR3Ygw== X-Received: by 2002:a9d:560a:: with SMTP id e10mr645010oti.353.1621449060655; Wed, 19 May 2021 11:31:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 08/50] target/i386: Assert IOPL is 0 for user-only Date: Wed, 19 May 2021 13:30:08 -0500 Message-Id: <20210519183050.875453-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32f; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32f.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" On real hardware, the linux kernel has the iopl(2) syscall which can set IOPL to 3, to allow e.g. the xserver to briefly disable interrupts while programming the graphics card. However, QEMU cannot and does not implement this syscall, so the IOPL is never changed from 0. Which means that all of the checks vs CPL <=3D IOPL are false for user-only. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-9-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 4c9194416d..b8cb7163ee 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -97,6 +97,7 @@ typedef struct DisasContext { =20 #ifndef CONFIG_USER_ONLY uint8_t cpl; /* code priv level */ + uint8_t iopl; /* i/o priv level */ #endif =20 int code32; /* 32 bit code segment */ @@ -116,7 +117,6 @@ typedef struct DisasContext { int addseg; /* non zero if either DS/ES/SS have a non zero base */ int f_st; /* currently unused */ int vm86; /* vm86 mode */ - int iopl; int tf; /* TF cpu flag */ int jmp_opt; /* use direct block chaining for direct jumps */ int repz_opt; /* optimize jumps within repz instructions */ @@ -153,9 +153,11 @@ typedef struct DisasContext { #ifdef CONFIG_USER_ONLY #define PE(S) true #define CPL(S) 3 +#define IOPL(S) 0 #else #define PE(S) (((S)->flags & HF_PE_MASK) !=3D 0) #define CPL(S) ((S)->cpl) +#define IOPL(S) ((S)->iopl) #endif =20 static void gen_eob(DisasContext *s); @@ -629,7 +631,7 @@ static void gen_check_io(DisasContext *s, MemOp ot, tar= get_ulong cur_eip, { target_ulong next_eip; =20 - if (PE(s) && (CPL(s) > s->iopl || s->vm86)) { + if (PE(s) && (CPL(s) > IOPL(s) || s->vm86)) { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); switch (ot) { case MO_8: @@ -1307,7 +1309,7 @@ static bool check_cpl0(DisasContext *s) /* If vm86, check for iopl =3D=3D 3; if not, raise #GP and return false. */ static bool check_vm86_iopl(DisasContext *s) { - if (!s->vm86 || s->iopl =3D=3D 3) { + if (!s->vm86 || IOPL(s) =3D=3D 3) { return true; } gen_exception_gpf(s); @@ -1317,7 +1319,7 @@ static bool check_vm86_iopl(DisasContext *s) /* Check for iopl allowing access; if not, raise #GP and return false. */ static bool check_iopl(DisasContext *s) { - if (s->vm86 ? s->iopl =3D=3D 3 : CPL(s) <=3D s->iopl) { + if (s->vm86 ? IOPL(s) =3D=3D 3 : CPL(s) <=3D IOPL(s)) { return true; } gen_exception_gpf(s); @@ -6756,7 +6758,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) & 0xffff)); } } else { - if (CPL(s) <=3D s->iopl) { + if (CPL(s) <=3D IOPL(s)) { if (dflag !=3D MO_16) { gen_helper_write_eflags(cpu_env, s->T0, tcg_const_i32((TF_MASK | @@ -8474,23 +8476,25 @@ static void i386_tr_init_disas_context(DisasContext= Base *dcbase, CPUState *cpu) CPUX86State *env =3D cpu->env_ptr; uint32_t flags =3D dc->base.tb->flags; int cpl =3D (flags >> HF_CPL_SHIFT) & 3; + int iopl =3D (flags >> IOPL_SHIFT) & 3; =20 dc->cs_base =3D dc->base.tb->cs_base; dc->flags =3D flags; #ifndef CONFIG_USER_ONLY dc->cpl =3D cpl; + dc->iopl =3D iopl; #endif =20 /* We make some simplifying assumptions; validate they're correct. */ g_assert(PE(dc) =3D=3D ((flags & HF_PE_MASK) !=3D 0)); g_assert(CPL(dc) =3D=3D cpl); + g_assert(IOPL(dc) =3D=3D iopl); =20 dc->code32 =3D (flags >> HF_CS32_SHIFT) & 1; dc->ss32 =3D (flags >> HF_SS32_SHIFT) & 1; dc->addseg =3D (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st =3D 0; dc->vm86 =3D (flags >> VM_SHIFT) & 1; - dc->iopl =3D (flags >> IOPL_SHIFT) & 3; dc->tf =3D (flags >> TF_SHIFT) & 1; dc->cc_op =3D CC_OP_DYNAMIC; dc->cc_op_dirty =3D false; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449482; cv=none; d=zohomail.com; s=zohoarc; b=MVCujQGm56hRi9LYxat6+uw6hCrmsRPN4C61bSanneyNBhkvjNkUxNcLXkk+FXcqSYhg6B3yptp3vjerM49VUnRLraiyRXbexqvhZO1TOH1p9Et97wQEzBEE0d7YUW6lOR1yB/ofneznCMZpl5U0AjNwUOEQA0yiZ4bgeNS4Z74= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449482; h=Content-Transfer-Encoding:Cc: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=H97J/X+gbpTJ/IXxWIClRRLCVFWwmw/HeKJHT9Kyg8U=; b=B1i/ZCWk8w0yO5mxV2WHhUs2UpYVHYPuxgx8Ga3hHBJN4PX4GPrgW50vu+crtT6EGozRQyWbXKJov/lKEcC78ibJdvV/Ul78hsDU3GEz/mBlWjmhMwtkyt3PCe178s4zhBKxL+0Kk36dvkrfL3zQMyfEyfa63jrcnrJBHFGMei4= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449482610682.7161840219633; Wed, 19 May 2021 11:38:02 -0700 (PDT) Received: from localhost ([::1]:53948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR4z-00011w-HG for importer@patchew.org; Wed, 19 May 2021 14:38:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51104) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyI-0003Xp-Ry for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:07 -0400 Received: from mail-ot1-x32f.google.com ([2607:f8b0:4864:20::32f]:45857) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyE-0005b4-Ki for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:06 -0400 Received: by mail-ot1-x32f.google.com with SMTP id t10-20020a05683022eab0290304ed8bc759so12588294otc.12 for ; Wed, 19 May 2021 11:31:02 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=H97J/X+gbpTJ/IXxWIClRRLCVFWwmw/HeKJHT9Kyg8U=; b=p/vBJVzFy1aMs48ViUutwuMmyTn9InSBJji5XYhfZypTkdZBaTzr9SKcrUuFtpAPum ovYKc3m4pHPjwkIXvxaYxS31eGVcK/VXgbttF++WUMNhpd0exD7Qju/+YagI2o3OSnSN XnjYIqJO/Ie1VdVTcU76aoICFjXXNxDG4rzdPWimujd6HeCQU5ISMKIseprGXaxMJTfZ CAkmWSl/4pM97PdWFiJDTpD3loA4i4ZswIPVXaAzXiMC5ATxHj1GYP/mTH2dC3OhtEC4 oPnARSaltjbqixFY62FcLWrNujn6bxeu79f4BDe7jSmnMloFRzO5TV7eR9ZrJjgzwxEI iXoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=H97J/X+gbpTJ/IXxWIClRRLCVFWwmw/HeKJHT9Kyg8U=; b=ExJzjux0HVVR1IS0H26nlwqshKjG2roQWPHOxzpyi/rFJf3kIBYpPPDkYKv6rmY0Vl fjzdwWP5UwaRAvOeLTX+tqs5Z9sHv8eGdt2o+sjCb7pURVisBcacKXMhE35xsyd20UAq o0fCww5m+VbrGYw6YXmMfDATDLZuH912mf4oyyDo2TikREuhuwydO1cCEuud0YSvl1VI BsTZSzVqYxXqfkCDQ0o65aNjEnb26zzICK67bAV91lrvsIQasRr1wQ2u4Tfc3lpP5cO5 E2kvoJ4eND8q+SPgsXQOC8j/zEf7VdacCQvW83VC36SnTIGlF7FU6VLjXIfORUWWZu4r /syg== X-Gm-Message-State: AOAM532SLIO1rLDtHE1OJx9Y2/A6fw8YobOJlFSjCFtSIG4E0yiNX32Z H4Il7PL3EFjvry8m7UUK/5hLqL8+Q3hLhwMl X-Google-Smtp-Source: ABdhPJxtagiK9hFoSkPriw4NY62dZPev7QoTdkMk4IzXkoHqKOo8zGJiuNuDCJNyrs0jMFsspYqd4g== X-Received: by 2002:a9d:220a:: with SMTP id o10mr662181ota.199.1621449061617; Wed, 19 May 2021 11:31:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 09/50] target/i386: Assert !VM86 for x86_64 user-only Date: Wed, 19 May 2021 13:30:09 -0500 Message-Id: <20210519183050.875453-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32f; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32f.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" For i386-linux-user, we can enter vm86 mode via the vm86(2) syscall. That syscall explicitly returns to 32-bit mode, and the syscall does not exist for a 64-bit x86_64 executable. Since we're adding an accessor macro, pull the value directly out of flags otherwise. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-10-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 40 ++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index b8cb7163ee..27806f35f9 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -116,7 +116,6 @@ typedef struct DisasContext { #endif int addseg; /* non zero if either DS/ES/SS have a non zero base */ int f_st; /* currently unused */ - int vm86; /* vm86 mode */ int tf; /* TF cpu flag */ int jmp_opt; /* use direct block chaining for direct jumps */ int repz_opt; /* optimize jumps within repz instructions */ @@ -159,6 +158,11 @@ typedef struct DisasContext { #define CPL(S) ((S)->cpl) #define IOPL(S) ((S)->iopl) #endif +#if defined(CONFIG_USER_ONLY) && defined(TARGET_X86_64) +#define VM86(S) false +#else +#define VM86(S) (((S)->flags & HF_VM_MASK) !=3D 0) +#endif =20 static void gen_eob(DisasContext *s); static void gen_jr(DisasContext *s, TCGv dest); @@ -631,7 +635,7 @@ static void gen_check_io(DisasContext *s, MemOp ot, tar= get_ulong cur_eip, { target_ulong next_eip; =20 - if (PE(s) && (CPL(s) > IOPL(s) || s->vm86)) { + if (PE(s) && (CPL(s) > IOPL(s) || VM86(s))) { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); switch (ot) { case MO_8: @@ -1309,7 +1313,7 @@ static bool check_cpl0(DisasContext *s) /* If vm86, check for iopl =3D=3D 3; if not, raise #GP and return false. */ static bool check_vm86_iopl(DisasContext *s) { - if (!s->vm86 || IOPL(s) =3D=3D 3) { + if (!VM86(s) || IOPL(s) =3D=3D 3) { return true; } gen_exception_gpf(s); @@ -1319,7 +1323,7 @@ static bool check_vm86_iopl(DisasContext *s) /* Check for iopl allowing access; if not, raise #GP and return false. */ static bool check_iopl(DisasContext *s) { - if (s->vm86 ? IOPL(s) =3D=3D 3 : CPL(s) <=3D IOPL(s)) { + if (VM86(s) ? IOPL(s) =3D=3D 3 : CPL(s) <=3D IOPL(s)) { return true; } gen_exception_gpf(s); @@ -2359,7 +2363,7 @@ static inline void gen_op_movl_seg_T0_vm(DisasContext= *s, X86Seg seg_reg) call this function with seg_reg =3D=3D R_CS */ static void gen_movl_seg_T0(DisasContext *s, X86Seg seg_reg) { - if (PE(s) && !s->vm86) { + if (PE(s) && !VM86(s)) { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_load_seg(cpu_env, tcg_const_i32(seg_reg), s->tmp2_i32); /* abort translation because the addseg value may change or @@ -4615,7 +4619,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xc4: /* 3-byte VEX */ /* VEX prefixes cannot be used except in 32-bit mode. Otherwise the instruction is LES or LDS. */ - if (s->code32 && !s->vm86) { + if (s->code32 && !VM86(s)) { static const int pp_prefix[4] =3D { 0, PREFIX_DATA, PREFIX_REPZ, PREFIX_REPNZ }; @@ -5122,7 +5126,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_add_A0_im(s, 1 << ot); gen_op_ld_v(s, MO_16, s->T0, s->A0); do_lcall: - if (PE(s) && !s->vm86) { + 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), @@ -5152,7 +5156,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_add_A0_im(s, 1 << ot); gen_op_ld_v(s, MO_16, s->T0, s->A0); do_ljmp: - if (PE(s) && !s->vm86) { + 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)= ); @@ -6585,7 +6589,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xca: /* lret im */ val =3D x86_ldsw_code(env, s); do_lret: - if (PE(s) && !s->vm86) { + if (PE(s) && !VM86(s)) { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); gen_helper_lret_protected(cpu_env, tcg_const_i32(dflag - 1), @@ -6611,7 +6615,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto do_lret; case 0xcf: /* iret */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_IRET); - if (!PE(s) || s->vm86) { + if (!PE(s) || VM86(s)) { /* real mode or vm86 mode */ if (!check_vm86_iopl(s)) { break; @@ -7315,7 +7319,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) op =3D (modrm >> 3) & 7; switch(op) { case 0: /* sldt */ - if (!PE(s) || s->vm86) + if (!PE(s) || VM86(s)) goto illegal_op; gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, @@ -7324,7 +7328,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); break; case 2: /* lldt */ - if (!PE(s) || s->vm86) + if (!PE(s) || VM86(s)) goto illegal_op; if (check_cpl0(s)) { gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_WRITE); @@ -7334,7 +7338,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } break; case 1: /* str */ - if (!PE(s) || s->vm86) + if (!PE(s) || VM86(s)) goto illegal_op; gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, @@ -7343,7 +7347,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); break; case 3: /* ltr */ - if (!PE(s) || s->vm86) + if (!PE(s) || VM86(s)) goto illegal_op; if (check_cpl0(s)) { gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_WRITE); @@ -7354,7 +7358,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 4: /* verr */ case 5: /* verw */ - if (!PE(s) || s->vm86) + if (!PE(s) || VM86(s)) goto illegal_op; gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); gen_update_cc_op(s); @@ -7725,7 +7729,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) TCGLabel *label1; TCGv t0, t1, t2, a0; =20 - if (!PE(s) || s->vm86) + if (!PE(s) || VM86(s)) goto illegal_op; t0 =3D tcg_temp_local_new(); t1 =3D tcg_temp_local_new(); @@ -7773,7 +7777,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) { TCGLabel *label1; TCGv t0; - if (!PE(s) || s->vm86) + if (!PE(s) || VM86(s)) goto illegal_op; ot =3D dflag !=3D MO_16 ? MO_32 : MO_16; modrm =3D x86_ldub_code(env, s); @@ -8489,12 +8493,12 @@ static void i386_tr_init_disas_context(DisasContext= Base *dcbase, CPUState *cpu) g_assert(PE(dc) =3D=3D ((flags & HF_PE_MASK) !=3D 0)); g_assert(CPL(dc) =3D=3D cpl); g_assert(IOPL(dc) =3D=3D iopl); + g_assert(VM86(dc) =3D=3D ((flags & HF_VM_MASK) !=3D 0)); =20 dc->code32 =3D (flags >> HF_CS32_SHIFT) & 1; dc->ss32 =3D (flags >> HF_SS32_SHIFT) & 1; dc->addseg =3D (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st =3D 0; - dc->vm86 =3D (flags >> VM_SHIFT) & 1; dc->tf =3D (flags >> TF_SHIFT) & 1; dc->cc_op =3D CC_OP_DYNAMIC; dc->cc_op_dirty =3D false; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449858; cv=none; d=zohomail.com; s=zohoarc; b=eOKawDPmVZd9sVz2N0odynfTCJH2SSnurDcW5GR+0nM9Vp1L93bN0FNo3GbrjPRKedH3AUssfviq+Yubv27clVxsYIAegEaJKglZzKQoOgoQW/S8q6yGArfc42czzUQ3ghj51uhzb5rGTTcdCoLajVKTYEcOtMDYwgqtDs87knA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449858; h=Content-Transfer-Encoding:Cc: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=mZrjIdoHsYv9s/pOgxcbiN0IEOU2edVxfdbfsxChIBE=; b=RzrF308myo9lufpXUq97Hzf1HPg5U8JeoQYiSj00NMsIJ/1WEKyixiQN4VGIV0HddY2q6/fpT/XHSK2pVQ6htFJBLdtIq8rw13MZmAOMu444sizxSpwmzLHMuNluZi4sYyrnomSlUn+MyFimN3zNj+M3YFDpmoDDY7J/BU/cYZ4= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449858745710.7907673190665; Wed, 19 May 2021 11:44:18 -0700 (PDT) Received: from localhost ([::1]:43328 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRB3-0004cf-CR for importer@patchew.org; Wed, 19 May 2021 14:44:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51116) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyJ-0003Yv-6i for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:07 -0400 Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]:44947) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyF-0005c6-Sy for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:06 -0400 Received: by mail-ot1-x332.google.com with SMTP id r26-20020a056830121ab02902a5ff1c9b81so12602737otp.11 for ; Wed, 19 May 2021 11:31:03 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mZrjIdoHsYv9s/pOgxcbiN0IEOU2edVxfdbfsxChIBE=; b=MTGWI1Dq1vKic44Aw+HLAxnQ71Qx3QywXc1P7F3tB4u0Hv/6JdKxQ7x2zdcyc7ZB1A waWgmiZT5kqYh1fIjTud+m6ZYb4Ok3KrKGO5qkopqa0I3cMVlttTqrUExSrrYul9tFW+ bPvVvB95LfaqJTePcGoY1X+WoDB0EsYV8Lcy0Y2cwcYMj3RiZbp1ukhMCOiawRxRpY88 M9/1E6OD7DihzOWLhdNUW7BIl5j2dTHWM7Tq0O9K/K9+ns9OzK4uBOVUAAOuPRk6wGhv tYF9PH9l6W21VN54zxPNvuPV638fJcfFvRjWi+RiZT7MCVuIkUby9Lcs4hegNeplgHX/ dO6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mZrjIdoHsYv9s/pOgxcbiN0IEOU2edVxfdbfsxChIBE=; b=PsGK9hvgu1D6sX/533pMVGW+N63Paxc6ukBwvJ1n16PhujOBcnV11mLbdHozPJd1xS gC/WSMFU50d21nAUWSJLq7ogYOv7WT2Iyj56mq76sB+nOS2Sh+96Q3Bs3XLdWVc74ozu +lo/P64zHmCCYOWTrl61erNxykRr1v0gyCoRUmJjuV31dMNUmOSp7zCqk2WF1Do3PKSL 2pjppgd25sepNadIp5oTUQmCVCNZNNn/c7ztTBRY7tc14D1qar42YvwIO1Mij0irDiMv U7vL7RzLMKPvoilvXbZX0BzHiES4amaBlzj+BHNGJ4rLfHWoPrFbC6g2SMfScsYcpWpz inmQ== X-Gm-Message-State: AOAM530GyQ95ZZ4kIuEcHpFJ2gLYMjogL3dkqbwcRtHu4QCO4lG28fyG GeuZ0EIRf5yUJMMhBTZHh2g5+lnxuwcaTjhU X-Google-Smtp-Source: ABdhPJwwbVotllBRhSpeHma2M+7kimschmlykMTj3gFUaXWriM5NvXJZ2S9GVtweKs4GM80Uap+OXg== X-Received: by 2002:a9d:1d45:: with SMTP id m63mr649692otm.302.1621449062589; Wed, 19 May 2021 11:31:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 10/50] target/i386: Assert CODE32 for x86_64 user-only Date: Wed, 19 May 2021 13:30:10 -0500 Message-Id: <20210519183050.875453-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::332; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x332.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" For user-only, CODE32 =3D=3D !VM86, because we are never in real-mode. Since we cannot enter vm86 mode for x86_64 user-only, CODE32 is always set. Since we're adding an accessor macro, pull the value directly out of flags otherwise. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-11-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 27806f35f9..b570921410 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -100,7 +100,6 @@ typedef struct DisasContext { uint8_t iopl; /* i/o priv level */ #endif =20 - int code32; /* 32 bit code segment */ #ifdef TARGET_X86_64 int lma; /* long mode active */ int code64; /* 64 bit code segment */ @@ -160,8 +159,10 @@ typedef struct DisasContext { #endif #if defined(CONFIG_USER_ONLY) && defined(TARGET_X86_64) #define VM86(S) false +#define CODE32(S) true #else #define VM86(S) (((S)->flags & HF_VM_MASK) !=3D 0) +#define CODE32(S) (((S)->flags & HF_CS32_MASK) !=3D 0) #endif =20 static void gen_eob(DisasContext *s); @@ -2370,7 +2371,7 @@ static void gen_movl_seg_T0(DisasContext *s, X86Seg s= eg_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 || (s->code32 && seg_reg < R_FS)) { + if (seg_reg =3D=3D R_SS || (CODE32(s) && seg_reg < R_FS)) { s->base.is_jmp =3D DISAS_TOO_MANY; } } else { @@ -4619,7 +4620,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xc4: /* 3-byte VEX */ /* VEX prefixes cannot be used except in 32-bit mode. Otherwise the instruction is LES or LDS. */ - if (s->code32 && !VM86(s)) { + if (CODE32(s) && !VM86(s)) { static const int pp_prefix[4] =3D { 0, PREFIX_DATA, PREFIX_REPZ, PREFIX_REPNZ }; @@ -4686,13 +4687,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) aflag =3D (prefixes & PREFIX_ADR ? MO_32 : MO_64); } else { /* In 16/32-bit mode, 0x66 selects the opposite data size. */ - if (s->code32 ^ ((prefixes & PREFIX_DATA) !=3D 0)) { + if (CODE32(s) ^ ((prefixes & PREFIX_DATA) !=3D 0)) { dflag =3D MO_32; } else { dflag =3D MO_16; } /* In 16/32-bit mode, 0x67 selects the opposite addressing. */ - if (s->code32 ^ ((prefixes & PREFIX_ADR) !=3D 0)) { + if (CODE32(s) ^ ((prefixes & PREFIX_ADR) !=3D 0)) { aflag =3D MO_32; } else { aflag =3D MO_16; @@ -8494,8 +8495,8 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) g_assert(CPL(dc) =3D=3D cpl); g_assert(IOPL(dc) =3D=3D iopl); g_assert(VM86(dc) =3D=3D ((flags & HF_VM_MASK) !=3D 0)); + g_assert(CODE32(dc) =3D=3D ((flags & HF_CS32_MASK) !=3D 0)); =20 - dc->code32 =3D (flags >> HF_CS32_SHIFT) & 1; dc->ss32 =3D (flags >> HF_SS32_SHIFT) & 1; dc->addseg =3D (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st =3D 0; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449352; cv=none; d=zohomail.com; s=zohoarc; b=giPKIPLYZ0OvBXfagdYcDz5vH+n0z1WAKx/VsBHCy+fcuz7B96xrL/QwGpYz65hVQc12ahzdM174TKrdD3UFuB2uVSNTg5e60lRPSuaE6N4aY16yEeE012TpjCeDeXOnrEBGvlx2/EmyiZtXPU3c53J/ZMEoDIDlY0f5LvaKI5o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449352; h=Content-Transfer-Encoding:Cc: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=WSEAQX4xoDFetSNg7thFVzG9HtsA7xC95w5bxK6vv/Y=; b=Pg98olgJ67ZEc5nCr/mgRz8v/BhoHpNWtC4GgCJLVOik8Gth09bBX0YBA5ycU7ZF0xy26Ml8K0vi6MWNxVGmltmJ4LaA+y1PrPiS/kgkByExO80vqtTCWuChM0FcRbkHVeByuRd1bsAcFOb1yt4aRTAHh+rSUJA1Fbc6d7ofvEs= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449352677321.6463022032748; Wed, 19 May 2021 11:35:52 -0700 (PDT) Received: from localhost ([::1]:45598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR2t-0003fH-Dk for importer@patchew.org; Wed, 19 May 2021 14:35:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51184) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyL-0003gm-Sf for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:09 -0400 Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]:46766) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyG-0005d5-PA for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:09 -0400 Received: by mail-oi1-x229.google.com with SMTP id x15so13957928oic.13 for ; Wed, 19 May 2021 11:31:04 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WSEAQX4xoDFetSNg7thFVzG9HtsA7xC95w5bxK6vv/Y=; b=GNeqFw4tGH2sLzPy8JddiI1DFhZcD7MSEvWZrrn9P1NTimYlBz0jaFqjAwChTaTlw2 mCN9jHHHBpGwDymASedCe9FelXQp3zjlw67ExS8aaTSvGH6MY0uquMySq2ApjSuCr45X lBVkJf6EDYv5oaEYn575VYIutDSSSTDzURnc20UaFHm+GLM0W5tSjveBiHUCDVgLHOQa gSoSvrx0vMlWqD1iE9zVDlSmr31pLOrWJo1teLallOFQwZPKUhgjd8wsf4tjLqomh64u 4ZZ3pizGRxw/eLheHDmfHV3Yux6yh2W1sY3DZSXFz11amQxnGqNYuhMXo1JfuvbXnId8 Ubiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WSEAQX4xoDFetSNg7thFVzG9HtsA7xC95w5bxK6vv/Y=; b=Srq2lYz1y7H7sE9lLwYxV3TTQaJrOcfsCWFc6x/8vN0z9O98rcSeMPvY9gDbqtD50O YlQEdOIiy2t9Ve1IdP35q9kbgTS1ma1/N9wONnKBxb/lqa6oawO7t8Pk3YQng3dMQnXb Zk27/56gmsvX89Kmkd6UL9Wd3dtLiurmuXTD2YnRyN0hbAHbFmDxXD3VsPEdwENK801g dECHjmSjCLx1p6E4XLRq8URRkRyVdtHZH+/TCs3l9ewHc5lzHSWxJkHKO5t5k9c/3Cmy 86C8RjQW1auQrym/hDPwhYiNKMH8s6Yyte9RMepfrQ5U6MWI4HLwHh7K/TVwLMhkn0Wu 98LQ== X-Gm-Message-State: AOAM53179EiR6jhd2naKCjnhgW8YkWcv/dcvc+n+ZHmVTmCCZhNh+6KE h9GpMlYWY53CQrClzhyk4AZM51BMbwdZN7Le X-Google-Smtp-Source: ABdhPJzFfPmyuoLpA0jUOlWXlL1I0/vxDfkpB3k0trwxcb+eCFc/i5VAWlTTNCRfWyJedlHCeEnH5w== X-Received: by 2002:a05:6808:b08:: with SMTP id s8mr503642oij.162.1621449063523; Wed, 19 May 2021 11:31:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 11/50] target/i386: Assert SS32 for x86_64 user-only Date: Wed, 19 May 2021 13:30:11 -0500 Message-Id: <20210519183050.875453-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::229; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x229.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" For user-only, SS32 =3D=3D !VM86, because we are never in real-mode. Since we cannot enter vm86 mode for x86_64 user-only, SS32 is always set. Since we're adding an accessor macro, pull the value directly out of flags otherwise. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-12-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index b570921410..7b5031f647 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -107,7 +107,6 @@ typedef struct DisasContext { #endif int vex_l; /* vex vector length */ int vex_v; /* vex vvvv register, without 1's complement. */ - int ss32; /* 32 bit stack segment */ CCOp cc_op; /* current CC operation */ bool cc_op_dirty; #ifdef TARGET_X86_64 @@ -160,9 +159,11 @@ typedef struct DisasContext { #if defined(CONFIG_USER_ONLY) && defined(TARGET_X86_64) #define VM86(S) false #define CODE32(S) true +#define SS32(S) true #else #define VM86(S) (((S)->flags & HF_VM_MASK) !=3D 0) #define CODE32(S) (((S)->flags & HF_CS32_MASK) !=3D 0) +#define SS32(S) (((S)->flags & HF_SS32_MASK) !=3D 0) #endif =20 static void gen_eob(DisasContext *s); @@ -352,7 +353,7 @@ static inline MemOp mo_pushpop(DisasContext *s, MemOp o= t) /* Select the size of the stack pointer. */ static inline MemOp mo_stacksize(DisasContext *s) { - return CODE64(s) ? MO_64 : s->ss32 ? MO_32 : MO_16; + return CODE64(s) ? MO_64 : SS32(s) ? MO_32 : MO_16; } =20 /* Select only size 64 else 32. Used for SSE operand sizes. */ @@ -2451,12 +2452,12 @@ static inline void gen_pop_update(DisasContext *s, = MemOp ot) =20 static inline void gen_stack_A0(DisasContext *s) { - gen_lea_v_seg(s, s->ss32 ? MO_32 : MO_16, cpu_regs[R_ESP], R_SS, -1); + gen_lea_v_seg(s, SS32(s) ? MO_32 : MO_16, cpu_regs[R_ESP], R_SS, -1); } =20 static void gen_pusha(DisasContext *s) { - MemOp s_ot =3D s->ss32 ? MO_32 : MO_16; + MemOp s_ot =3D SS32(s) ? MO_32 : MO_16; MemOp d_ot =3D s->dflag; int size =3D 1 << d_ot; int i; @@ -2472,7 +2473,7 @@ static void gen_pusha(DisasContext *s) =20 static void gen_popa(DisasContext *s) { - MemOp s_ot =3D s->ss32 ? MO_32 : MO_16; + MemOp s_ot =3D SS32(s) ? MO_32 : MO_16; MemOp d_ot =3D s->dflag; int size =3D 1 << d_ot; int i; @@ -2494,7 +2495,7 @@ static void gen_popa(DisasContext *s) static void gen_enter(DisasContext *s, int esp_addend, int level) { MemOp d_ot =3D mo_pushpop(s, s->dflag); - MemOp a_ot =3D CODE64(s) ? MO_64 : s->ss32 ? MO_32 : MO_16; + MemOp a_ot =3D CODE64(s) ? MO_64 : SS32(s) ? MO_32 : MO_16; int size =3D 1 << d_ot; =20 /* Push BP; compute FrameTemp into T1. */ @@ -8496,8 +8497,8 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) g_assert(IOPL(dc) =3D=3D iopl); g_assert(VM86(dc) =3D=3D ((flags & HF_VM_MASK) !=3D 0)); g_assert(CODE32(dc) =3D=3D ((flags & HF_CS32_MASK) !=3D 0)); + g_assert(SS32(dc) =3D=3D ((flags & HF_SS32_MASK) !=3D 0)); =20 - dc->ss32 =3D (flags >> HF_SS32_SHIFT) & 1; dc->addseg =3D (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st =3D 0; dc->tf =3D (flags >> TF_SHIFT) & 1; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449478; cv=none; d=zohomail.com; s=zohoarc; b=gKL/3VREQoym/MvG42ePcGX/HazioEoVgszYyW6QR2EPYfyenzvRa2qcOV+7Qsq30JYeCMUgh8qsGE8U3RUcY61kuvcyrDkbpFGc7lNTP8Pr0abBMepPgAShsDRXeHmDXHeeMN9mHCFUBWoi5iel73ffcrthD0ArVw1je9bahW8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449478; h=Content-Transfer-Encoding:Cc: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=rAFQ7hKTntiFTKkEw/GOqW3HmIjaB2DpbwQSPaXZceA=; b=iYkIKmvFWv8gpHxbDeDIPgfrxXc8J9Ry9vdr/VEycLQTmIDAQADL5iJoB/Dbx/HW8CIQlP31p04UaH7oxRXMLaXxVQ+eEz0RoCKg3oOJOdZHidx21fe9cglDECoyTAMCwe4iPM9cJR6Dut3wL2GDKdR+Z9Uiap4ZtuN2CvvZ3cc= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449478715318.1159872004572; Wed, 19 May 2021 11:37:58 -0700 (PDT) Received: from localhost ([::1]:53892 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR4v-0000zj-Kf for importer@patchew.org; Wed, 19 May 2021 14:37:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51164) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyL-0003eJ-B7 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:09 -0400 Received: from mail-oi1-x230.google.com ([2607:f8b0:4864:20::230]:45623) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyH-0005dq-Lx for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:08 -0400 Received: by mail-oi1-x230.google.com with SMTP id w127so10158960oig.12 for ; Wed, 19 May 2021 11:31:05 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rAFQ7hKTntiFTKkEw/GOqW3HmIjaB2DpbwQSPaXZceA=; b=rA3o1yq5/2RJ6R0UY7v/2bL9sXmOfja+OvhAFCVOzntZ62rAWIVUPOr8ugOAV/bYb4 CeihgCcu1ldZFGdis4G24bhLy67valVMdVW8J1trE+Hg3aqtkcRxOg6mKnl9f2hRJda4 TCe0T2MUqLCsFBvMAtkNYCe3O6U/r05jocKhPuOJVUv3Xo9nSSZci2Yv7K1+i3pH9mOM 0BEJMC/FK4QE++KPAiO+VXXRyVG/UvRQ98PRO1qdsvpmqSOYC2f9pEbZvMVZe3a4/nJ1 5JYQufkrpllxyyQtd8osZCfnHBJ1Nxp1rTZmVmoMjSlADm2efS6PktY5ZIHH/M4bQPS5 4fjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rAFQ7hKTntiFTKkEw/GOqW3HmIjaB2DpbwQSPaXZceA=; b=Ntm5Mc+dwedxiiriiyvG2KG1TJX7iYN+3g02gcB7G67OKBvrjTV0yPemEZL643bC8w WWXcCp4q422HjrOd/dcEVBszO/H3EkoefvkxwCn640+vfJ6fvUcRN6Xp+Z2g5YQDxJCs 9ne9XhHALGihfuczjMR4kk4Gm0Wr02js6rH25obs4iSPiFJ64tsK6x4lbWEwwoNOySFv tEbv+5WJHvf1EGYgf0RHf1ZvQyuG6fY+gBLYJdBPig2br5C9HvU5AwdrVtwuTk6y9g27 95DhCbmRVf9zzARePE9PSv7oIfGJqKGp9Avz1adgac6LQzQ3dsAqqS5oKVi9IiOrYNzS 83ig== X-Gm-Message-State: AOAM533+mMDcEhREQjFp+HZkjgE/stT31XnwhBUAgsYxx2NORgPb1Q7B N30gd21zhFt0zcTs0qlclYjEcV3P1NZviwsP X-Google-Smtp-Source: ABdhPJxtVJTtqYHNhjN/s1DpgKUfZ/n/xrF59aaiKbGJYgwkJ4oiAEEq8smclObyTBk04l3Y3NPQpg== X-Received: by 2002:aca:1205:: with SMTP id 5mr545742ois.6.1621449064451; Wed, 19 May 2021 11:31:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 12/50] target/i386: Assert CODE64 for x86_64 user-only Date: Wed, 19 May 2021 13:30:12 -0500 Message-Id: <20210519183050.875453-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::230; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x230.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" For x86_64 user-only, there is no way to leave 64-bit mode. Without x86_64, there is no way to enter 64-bit mode. There is an existing macro to aid with that; simply place it in the right place in the ifdef chain. Since we're adding an accessor macro, pull the value directly out of flags when we're not assuming a constant. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-13-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 7b5031f647..e3907f9066 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -41,11 +41,9 @@ #define PREFIX_VEX 0x20 =20 #ifdef TARGET_X86_64 -#define CODE64(s) ((s)->code64) #define REX_X(s) ((s)->rex_x) #define REX_B(s) ((s)->rex_b) #else -#define CODE64(s) 0 #define REX_X(s) 0 #define REX_B(s) 0 #endif @@ -102,7 +100,6 @@ typedef struct DisasContext { =20 #ifdef TARGET_X86_64 int lma; /* long mode active */ - int code64; /* 64 bit code segment */ int rex_x, rex_b; #endif int vex_l; /* vex vector length */ @@ -165,6 +162,13 @@ typedef struct DisasContext { #define CODE32(S) (((S)->flags & HF_CS32_MASK) !=3D 0) #define SS32(S) (((S)->flags & HF_SS32_MASK) !=3D 0) #endif +#if !defined(TARGET_X86_64) +#define CODE64(S) false +#elif defined(CONFIG_USER_ONLY) +#define CODE64(S) true +#else +#define CODE64(S) (((S)->flags & HF_CS64_MASK) !=3D 0) +#endif =20 static void gen_eob(DisasContext *s); static void gen_jr(DisasContext *s, TCGv dest); @@ -8497,6 +8501,7 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) g_assert(IOPL(dc) =3D=3D iopl); g_assert(VM86(dc) =3D=3D ((flags & HF_VM_MASK) !=3D 0)); g_assert(CODE32(dc) =3D=3D ((flags & HF_CS32_MASK) !=3D 0)); + g_assert(CODE64(dc) =3D=3D ((flags & HF_CS64_MASK) !=3D 0)); g_assert(SS32(dc) =3D=3D ((flags & HF_SS32_MASK) !=3D 0)); =20 dc->addseg =3D (flags >> HF_ADDSEG_SHIFT) & 1; @@ -8518,7 +8523,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) dc->cpuid_xsave_features =3D env->features[FEAT_XSAVE]; #ifdef TARGET_X86_64 dc->lma =3D (flags >> HF_LMA_SHIFT) & 1; - dc->code64 =3D (flags >> HF_CS64_SHIFT) & 1; #endif dc->jmp_opt =3D !(dc->tf || dc->base.singlestep_enabled || (flags & HF_INHIBIT_IRQ_MASK)); --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449711; cv=none; d=zohomail.com; s=zohoarc; b=ZXXpkkf0hE7kPZpUjjCou8wGK4zwMyIUryo+dkaFFnFIe+YlrC+ePQJVmhXKEcKb7giGPcGMxQa7FiPC9Qp8tcmIZK4MDvhhX5RZfBaJF6o2o/tO9xIjppRkvL1m2oAF/0DyANMdVJNFoEqmcVODTcxJvhdmpGxra5OAI8WvYAI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449711; h=Content-Transfer-Encoding:Cc: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=cmBZ6ICmQvawj9IO/C++c+UM9QVtAg4OWAJbtUAe9k8=; b=X6xfJEDzRw4aBGzVMZfOgzLvM0uYYZBNZC8exVqzoc7P7PhewcCYajdt06TnX6dEBz8uxTUNXnF0teXcZYR8UELpNcbT3B5t+J3goVkQMO99df056ZqHh8qL0hKne9nDAdyAtYkhRHhH5FnQvAy3LgDEy3cxhNuwyuz8PZQNdOM= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449711721923.1289651245588; Wed, 19 May 2021 11:41:51 -0700 (PDT) Received: from localhost ([::1]:34224 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR8f-0006yA-6n for importer@patchew.org; Wed, 19 May 2021 14:41:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51196) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyM-0003j2-Iw for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:10 -0400 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]:34732) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyI-0005eC-KE for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:10 -0400 Received: by mail-oi1-x22a.google.com with SMTP id u11so14004464oiv.1 for ; Wed, 19 May 2021 11:31:06 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cmBZ6ICmQvawj9IO/C++c+UM9QVtAg4OWAJbtUAe9k8=; b=L+1sVI6bibNADdd15+nCFyYwQYuzAaxH9KBeZg1HMgxrlwCYxFjYUyL9gNA7WAVlRV zOTpHi2HLooH6PxLf2BwKyTFYiojZ4rWzjw6d8ee3bnLM8NrsLZ5S/CBBDVtCPV+OzKJ lQkCZchaJtMwg8IW6DqUrmkQu9DteTwPtMq+pXTLoVcIlK0ldvKKD10OfycJG1JQisRb lRvCw9BPSAst5Q0Yvk8x0l257hgluT0sLzdh1yJaa4offxU+v92W8wvfCn3FIovvLJn/ UQo1TStSX1ji6ffLKijF7q9xbqy7MR6+qIzxcnJJrhRWAbrT3G0sbiZ0tqOEunq92Xab 4rkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cmBZ6ICmQvawj9IO/C++c+UM9QVtAg4OWAJbtUAe9k8=; b=jNZ7choab6KdCirP7wsYl6IgICFdlBLYegiMjm7E4BEBTNAEK/I8Y72pKOYS27/lBf LLy+q3KTcotHbvsgxRqoIauRmHxYvCocfPLP8rqeJE/vvywt3NK1qlG/NWZHse0hmRAk OFCiEQUo+Jrq1+0xVFmio5BBd9aCIvTbXfXqo/kYfBxhBQeRiIWsP83Z3xws0Jve0lAC SUgFdmXj1f5RQEZOH0f0Ev8hl9hAtamLSLZEE9DqCNI3sL1u+ew+t2osCttwAQELQLg0 UohSwijVIekavGZ1UG+JQtmtX3Dsw3j5oy7OGIH9l57kDI4xL0TluuYDfWlzH7IU7GuY ox4Q== X-Gm-Message-State: AOAM531F9B8+43ARLhmxMEkkNExBw7X9UK4YQ8pAP7Z7dOlP8G7PUifJ l855SF8lQpPdfn51Afbqq18gOsffd2g7aYWz X-Google-Smtp-Source: ABdhPJxHiRmNU8tslsZWaBGo7RGP+1GuLHcnVPV5PuZdIF2BuDONjsZEBt+iZ9x0wvZbqqvjj2w5Qg== X-Received: by 2002:a05:6808:f07:: with SMTP id m7mr423242oiw.98.1621449065388; Wed, 19 May 2021 11:31:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 13/50] target/i386: Assert LMA for x86_64 user-only Date: Wed, 19 May 2021 13:30:13 -0500 Message-Id: <20210519183050.875453-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22a; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22a.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" LMA is a pre-requisite for CODE64, so there is no way to disable it for x86_64-linux-user, and there is no way to enable it for i386. Since we're adding an accessor macro, pull the value directly out of flags when we're not assuming a constant. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-14-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index e3907f9066..9c8a405694 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -99,7 +99,6 @@ typedef struct DisasContext { #endif =20 #ifdef TARGET_X86_64 - int lma; /* long mode active */ int rex_x, rex_b; #endif int vex_l; /* vex vector length */ @@ -164,10 +163,13 @@ typedef struct DisasContext { #endif #if !defined(TARGET_X86_64) #define CODE64(S) false +#define LMA(S) false #elif defined(CONFIG_USER_ONLY) #define CODE64(S) true +#define LMA(S) true #else #define CODE64(S) (((S)->flags & HF_CS64_MASK) !=3D 0) +#define LMA(S) (((S)->flags & HF_LMA_MASK) !=3D 0) #endif =20 static void gen_eob(DisasContext *s); @@ -7295,7 +7297,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } else { gen_helper_sysret(cpu_env, tcg_const_i32(dflag - 1)); /* condition codes are modified only in long mode */ - if (s->lma) { + if (LMA(s)) { set_cc_op(s, CC_OP_EFLAGS); } /* TF handling for the sysret insn is different. The TF bit is @@ -8503,6 +8505,7 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) g_assert(CODE32(dc) =3D=3D ((flags & HF_CS32_MASK) !=3D 0)); g_assert(CODE64(dc) =3D=3D ((flags & HF_CS64_MASK) !=3D 0)); g_assert(SS32(dc) =3D=3D ((flags & HF_SS32_MASK) !=3D 0)); + g_assert(LMA(dc) =3D=3D ((flags & HF_LMA_MASK) !=3D 0)); =20 dc->addseg =3D (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st =3D 0; @@ -8521,9 +8524,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) dc->cpuid_ext3_features =3D env->features[FEAT_8000_0001_ECX]; dc->cpuid_7_0_ebx_features =3D env->features[FEAT_7_0_EBX]; dc->cpuid_xsave_features =3D env->features[FEAT_XSAVE]; -#ifdef TARGET_X86_64 - dc->lma =3D (flags >> HF_LMA_SHIFT) & 1; -#endif dc->jmp_opt =3D !(dc->tf || dc->base.singlestep_enabled || (flags & HF_INHIBIT_IRQ_MASK)); /* Do not optimize repz jumps at all in icount mode, because --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449478; cv=none; d=zohomail.com; s=zohoarc; b=MJTjFMb98ORCE6BlD/DXGo74Z7VKld9rWMkc0JnBEWKyFSwr3sF2E/fvG4x2iLHD3sMz/9MKzyqs3I7Qx+Mkn45Hyv9oSvyDQBCJq7VoNep66CwAsKDCKI2LD0N66h5f7bqKgaNSOnJkEnUHRpWoqrE2C1pqGy5Ql93RDRsJ5Dc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449478; h=Content-Transfer-Encoding:Cc: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=agd4oaV5WPqctmWjrwQb1Gp+h1P4jf2oyWzZFVAY35U=; b=de/alMzbSVJd4okmG21eGSymZYJjNy7/LytfT7j8CPOKYbeCUDgwtDP3cL100GFn8cDrLIok8V/ADO9Ea/+85q4Fue8AP2E0Hp5okBQdfhMJwwcYUJAzQeD5WfLVh3qAl2ncaT4gb7rvBc5F4ISCxAToIraWFkGOTr5S6TzbWis= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162144947868563.62072395095231; Wed, 19 May 2021 11:37:58 -0700 (PDT) Received: from localhost ([::1]:53850 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR4v-0000xr-La for importer@patchew.org; Wed, 19 May 2021 14:37:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51188) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyM-0003hi-6y for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:10 -0400 Received: from mail-oi1-x22d.google.com ([2607:f8b0:4864:20::22d]:34735) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyJ-0005eo-H2 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:09 -0400 Received: by mail-oi1-x22d.google.com with SMTP id u11so14004505oiv.1 for ; Wed, 19 May 2021 11:31:07 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=agd4oaV5WPqctmWjrwQb1Gp+h1P4jf2oyWzZFVAY35U=; b=tAnjAD3aHBl9AILJqEJlVd0Y5+peTzMaO5bxvbtWq6IJbYVsgcfbDbOxV/+IiSgYn8 42layQb6W9p34kujaDjx7CB12JNoxr31/TW3JyiX2GTEfg4a2eDFHmJ8TX4KE7jJXIwv UQPDeu5SGbzXg3B7LFz2mMBnIh8/GQlJRpI3cSlnNoCdhHFI03aOxSJTQMJKHKwvnwhZ TbWaZSBnS4Iq5z9HIAnk2270zClXeV4nH00A/mbQQ8K3LtBHFZIxe4TygYzLtVbiJWBn LFDuaQ++SlzmAtRMTgHOIeTfJJuoGvKH7kqhyB1pn77EjivxtV6HsRifsYWnlbg5ypPF 8+Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=agd4oaV5WPqctmWjrwQb1Gp+h1P4jf2oyWzZFVAY35U=; b=sOsm+RYFjrcFAUanaF3SvD0+UoJDXkO5HJ6k9lIE67iKX74Ssw4Uwsj9Y8zJiBey52 Q/bDMZwIBtq+mwzgEhT/XkUq8aznBowofwG+g/DLGGoSuBL06sbKnW95GPKtBvPocPRz AZqC7HEPk8ccFlXU7LB5oyrhLUUuXaxiJhpCOfx7UxSob3x9VIaZnpMAKuiqfUWyoloB LraTS5nJnpsWTp1il5EaHK9RkJbnFzuzCtr60f/JP+pFwVsIjYFy5z4iWbSNzCsCVbY9 qNA4EcR5kfec2f3DpyecRi11JBQW4PINUakkTybLSasoGNEC2s4XDNyzW+Cw8E85825f kxug== X-Gm-Message-State: AOAM5311QDzpTYKLW6enRzERd5q+yFjE7ydtAxC/WDrH1+NQpqEj/eEm 83QzHNqPAL6/OiBo7zBJs4Ceeq0PxE8XOns9 X-Google-Smtp-Source: ABdhPJwfIa66IIQWtwNdR9ysJ13FiFmlnTcKUoRMDK73dqOofUnfSnFjRYxgue7qqpyTR6MonxyjSg== X-Received: by 2002:a54:4819:: with SMTP id j25mr412777oij.2.1621449066321; Wed, 19 May 2021 11:31:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 14/50] target/i386: Assert !ADDSEG for x86_64 user-only Date: Wed, 19 May 2021 13:30:14 -0500 Message-Id: <20210519183050.875453-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22d; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22d.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" LMA disables traditional segmentation, exposing a flat address space. This means that ADDSEG is off. Since we're adding an accessor macro, pull the value directly out of flags otherwise. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-15-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 9c8a405694..7d7ab3e03d 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -108,7 +108,6 @@ typedef struct DisasContext { #ifdef TARGET_X86_64 bool x86_64_hregs; #endif - int addseg; /* non zero if either DS/ES/SS have a non zero base */ int f_st; /* currently unused */ int tf; /* TF cpu flag */ int jmp_opt; /* use direct block chaining for direct jumps */ @@ -156,10 +155,12 @@ typedef struct DisasContext { #define VM86(S) false #define CODE32(S) true #define SS32(S) true +#define ADDSEG(S) false #else #define VM86(S) (((S)->flags & HF_VM_MASK) !=3D 0) #define CODE32(S) (((S)->flags & HF_CS32_MASK) !=3D 0) #define SS32(S) (((S)->flags & HF_SS32_MASK) !=3D 0) +#define ADDSEG(S) (((S)->flags & HF_ADDSEG_MASK) !=3D 0) #endif #if !defined(TARGET_X86_64) #define CODE64(S) false @@ -492,7 +493,7 @@ static void gen_lea_v_seg(DisasContext *s, MemOp aflag,= TCGv a0, #endif case MO_32: /* 32 bit address */ - if (ovr_seg < 0 && s->addseg) { + if (ovr_seg < 0 && ADDSEG(s)) { ovr_seg =3D def_seg; } if (ovr_seg < 0) { @@ -505,7 +506,7 @@ static void gen_lea_v_seg(DisasContext *s, MemOp aflag,= TCGv a0, tcg_gen_ext16u_tl(s->A0, a0); a0 =3D s->A0; if (ovr_seg < 0) { - if (s->addseg) { + if (ADDSEG(s)) { ovr_seg =3D def_seg; } else { return; @@ -2429,7 +2430,7 @@ static void gen_push_v(DisasContext *s, TCGv val) tcg_gen_subi_tl(s->A0, cpu_regs[R_ESP], size); =20 if (!CODE64(s)) { - if (s->addseg) { + if (ADDSEG(s)) { new_esp =3D s->tmp4; tcg_gen_mov_tl(new_esp, s->A0); } @@ -8506,8 +8507,8 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) g_assert(CODE64(dc) =3D=3D ((flags & HF_CS64_MASK) !=3D 0)); g_assert(SS32(dc) =3D=3D ((flags & HF_SS32_MASK) !=3D 0)); g_assert(LMA(dc) =3D=3D ((flags & HF_LMA_MASK) !=3D 0)); + g_assert(ADDSEG(dc) =3D=3D ((flags & HF_ADDSEG_MASK) !=3D 0)); =20 - dc->addseg =3D (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st =3D 0; dc->tf =3D (flags >> TF_SHIFT) & 1; dc->cc_op =3D CC_OP_DYNAMIC; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450353; cv=none; d=zohomail.com; s=zohoarc; b=LvhbuR2pDIEuiTOylj5FJNj4u4cIxbkqJHm6PoHZZW9cj9WsEnKW0efmgbey0lZpW53GHG2gkV5y07ROQl0ltHBoJuo7srzvQWVw6KVcRPelfG6y1UPASMzOA8jwCBRvKbcYRHIVHU7JagrcboIKLIi1a3oEs6tkMuT2mf8YhWc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450353; h=Content-Transfer-Encoding:Cc: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=apFSgGZXwWAqwxDJM0bgwOp5DD1DSEWrQeh+D0YbI6s=; b=Um+O9UUc87DBn/9aT7RyxdNT/QsV97RUCKu9AvOFji9+0ay+nDGkGwSR6VHMIxK2OEZXc9mEd9XuUT3CRCPXk8IZ63ci8yiavrPc9Vd8i/6y+Q+RqEp5PNrGPiA4B7Brvx1IsqgMM954m2NXkxEdZIodV0VpM6wJuWk29uVjLlA= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450353180177.38693914724809; Wed, 19 May 2021 11:52:33 -0700 (PDT) Received: from localhost ([::1]:40598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRJ2-0004wA-03 for importer@patchew.org; Wed, 19 May 2021 14:52:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyX-0003t1-La for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:22 -0400 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]:36633) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyK-0005fW-RR for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:19 -0400 Received: by mail-oi1-x22a.google.com with SMTP id f184so14009037oig.3 for ; Wed, 19 May 2021 11:31:07 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=apFSgGZXwWAqwxDJM0bgwOp5DD1DSEWrQeh+D0YbI6s=; b=XUD75oIUwLikKs7mPxU5geugEFyJXbhCRG4mrjPSG9hhdDPVPVvLsw8YrFcihP9RnS 4TGEtXkRuTpUvW3FOF4REZjFM3vdT2ldZa9eksjbGwy+GFBooxfKCyya75ABCSsJu27Y T1+R7fpc/J6AU+v7JM33I121YAOm8tae4YGVgW1rCjGeIV4ZRLdohPibYwXmyfb90CSi TJ827Zq30owTrNLkBhPrFpS9Fo5E3mM6ozwVPMQIyghGFJxro698nkyHHzWnsKV4zH4Y p2m7VPSVQX581kPbQBpPooLwPwmvyqOzaJx9cyGuRcVzjASob+wEgtXvmQbE7AEXvuhv /Kkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=apFSgGZXwWAqwxDJM0bgwOp5DD1DSEWrQeh+D0YbI6s=; b=gNkDkCTIrwwEXYMdeqQMaLkyj5u1kBHM2SBj9mLeWe6yQaiDV/frOrvpr94bX0O0oR 1lObqGiaKVvKTuYZOdOClLAwic0Q3/gHEZdxffBAJE0n1QOK5gYrYMzu2Hl4jfPHT5hq ii1F/yavLNUeIwxVRXv7VMMl+alvBp79hwS4cCJvHaGSgkGZzcwn/wM/siueGY7kg/wm QgDtFdb8knABHKdeRDfv1HZVBPk8RQoyS/JRK0X0qUGyxCQ1qsLYN1uKCRqZhB6ANjZx mCe2Oi1d0ZJFJdtyH10gRS1qiyGBamPVjn8NoNJudTTuzmuRqalgXsfykFo+z83G138/ 50EA== X-Gm-Message-State: AOAM530qQD+qW1Bg+jprOJDef/Ie1A5G64z8yvNSvs6D0ySwiExzPXTD eJBvrFR+SgmBXgMSzM8ckU6GQnoGzP6kjSid X-Google-Smtp-Source: ABdhPJzQlfqBzSCfDnovN6KHBVZXFLbVQiV5u0gxieftIacbK7W6C3hh1oi5Ac9swOD52RVsrvXdWw== X-Received: by 2002:a05:6808:13c9:: with SMTP id d9mr537097oiw.142.1621449067292; Wed, 19 May 2021 11:31:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 15/50] target/i386: Introduce REX_PREFIX Date: Wed, 19 May 2021 13:30:15 -0500 Message-Id: <20210519183050.875453-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22a; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22a.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 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" The existing flag, x86_64_hregs, does not accurately describe its setting. It is true if and only if a REX prefix has been seen. Yes, that affects the "h" regs, but that's secondary. Add PREFIX_REX and include this bit in s->prefix. Add REX_PREFIX so that the check folds away when x86_64 is compiled out. Fold away the reg >=3D 8 check, because bit 3 of the register number comes from the REX prefix in the first place. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-16-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 7d7ab3e03d..79a37fb1a7 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -39,6 +39,7 @@ #define PREFIX_DATA 0x08 #define PREFIX_ADR 0x10 #define PREFIX_VEX 0x20 +#define PREFIX_REX 0x40 =20 #ifdef TARGET_X86_64 #define REX_X(s) ((s)->rex_x) @@ -105,9 +106,6 @@ typedef struct DisasContext { int vex_v; /* vex vvvv register, without 1's complement. */ CCOp cc_op; /* current CC operation */ bool cc_op_dirty; -#ifdef TARGET_X86_64 - bool x86_64_hregs; -#endif int f_st; /* currently unused */ int tf; /* TF cpu flag */ int jmp_opt; /* use direct block chaining for direct jumps */ @@ -173,6 +171,12 @@ typedef struct DisasContext { #define LMA(S) (((S)->flags & HF_LMA_MASK) !=3D 0) #endif =20 +#ifdef TARGET_X86_64 +#define REX_PREFIX(S) (((S)->prefix & PREFIX_REX) !=3D 0) +#else +#define REX_PREFIX(S) false +#endif + static void gen_eob(DisasContext *s); static void gen_jr(DisasContext *s, TCGv dest); static void gen_jmp(DisasContext *s, target_ulong eip); @@ -336,14 +340,10 @@ static void gen_update_cc_op(DisasContext *s) */ static inline bool byte_reg_is_xH(DisasContext *s, int reg) { - if (reg < 4) { + /* Any time the REX prefix is present, byte registers are uniform */ + if (reg < 4 || REX_PREFIX(s)) { return false; } -#ifdef TARGET_X86_64 - if (reg >=3D 8 || s->x86_64_hregs) { - return false; - } -#endif return true; } =20 @@ -4559,7 +4559,6 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) #ifdef TARGET_X86_64 s->rex_x =3D 0; s->rex_b =3D 0; - s->x86_64_hregs =3D false; #endif s->rip_offset =3D 0; /* for relative ip address */ s->vex_l =3D 0; @@ -4614,12 +4613,11 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) case 0x40 ... 0x4f: if (CODE64(s)) { /* REX prefix */ + prefixes |=3D PREFIX_REX; rex_w =3D (b >> 3) & 1; rex_r =3D (b & 0x4) << 1; s->rex_x =3D (b & 0x2) << 2; REX_B(s) =3D (b & 0x1) << 3; - /* select uniform byte register addressing */ - s->x86_64_hregs =3D true; goto next_byte; } break; @@ -4643,14 +4641,9 @@ static target_ulong disas_insn(DisasContext *s, CPUS= tate *cpu) =20 /* 4.1.1-4.1.3: No preceding lock, 66, f2, f3, or rex prefixes= . */ if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ - | PREFIX_LOCK | PREFIX_DATA)) { + | PREFIX_LOCK | PREFIX_DATA | PREFIX_REX)) { goto illegal_op; } -#ifdef TARGET_X86_64 - if (s->x86_64_hregs) { - goto illegal_op; - } -#endif rex_r =3D (~vex2 >> 4) & 8; if (b =3D=3D 0xc5) { /* 2-byte VEX prefix: RVVVVlpp, implied 0f leading opcode = byte */ --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449849; cv=none; d=zohomail.com; s=zohoarc; b=P8LD7OFamBJ0HwI42VqqSTfRJlXrd1ZuGZjYXnEyj0TSI22yF4p2VDX3hKDQ571Jge0YXwwlAEatjUN7g6siJJHcSLzko9Kgo63LRRKCRvBw8HKtJ7hhT/ZFwal60QkhPl/FpdyfuAnOVac9pudD1HiZOBobokXSi8gCwPwSAdw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449849; h=Content-Transfer-Encoding:Cc: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=apQ7cUSEoG7Sw4F7rOAU3FhzYTNsiwzo7lp42fC1tSs=; b=ZaPJd/Z613AKYvXc5jSyVZeMkpjz8JXfPZ9TnwmHUpszm8syZPsYyHrwK0Gdc1aRD7wm1N6WWuE810DjU0u2yFvRL5aLFYvWHH92pTcPHPgmhg+KUoZ7apNAssZJHvPATt70VHEZJuyl2tMJC5c+WhRKIvD+rn/MEGtcFtnzTRY= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162144984957987.38015870829929; Wed, 19 May 2021 11:44:09 -0700 (PDT) Received: from localhost ([::1]:42840 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRAu-0004GJ-JX for importer@patchew.org; Wed, 19 May 2021 14:44:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyO-0003nF-0b for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:12 -0400 Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]:41800) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyL-0005gl-Av for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:11 -0400 Received: by mail-ot1-x332.google.com with SMTP id 36-20020a9d0ba70000b02902e0a0a8fe36so12592015oth.8 for ; Wed, 19 May 2021 11:31:08 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=apQ7cUSEoG7Sw4F7rOAU3FhzYTNsiwzo7lp42fC1tSs=; b=i0hb+ltz7WDZUrIHAobLDKKjCLVs9mXeLJXjDBQwMPBv1yl3yyY7v7DLXtbnsBS+/d QWppEePg6qO9B49qBK+EOEiCdVl22vFj7ejhB3WHIkChMOvnxxaBInNHVoPV0Jp0V4Aa RGSJr1FmqCfAROSU5I8HkIuIebnpOd8T4X7K4A7Yvc//7YLBpR7ulGkSt4F6z25q8DNC qHDgxEvMruMWnDkQ8pt2J02Web2vkCNpfo4x1Gza/XuY9FBzghlqH+K/armR4iNj1yFa ntPoirMexbflILrCf+I0ZxFSJBq40LxL/anDVp1pOw9XRJnrs+OTGGpL7+u+08SJ2f6G cJ8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=apQ7cUSEoG7Sw4F7rOAU3FhzYTNsiwzo7lp42fC1tSs=; b=Sx9+DDrZNEqbvl6pa+X9vrQUm9g0MuiX+UuQSqmcf5qsIkx6vJjXJJ1gckFSg6x4Uv +qlMXGQfiLjC1WWM/K3ffQocu6BqXjgX/S3+pJLaWadhPfVbBtjtZ9ZOPGu4iCdlj8PQ tkp/PwqccxQhRk5JiXoN6wpjF9ilkQ5fKGNgqDsjUGV9ZL5f+aJdmeDIE/Jxq6cLQcjt SDp7gZwPvnCylWiOarbAoWHNXJRHcsQ5nClPiPgKYsMCtO59k/RdVbf1v9dQsT+MXVLe 3WnknageqJcMDB3NbCPGGLVQHZlDvHdfqpg7PRKR4JQ4O53G4Zjqr1jBX+1MvuFOlkSW BWGQ== X-Gm-Message-State: AOAM531TewrJqk9NjM5CpQR2yt7+aygBZdj9dZxJVwUKuVIzOtLf0eLt MPyaAnjKHzvPr0ZEoYSzx4gN06d7TBKTjqq8 X-Google-Smtp-Source: ABdhPJyzPt4udU150UPRJenjH93a3ZOtBMgCKQa+s8RBAByCRrpC6QcjNHajOTVUY2WYvbeSn3KBaQ== X-Received: by 2002:a05:6830:1311:: with SMTP id p17mr655209otq.224.1621449068253; Wed, 19 May 2021 11:31:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 16/50] target/i386: Tidy REX_B, REX_X definition Date: Wed, 19 May 2021 13:30:16 -0500 Message-Id: <20210519183050.875453-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::332; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x332.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Change the storage from int to uint8_t since the value is in {0,8}. For x86_64 add 0 in the macros to (1) promote the type back to int, and (2) make the macro an rvalue. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-17-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 79a37fb1a7..9bb37215d8 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -41,14 +41,6 @@ #define PREFIX_VEX 0x20 #define PREFIX_REX 0x40 =20 -#ifdef TARGET_X86_64 -#define REX_X(s) ((s)->rex_x) -#define REX_B(s) ((s)->rex_b) -#else -#define REX_X(s) 0 -#define REX_B(s) 0 -#endif - #ifdef TARGET_X86_64 # define ctztl ctz64 # define clztl clz64 @@ -100,7 +92,8 @@ typedef struct DisasContext { #endif =20 #ifdef TARGET_X86_64 - int rex_x, rex_b; + uint8_t rex_x; + uint8_t rex_b; #endif int vex_l; /* vex vector length */ int vex_v; /* vex vvvv register, without 1's complement. */ @@ -173,8 +166,12 @@ typedef struct DisasContext { =20 #ifdef TARGET_X86_64 #define REX_PREFIX(S) (((S)->prefix & PREFIX_REX) !=3D 0) +#define REX_X(S) ((S)->rex_x + 0) +#define REX_B(S) ((S)->rex_b + 0) #else #define REX_PREFIX(S) false +#define REX_X(S) 0 +#define REX_B(S) 0 #endif =20 static void gen_eob(DisasContext *s); @@ -4617,7 +4614,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) rex_w =3D (b >> 3) & 1; rex_r =3D (b & 0x4) << 1; s->rex_x =3D (b & 0x2) << 2; - REX_B(s) =3D (b & 0x1) << 3; + s->rex_b =3D (b & 0x1) << 3; goto next_byte; } break; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450184; cv=none; d=zohomail.com; s=zohoarc; b=c/t+zuVmI0D4lRhSFdIfyIjxgiNBEaKr9fT+BZcttlSkFpUsi3wogacYt5LKg6RKCTFbYFGTN2U6iP0QQIiuquwNUGd+QNvUQS/in3tIyhz5FE3/qAhvEPqzLUjwyWjCHntFzGSutC5qJq/nOUC8iPqoEdkpz1CjduUkJneQo/o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450184; h=Content-Transfer-Encoding:Cc: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=D9u+l/BiRLEGpZtusr2xgK4721hFuj8PaGpObGhRGRs=; b=cgsuckcQew+fR+JyKLklyeo8nsVPSYiVEDxdWhLIGQde2S0DoEgzhckPsX00PNy6D/Gn/SPWlIeVF5jz1cBoZKwgzU6Nxt6UrVv8lXzd2M4sxAogtFdKy5AAwqx3PIO21AxiRyl0DOhHikcAxjz/v9TcKDZFltgn/pmiQpNxvA4= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450184200893.4768154413924; Wed, 19 May 2021 11:49:44 -0700 (PDT) Received: from localhost ([::1]:60100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRGI-0007Up-QU for importer@patchew.org; Wed, 19 May 2021 14:49:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51378) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyX-0003t6-Mv for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:22 -0400 Received: from mail-oi1-x232.google.com ([2607:f8b0:4864:20::232]:38642) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyM-0005hK-KX for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:21 -0400 Received: by mail-oi1-x232.google.com with SMTP id z3so13990571oib.5 for ; Wed, 19 May 2021 11:31:10 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=D9u+l/BiRLEGpZtusr2xgK4721hFuj8PaGpObGhRGRs=; b=DTsk7dMAgQXc8vRmHJqqllDC3g7ApSYLw7IZ6/c1IxFEoasf2pKzK6/WBJqZEES+2W HFuxEuhz5f1CcCy//kL76947wbDO1mt1XWWdw0zecV4iIvM8tZr5TiX2pj5DsQtZDe+Z xK++UGpvfXM3fmFkFYrBqfifjl569VNuMUL4zFhrSlHzunD2J/nqpCqT0d8wP9/Vmtf0 EUZy9KLQp8nYl+feZpcr15dIvGlQzXiY/5OTnQIcuo140d3tWQ+1eI9T+coQg3PV+eKH /1/KWImf2rbKe82HG5wn0ij/0ovzM00zHhExIN91xCnbHs8AdnWo1iz+ghUZGy6KWxLf lq0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=D9u+l/BiRLEGpZtusr2xgK4721hFuj8PaGpObGhRGRs=; b=Ex46N3IaoJKKyrIdNFMroUZPQxUaLRITVKIuUZjBcpKdlX9RTugAcgy6DIRPL6xycy ilvPm7zP95i6V7Rw6pqfEHvBfPqsXZwhoqtUypNj/T51JZ4Pj44k+YpkssY0ycUXsg8T EMXhd/5KVNp44/RW1ATl4xO5yU8EIJHc7GOSkJ0CcDOdhg901t7T4EbBH08s6jB7zjg+ bjma/YxjW5q61rL8rx/XmgrLeBadNXW+xxjxnO2chf/SR99VfuXKFe4StbtAjZI6YFYt URZsutYQ4hhTPtcImm7vmEc4GU5r4zLb5sCVV0mkmWPzFfkVuqwREvDWzZTCgYHpsojl La2A== X-Gm-Message-State: AOAM532IaJsSKlUFZi+Mtxe6JujNNs8m9918RhRt+Xe0h4F32FV3Qubv pwADCZBSuh889eGzKtdCOeeDLMDrMa+dnh8E X-Google-Smtp-Source: ABdhPJzdN5qQrnjpLZXRIjtUK2DurhjmqYwbvc4usH0fZAqAE0QMm7XLx+cYCOb1kT9mQMZM/X4idw== X-Received: by 2002:aca:5e8a:: with SMTP id s132mr410934oib.94.1621449069365; Wed, 19 May 2021 11:31:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 17/50] target/i386: Move rex_r into DisasContext Date: Wed, 19 May 2021 13:30:17 -0500 Message-Id: <20210519183050.875453-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::232; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x232.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Treat this flag exactly like we treat rex_b and rex_x. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-18-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 84 ++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 39 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 9bb37215d8..22175c6628 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -92,6 +92,7 @@ typedef struct DisasContext { #endif =20 #ifdef TARGET_X86_64 + uint8_t rex_r; uint8_t rex_x; uint8_t rex_b; #endif @@ -166,10 +167,12 @@ typedef struct DisasContext { =20 #ifdef TARGET_X86_64 #define REX_PREFIX(S) (((S)->prefix & PREFIX_REX) !=3D 0) +#define REX_R(S) ((S)->rex_r + 0) #define REX_X(S) ((S)->rex_x + 0) #define REX_B(S) ((S)->rex_b + 0) #else #define REX_PREFIX(S) false +#define REX_R(S) 0 #define REX_X(S) 0 #define REX_B(S) 0 #endif @@ -3094,7 +3097,7 @@ static const struct SSEOpHelper_eppi sse_op_table7[25= 6] =3D { }; =20 static void gen_sse(CPUX86State *env, DisasContext *s, int b, - target_ulong pc_start, int rex_r) + target_ulong pc_start) { int b1, op1_offset, op2_offset, is_xmm, val; int modrm, mod, rm, reg; @@ -3164,8 +3167,9 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, =20 modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7); - if (is_xmm) - reg |=3D rex_r; + if (is_xmm) { + reg |=3D REX_R(s); + } mod =3D (modrm >> 6) & 3; if (sse_fn_epp =3D=3D SSE_SPECIAL) { b |=3D (b1 << 8); @@ -3699,7 +3703,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, tcg_gen_ld16u_tl(s->T0, cpu_env, offsetof(CPUX86State,fpregs[rm].mmx.MMX_W(= val))); } - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_op_mov_reg_v(s, ot, reg, s->T0); break; case 0x1d6: /* movq ea, xmm */ @@ -3743,7 +3747,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, offsetof(CPUX86State, fpregs[rm].mmx)); gen_helper_pmovmskb_mmx(s->tmp2_i32, cpu_env, s->ptr0); } - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); tcg_gen_extu_i32_tl(cpu_regs[reg], s->tmp2_i32); break; =20 @@ -3755,7 +3759,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, } modrm =3D x86_ldub_code(env, s); rm =3D modrm & 7; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; if (b1 >=3D 2) { goto unknown_op; @@ -3831,7 +3835,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, /* Various integer extensions at 0f 38 f[0-f]. */ b =3D modrm | (b1 << 8); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 switch (b) { case 0x3f0: /* crc32 Gd,Eb */ @@ -4185,7 +4189,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, b =3D modrm; modrm =3D x86_ldub_code(env, s); rm =3D modrm & 7; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; if (b1 >=3D 2) { goto unknown_op; @@ -4205,7 +4209,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, rm =3D (modrm & 7) | REX_B(s); if (mod !=3D 3) gen_lea_modrm(env, s, modrm); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); val =3D x86_ldub_code(env, s); switch (b) { case 0x14: /* pextrb */ @@ -4374,7 +4378,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, /* Various integer extensions at 0f 3a f[0-f]. */ b =3D modrm | (b1 << 8); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 switch (b) { case 0x3f0: /* rorx Gy,Ey, Ib */ @@ -4548,12 +4552,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) MemOp ot, aflag, dflag; int modrm, reg, rm, mod, op, opreg, val; target_ulong next_eip, tval; - int rex_w, rex_r; + int rex_w; target_ulong pc_start =3D s->base.pc_next; =20 s->pc_start =3D s->pc =3D pc_start; s->override =3D -1; #ifdef TARGET_X86_64 + s->rex_r =3D 0; s->rex_x =3D 0; s->rex_b =3D 0; #endif @@ -4567,7 +4572,6 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 prefixes =3D 0; rex_w =3D -1; - rex_r =3D 0; =20 next_byte: b =3D x86_ldub_code(env, s); @@ -4612,7 +4616,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* REX prefix */ prefixes |=3D PREFIX_REX; rex_w =3D (b >> 3) & 1; - rex_r =3D (b & 0x4) << 1; + s->rex_r =3D (b & 0x4) << 1; s->rex_x =3D (b & 0x2) << 2; s->rex_b =3D (b & 0x1) << 3; goto next_byte; @@ -4641,7 +4645,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) | PREFIX_LOCK | PREFIX_DATA | PREFIX_REX)) { goto illegal_op; } - rex_r =3D (~vex2 >> 4) & 8; +#ifdef TARGET_X86_64 + s->rex_r =3D (~vex2 >> 4) & 8; +#endif if (b =3D=3D 0xc5) { /* 2-byte VEX prefix: RVVVVlpp, implied 0f leading opcode = byte */ vex3 =3D vex2; @@ -4731,7 +4737,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) switch(f) { case 0: /* OP Ev, Gv */ modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); if (mod !=3D 3) { @@ -4753,7 +4759,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 1: /* OP Gv, Ev */ modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); rm =3D (modrm & 7) | REX_B(s); if (mod !=3D 3) { gen_lea_modrm(env, s, modrm); @@ -5179,7 +5185,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d(b, dflag); =20 modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); gen_op_mov_v_reg(s, ot, s->T1, reg); @@ -5251,7 +5257,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x6b: ot =3D dflag; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (b =3D=3D 0x69) s->rip_offset =3D insn_const_size(ot); else if (b =3D=3D 0x6b) @@ -5303,7 +5309,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1c1: /* xadd Ev, Gv */ ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; gen_op_mov_v_reg(s, ot, s->T0, reg); if (mod =3D=3D 3) { @@ -5335,7 +5341,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; oldv =3D tcg_temp_new(); newv =3D tcg_temp_new(); @@ -5557,7 +5563,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x89: /* mov Gv, Ev */ ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 /* generate a generic store */ gen_ldst_modrm(env, s, modrm, ot, reg, 1); @@ -5583,7 +5589,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x8b: /* mov Ev, Gv */ ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); gen_op_mov_reg_v(s, ot, reg, s->T0); @@ -5633,7 +5639,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) s_ot =3D b & 8 ? MO_SIGN | ot : ot; =20 modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); =20 @@ -5672,7 +5678,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) mod =3D (modrm >> 6) & 3; if (mod =3D=3D 3) goto illegal_op; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); { AddressParts a =3D gen_lea_modrm_0(env, s, modrm); TCGv ea =3D gen_lea_modrm_1(s, a); @@ -5754,7 +5760,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x87: /* xchg Ev, Gv */ ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; if (mod =3D=3D 3) { rm =3D (modrm & 7) | REX_B(s); @@ -5791,7 +5797,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) do_lxx: ot =3D dflag !=3D MO_16 ? MO_32 : MO_16; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; if (mod =3D=3D 3) goto illegal_op; @@ -5874,7 +5880,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (mod !=3D 3) { gen_lea_modrm(env, s, modrm); opreg =3D OR_TMP0; @@ -6728,7 +6734,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } ot =3D dflag; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_cmovcc1(env, s, ot, b, modrm, reg); break; =20 @@ -6874,7 +6880,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) do_btx: ot =3D dflag; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); gen_op_mov_v_reg(s, MO_32, s->T1, reg); @@ -6979,7 +6985,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1bd: /* bsr / lzcnt */ ot =3D dflag; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); gen_extu(ot, s->T0); =20 @@ -7706,7 +7712,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) d_ot =3D dflag; =20 modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); =20 @@ -7780,7 +7786,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; ot =3D dflag !=3D MO_16 ? MO_32 : MO_16; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); t0 =3D tcg_temp_local_new(); gen_update_cc_op(s); @@ -7821,7 +7827,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) modrm =3D x86_ldub_code(env, s); if (s->flags & HF_MPX_EN_MASK) { mod =3D (modrm >> 6) & 3; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (prefixes & PREFIX_REPZ) { /* bndcl */ if (reg >=3D 4 @@ -7911,7 +7917,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) modrm =3D x86_ldub_code(env, s); if (s->flags & HF_MPX_EN_MASK) { mod =3D (modrm >> 6) & 3; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (mod !=3D 3 && (prefixes & PREFIX_REPZ)) { /* bndmk */ if (reg >=3D 4 @@ -8023,7 +8029,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) * are assumed to be 1's, regardless of actual values. */ rm =3D (modrm & 7) | REX_B(s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (CODE64(s)) ot =3D MO_64; else @@ -8076,7 +8082,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) * are assumed to be 1's, regardless of actual values. */ rm =3D (modrm & 7) | REX_B(s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (CODE64(s)) ot =3D MO_64; else @@ -8118,7 +8124,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) mod =3D (modrm >> 6) & 3; if (mod =3D=3D 3) goto illegal_op; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); /* generate a generic store */ gen_ldst_modrm(env, s, modrm, ot, reg, 1); break; @@ -8350,7 +8356,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; =20 modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 if (s->prefix & PREFIX_DATA) { ot =3D MO_16; @@ -8378,7 +8384,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1c2: case 0x1c4 ... 0x1c6: case 0x1d0 ... 0x1fe: - gen_sse(env, s, b, pc_start, rex_r); + gen_sse(env, s, b, pc_start); break; default: goto unknown_op; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450055; cv=none; d=zohomail.com; s=zohoarc; b=SBmao42htmVYlKbWRXC1yFN4Pi/fQQwuvbLSNtwVy3fhBWtB9W1ocAWtEfyGZuYVZF3X9f6EsXJ0Tv1mjKDyQCq5zpY+ajMBqSCjEuYWOoZN1NelLLuySov01wTP0UvXmEVo3vcjMNPCOTw+1rkrXtBbiAGVbf0l6p85t4CkCCc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450055; h=Content-Transfer-Encoding:Cc: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=X/FFxNAJ2f0+Zc5rdCpNj+t2LEQqtzj2zkGTB7lInGQ=; b=JQ5xYz8FyCrc4TAR+8+u0phARiutUqmZBN4XYFsHxjlAZDoqQL6yToxPapDeYj/L+pMKfJTvlkz/XxnS2hrVKfoEaRDyteBV3nikTzJGM8oZP0UXcZB3jNCZPPV3gCmM1BNGv11TlZNQjgpMxibL9xd5hGGDirqBXFHyM4cyd04= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16214500553699.171715063259285; Wed, 19 May 2021 11:47:35 -0700 (PDT) Received: from localhost ([::1]:51416 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljREE-0001iN-A2 for importer@patchew.org; Wed, 19 May 2021 14:47:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51332) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyV-0003r6-4F for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:19 -0400 Received: from mail-oi1-x22c.google.com ([2607:f8b0:4864:20::22c]:36636) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyN-0005hg-Dh for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:16 -0400 Received: by mail-oi1-x22c.google.com with SMTP id f184so14009212oig.3 for ; Wed, 19 May 2021 11:31:10 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X/FFxNAJ2f0+Zc5rdCpNj+t2LEQqtzj2zkGTB7lInGQ=; b=dSPI+1oSgj7IlmfppGBOHSg8/2hCMFtI7ZO3ADTS2WGtaPsKVmlQOEtdEdyosMy1VZ IJajYazkvPbWiC731TGhxDhwXLaMe7kdePfkwTotvqcZB+kh8kGHSYx3enbThH4nE7QH MAibZYFx/0M2NagoCarmXyQGpDWrnIZ7xdSr1iqGBj3KpNoT4JBAaOcq5ynw58Ny205D sYg3PQtyzw8iPKVFyFvPDdhenxP0zL6Tuv4eYEuxj2mjhQcbV/EWuarBXHHMj09F16tw olBQYxdupT/q3b98sMLxbVrC3q+F8EQubO+tRdBzwWR2VnTEAkLQY3EQL3YCYQfcNxB3 P65Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X/FFxNAJ2f0+Zc5rdCpNj+t2LEQqtzj2zkGTB7lInGQ=; b=UvLwj89H3YOf7WoxJwa4BjVjtYHAaSDHr+TS9RNZD1EzHS/7AjmRxVByC7+FfKYV9P /zFisVQBVvs8beBB0JlCf49d0QhYV6B9oUwrAUSOQzuDjGh19FNHJ6/9VEAh6TDSZNMA eTmVhw0BghLK1ehuev1lJB4n1300ViThDwzqgauGQI4EOA/ORKRzQoygc/pV/W1ON1x5 5R5LnY3PDtX/5YNigwvOEadSGZUeGyqmfN9p0VYk9CjCRsmqe+KRw4zLiR12+enbhzLH z0BQ+Xc4f2GI6+gu3LpGeeHEBHWr+iLqgcPRpBt6iMk9CL6xsMsnIKCgL26N/wpGhDsm wNew== X-Gm-Message-State: AOAM532Bzpv669cl8peyDybLxN59/nW88cpsMHIVzQ4Wa92lJ26yu4H0 QK/QSsk0IDjRyvjvkbwAb3BUOfvzDmeM7+Um X-Google-Smtp-Source: ABdhPJxkOyFtnGlDxlyfihZZc3Sm5kL9BboDHZk+iML8PulSrR0TGrE9bL3cYdGhGnkmeNlOcGgTCg== X-Received: by 2002:aca:44d4:: with SMTP id r203mr514041oia.76.1621449070311; Wed, 19 May 2021 11:31:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 18/50] target/i386: Move rex_w into DisasContext Date: Wed, 19 May 2021 13:30:18 -0500 Message-Id: <20210519183050.875453-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22c; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22c.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Treat this flag exactly like we treat the other rex bits. The -1 initialization is unused; the two tests are > 0 and =3D=3D 1, so the value can be reduced to a bool. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-19-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 22175c6628..4222f09b6f 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -95,6 +95,7 @@ typedef struct DisasContext { uint8_t rex_r; uint8_t rex_x; uint8_t rex_b; + bool rex_w; #endif int vex_l; /* vex vector length */ int vex_v; /* vex vvvv register, without 1's complement. */ @@ -167,11 +168,13 @@ typedef struct DisasContext { =20 #ifdef TARGET_X86_64 #define REX_PREFIX(S) (((S)->prefix & PREFIX_REX) !=3D 0) +#define REX_W(S) ((S)->rex_w) #define REX_R(S) ((S)->rex_r + 0) #define REX_X(S) ((S)->rex_x + 0) #define REX_B(S) ((S)->rex_b + 0) #else #define REX_PREFIX(S) false +#define REX_W(S) false #define REX_R(S) 0 #define REX_X(S) 0 #define REX_B(S) 0 @@ -4552,12 +4555,12 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) MemOp ot, aflag, dflag; int modrm, reg, rm, mod, op, opreg, val; target_ulong next_eip, tval; - int rex_w; target_ulong pc_start =3D s->base.pc_next; =20 s->pc_start =3D s->pc =3D pc_start; s->override =3D -1; #ifdef TARGET_X86_64 + s->rex_w =3D false; s->rex_r =3D 0; s->rex_x =3D 0; s->rex_b =3D 0; @@ -4571,7 +4574,6 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } =20 prefixes =3D 0; - rex_w =3D -1; =20 next_byte: b =3D x86_ldub_code(env, s); @@ -4615,7 +4617,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (CODE64(s)) { /* REX prefix */ prefixes |=3D PREFIX_REX; - rex_w =3D (b >> 3) & 1; + s->rex_w =3D (b >> 3) & 1; s->rex_r =3D (b & 0x4) << 1; s->rex_x =3D (b & 0x2) << 2; s->rex_b =3D (b & 0x1) << 3; @@ -4654,12 +4656,12 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) b =3D x86_ldub_code(env, s) | 0x100; } else { /* 3-byte VEX prefix: RXBmmmmm wVVVVlpp */ + vex3 =3D x86_ldub_code(env, s); #ifdef TARGET_X86_64 s->rex_x =3D (~vex2 >> 3) & 8; s->rex_b =3D (~vex2 >> 2) & 8; + s->rex_w =3D (vex3 >> 7) & 1; #endif - vex3 =3D x86_ldub_code(env, s); - rex_w =3D (vex3 >> 7) & 1; switch (vex2 & 0x1f) { case 0x01: /* Implied 0f leading opcode bytes. */ b =3D x86_ldub_code(env, s) | 0x100; @@ -4686,7 +4688,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* In 64-bit mode, the default data size is 32-bit. Select 64-bit data with rex_w, and 16-bit data with 0x66; rex_w takes precede= nce over 0x66 if both are present. */ - dflag =3D (rex_w > 0 ? MO_64 : prefixes & PREFIX_DATA ? MO_16 : MO= _32); + dflag =3D (REX_W(s) ? MO_64 : prefixes & PREFIX_DATA ? MO_16 : MO_= 32); /* In 64-bit mode, 0x67 selects 32-bit addressing. */ aflag =3D (prefixes & PREFIX_ADR ? MO_32 : MO_64); } else { @@ -5082,7 +5084,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* operand size for jumps is 64 bit */ ot =3D MO_64; } else if (op =3D=3D 3 || op =3D=3D 5) { - ot =3D dflag !=3D MO_16 ? MO_32 + (rex_w =3D=3D 1) : MO_16; + ot =3D dflag !=3D MO_16 ? MO_32 + REX_W(s) : MO_16; } else if (op =3D=3D 6) { /* default push size is 64 bit */ ot =3D mo_pushpop(s, dflag); --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449897; cv=none; d=zohomail.com; s=zohoarc; b=HEnwKFHLH/NnZIpcb8zgxSVXrWzEDeoTo89AE1cfFNOhJflLqScjb5W2MKCV8s9oF8chM16r3uOQSJBQDe5JbLXHkzgBtgu1VXXJngWtDYljOpAS7Zon+FOQJgeFRPdl/EvN/grzuNai3iIsyntj6sUIbulNrB9gShaUAjeAS80= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449897; h=Content-Transfer-Encoding:Cc: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=Fn0fKM7b0/WeEivTWmPBKTYTf/IZtNjtnp7j7fWEKko=; b=S73KcSjPC97oVgRp+VBrM6S5dDlYdE9IRIkLAeyCLbg8HkQToZh4ueq5WEuqELS65hzTxE1AKmFIiu2TtXtN6TAuqRCT9VmjXNEj+lAaUtKMnm3UE0+Th0UrCtlrwa5IoM8mJ0ZJp24pkmuwY3jTnZbKErGdWZKPrE+/FhOdIK4= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449897202320.8158963039923; Wed, 19 May 2021 11:44:57 -0700 (PDT) Received: from localhost ([::1]:45680 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRBg-0006Ah-5W for importer@patchew.org; Wed, 19 May 2021 14:44:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51456) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyb-0003wE-Dn for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:25 -0400 Received: from mail-ot1-x32b.google.com ([2607:f8b0:4864:20::32b]:44942) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyQ-0005hx-2k for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:24 -0400 Received: by mail-ot1-x32b.google.com with SMTP id r26-20020a056830121ab02902a5ff1c9b81so12603139otp.11 for ; Wed, 19 May 2021 11:31:11 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Fn0fKM7b0/WeEivTWmPBKTYTf/IZtNjtnp7j7fWEKko=; b=EMVQAn+dU7L1xJ43dazypz1TrWN1ybsmjGSTD24JVMcFQGHmA4OQbiTSm0YaU0Ids2 qqBdCLjG6sg34kkXQGIRYaJNGHHVfBxgcGbJNXncJ4VJw7tOXf40NYoTRSw8tXZk3K6m qoAmD9Cp/83b7UBMOiZ5qPFJqT7ipe8uMdiXB6z0x4scWQajfTrrLIMHsveI8EDsOuO7 j6/AunCOPLLDgyn5oiu6d1e4fhoEQbD9ucAAV/jHbQ0kgI1PH4qwgQBZi+5KEvQjGocF H3WbKzp1yw2iU5a798XKoNpT5L1qW1VmOUa4rXCIk1UWo0w9Ybi2juEVZD3+p4UgIwlq ik7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Fn0fKM7b0/WeEivTWmPBKTYTf/IZtNjtnp7j7fWEKko=; b=kUWXlltGbCwlPWYLeX0QYy/IUNYdjH4phVXq9htTfwvyWCPW3GLllM2t/CVagxSy1F peyst7dvTSQwd3wRV9WVRv+7118G25mqA7z5gX64grDgYgq5QFloYaI7oy9GtJlJ7nDx igh3ElR0IWSnCRfk77DuFgnkfimkldicE/Hqw3T+97UrSO0U6e/zu/GzjhHNlINRYQfT mO0ECNU/hUtjAvh9PjguD0lFSNz/i2ISZlsS6uy2fw0ZUpXUZnfE/NPzGay7xH+/UyHC PKMYQfoMTK7/9CaCDvSEKmtaU+MNyUjGh2Kbc2vfj9Mgne0YEdoZO2rD/Lh505l3WFj5 Rq7A== X-Gm-Message-State: AOAM533auUoYUNM/lyQLjmutWpibFNsm/WhAZUDQNG4gyiUXU/4bgwVk RCipqkQASPdqiDNlZr5R0ENWCA8Inrpti7dy X-Google-Smtp-Source: ABdhPJwwn6UsZFKp/B0pTdvPk29BzTA3S1ZXGSWRTu5BtcsGsiZL28j9Q2Res1CUZlCAvLBO6/TMBw== X-Received: by 2002:a9d:7a94:: with SMTP id l20mr661790otn.46.1621449071287; Wed, 19 May 2021 11:31:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 19/50] target/i386: Remove DisasContext.f_st as unused Date: Wed, 19 May 2021 13:30:19 -0500 Message-Id: <20210519183050.875453-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32b; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32b.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 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-20-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 4222f09b6f..7e296b39f5 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -101,7 +101,6 @@ typedef struct DisasContext { int vex_v; /* vex vvvv register, without 1's complement. */ CCOp cc_op; /* current CC operation */ bool cc_op_dirty; - int f_st; /* currently unused */ int tf; /* TF cpu flag */ int jmp_opt; /* use direct block chaining for direct jumps */ int repz_opt; /* optimize jumps within repz instructions */ @@ -8507,7 +8506,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) g_assert(LMA(dc) =3D=3D ((flags & HF_LMA_MASK) !=3D 0)); g_assert(ADDSEG(dc) =3D=3D ((flags & HF_ADDSEG_MASK) !=3D 0)); =20 - dc->f_st =3D 0; dc->tf =3D (flags >> TF_SHIFT) & 1; dc->cc_op =3D CC_OP_DYNAMIC; dc->cc_op_dirty =3D false; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449708; cv=none; d=zohomail.com; s=zohoarc; b=WeJxWhcWfWEP1NyJ1KB6xDZcybhSIpD0HDum1xfh7SoRgch7uvmQfeyoAacjR8Be4FfEwwcGx2jhFCZwdzhLKGl9RP+aBJeLeN/QWJ6099sNu3ZWWR80dowrpnf7vRZqB34xdQVZAAA6XViS3UZUtoSg8aAiTh6SN8Es1yQEiWI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449708; h=Content-Transfer-Encoding:Cc: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=QgY/O+HXE0Z19LMDWbzIdcxZYSvNYsLpXbLW2u99c0A=; b=abQpo51BKP9BsnHREERgUO9TYPO/AnoNwiZlFRKMJYCnus+tzbzQZooimaT1V+OF07JffIVF51BKORilETH/vxIWh+aBrGA2BAJqgusR/6Y2eRkkbhCwJuxZBBLcf29o3RPSp0KM8AVKIyR5vHRfINj+kkvvSqcBK1bkIMGhTjc= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449708308962.639074756406; Wed, 19 May 2021 11:41:48 -0700 (PDT) Received: from localhost ([::1]:34222 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR8d-0006y5-C1 for importer@patchew.org; Wed, 19 May 2021 14:41:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51466) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyb-0003wd-Jf for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:25 -0400 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]:39586) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyQ-0005jE-7Y for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:25 -0400 Received: by mail-ot1-x32e.google.com with SMTP id d25-20020a0568300459b02902f886f7dd43so12620544otc.6 for ; Wed, 19 May 2021 11:31:13 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QgY/O+HXE0Z19LMDWbzIdcxZYSvNYsLpXbLW2u99c0A=; b=iE1oZVubVcwOCj1VnNq6+rjnwgMRC03fT6VHXnyniK67jo2NiA073wYGesiEjx9Qyx gQEEUXoNCxiaCw+PtoudW5sZD2ST1ZPWbpI87NQX18yLJrKSn9VOVNIQ+JGOW6PxhA3z CEYzXMKwmnhfq06msa0L3P3zbwau8GbZuu6ZF38Z8DnCu6DVHgAzXHo50Lx85d1KDEes BoZ3BJ4Y+VPrKl1Uk7gHBq3KFfLE+2d060FqSXWiujns4mH085fcp6sPaVPuKfaiTqaX UjxhXQc4tMbHUgjpuyGXFj9mLaiQ3cmzcW/qALpCOzr1Cluml+pl3SnJB9Tdw0CmARwa OEXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QgY/O+HXE0Z19LMDWbzIdcxZYSvNYsLpXbLW2u99c0A=; b=f84ajjYJ5/ZeKCdq6AI/yyCU4IU14lKY59fWH6FnAV+O4ZxduEfjTkqkhhruy7yX1r ucf6q/C2XLgChPL8kssreOqp8vQE2MMrRp+XCqJ+MwVkXlvqqRRCJiDgsEvc01A3eR+Q UQTSlnHH7gfKtWkLEkUm42Zqv0F63t5U9pWlG/HlADpLkNOm3sVX8Yi+iCuLMKuMqjIb P8UnOn4kyl0RIEOA0yRDHtmHLxx0wEvln3r6d6nmSN9KsERBFNvwwCn/OcYucSwKL0sd R396anLHPid2/GYL6L/ggcTh33tmXfPsarV/ByKg5FVauS9dTb+V8OHmRTPxH7L+Hs+D SqEw== X-Gm-Message-State: AOAM533lWrZabq97udMlSBf7NvhBBqtxhlupS+bVb+NvmQHaaPIrG502 fYiSMy2JjQXPkGHLBSd0nBQe9oqPCMXAIwrw X-Google-Smtp-Source: ABdhPJzVaWCn+8/jlFxi5cYzNgBITQf9DCEMzyAmKXiqePoK6Ya4RTyLqnpIAoHMMemR60X/QfjYYg== X-Received: by 2002:a9d:4b8a:: with SMTP id k10mr656433otf.131.1621449072334; Wed, 19 May 2021 11:31:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 20/50] target/i386: Reduce DisasContext.flags to uint32_t Date: Wed, 19 May 2021 13:30:20 -0500 Message-Id: <20210519183050.875453-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32e; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32e.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" The value comes from tb->flags, which is uint32_t. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-21-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 7e296b39f5..ca7f0a8cf4 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -105,7 +105,7 @@ typedef struct DisasContext { int jmp_opt; /* use direct block chaining for direct jumps */ int repz_opt; /* optimize jumps within repz instructions */ int mem_index; /* select memory access functions */ - uint64_t flags; /* all execution flags */ + uint32_t flags; /* all execution flags */ int popl_esp_hack; /* for correct popl with esp base handling */ int rip_offset; /* only used in x86_64, but left for simplicity */ int cpuid_features; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450464; cv=none; d=zohomail.com; s=zohoarc; b=S5c+67aM5n9fbHr2q9FZe+z4M4P8P4TjooB+9B2q+DwgLtPKQD4rCfnsZEc4t2oArPlGwwXcTqoU/SW0JieoeFWXNVrN1I5SSFWox3yWDcjFK1CB7/Mkw59aT39+xZdcXANPZ4orfwJjPVKwfFIz6nX9ARIqhDWYMk4nmoWPUfo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450464; h=Content-Transfer-Encoding:Cc: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=ISIsOoWcwTH4BDSJWMIHj/fX6z00Tw3LJoEr5p/Nk/Y=; b=NPSMHoc07cpWHEy0g2u2aLzca8Yo70dsMtXsni9/oSlxETqNNrW72tbtT0Y+fh4uGZHQqf5/kEEss55edPDvpi6ZYqLjRO/NpGZENxHOJeZK4QecxWprhIxUM3Nw/6onTZhdm93MxQ2uOe66MPcWzyVEk0UPnBJHjTw1/cS0mEs= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450464695574.827768039885; Wed, 19 May 2021 11:54:24 -0700 (PDT) Received: from localhost ([::1]:49146 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRKp-0002BN-Lw for importer@patchew.org; Wed, 19 May 2021 14:54:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51582) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyh-00046J-C5 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:31 -0400 Received: from mail-oi1-x230.google.com ([2607:f8b0:4864:20::230]:35694) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyS-0005jN-2z for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:31 -0400 Received: by mail-oi1-x230.google.com with SMTP id v22so14011044oic.2 for ; Wed, 19 May 2021 11:31:13 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ISIsOoWcwTH4BDSJWMIHj/fX6z00Tw3LJoEr5p/Nk/Y=; b=YL5SJtM5SLj3V/NXuE/wB9iAay/5y0Wx8R2hSbf46JnpUvv83/T3zf3ceBDSXGFWM2 81RTtkw1aEEuSdtedqp0K4MbnUr5tyAnm6t6iGh7CFwYyfALWDEHgtybqEX9xlfSNXQh aWSzX1bUxlJI1V2/I8QV5VY7CUW9FRzvokKMk2Dwz5sx3O8Z3Qn7XqkeE83wQ4HkMh+Z AECkcWtQOPl8C8Jld/zPydQRFcJ7Z04Wy0ZwZNWN6XteanNy3MpTZRSAxSYYvlTjAyje TqB0gVPznzvykPyB2X/Q1J6T4Mvn2kaJ278d5o+C/HeKja1m6nEBy2iK22DWHrYuFYQ/ NmcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ISIsOoWcwTH4BDSJWMIHj/fX6z00Tw3LJoEr5p/Nk/Y=; b=C5k8gj2xStkufjH0da1QzScQnXwa8aTfONoBiGDpZdUtq4FZm1w0LCOD/O9fpSiusj oW6DvkocsmFPl5DvgE6i8BRHeOFQ2YgDrdKCrDKzG7gEFVG7Z0GbD3A8nnWkw+2OYMBs 6lpMqxyP0kzG0SCK7u1vaPaUKBe6TM+ByW6s3rKXxA8nLHh1UZT6F7l7DNXfFZMSk4F1 wKzir9vM/KlgHfS/Ml/+wnWUndStIvbyQuGLtzlS1xritrssi5LWOWwCan9QXVvw9Mdt zDmXylQfrwQOGsbeyJTedxBLavd7AeiTYx9WSsZO85alrP/dMTZqquP3FgEw+wmyrsbO QXiQ== X-Gm-Message-State: AOAM531IsTVuLfENb9fB7c6y1iaAs1wGJYSSHLlHzGhI/KUydYsHkwke Dw7Ir0VgrAGTQbw/ci/Xr1NfmfMJlVCvi0nd X-Google-Smtp-Source: ABdhPJxysgRsmnXaR3hMUHa4mmFvS+eqvZcfKXjMaZrttE3RvvxbRWel0TtzSCMBqCrQ3LQ3Cl6JOA== X-Received: by 2002:aca:1b15:: with SMTP id b21mr489787oib.155.1621449073268; Wed, 19 May 2021 11:31:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 21/50] target/i386: Reduce DisasContext.override to int8_t Date: Wed, 19 May 2021 13:30:21 -0500 Message-Id: <20210519183050.875453-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::230; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x230.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" The range of values is -1 (none) to 5 (R_GS). Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-22-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index ca7f0a8cf4..44a28858aa 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -77,7 +77,7 @@ typedef struct DisasContext { DisasContextBase base; =20 /* current insn context */ - int override; /* -1 if no override */ + int8_t override; /* -1 if no override, else R_CS, R_DS, etc */ int prefix; MemOp aflag; MemOp dflag; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449767; cv=none; d=zohomail.com; s=zohoarc; b=evdYHnGJc1n4xcrTlgUyAvprpFYx2tS4tgdOxU4PwcDsOqesCAaOGHbdZXd9ewsRbr9zfh0Sr+amvV7/aCNu3YRZEBrnlpm7dWeTOcochXdWmDa6lhBG2HlO67pPDBRFfNE0CGcaiwhD1sabiiu7/yC8Uf2kDE/EKsFnvDLb10E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449767; h=Content-Transfer-Encoding:Cc: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=L1q+mpwSa9G9Zc5+8vLZr7OPXyD4MHPxLRrUGJAX/p0=; b=Zc36kvxjCeqWD0asY+KwTp2feQwWTgKwfKCN5nJlGIEIZvP7vvyb8WpLC++KwJGouAOvTuE5M3TL9hHfQnsegykugk2dTemW2DKTzrMUQyiwqujhtkooEeRCv/RRhPa5gurVtT1tEON/7ulGQnuEwwx+L/49Ditzukj3ih/IvY0= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449767917216.27339095687535; Wed, 19 May 2021 11:42:47 -0700 (PDT) Received: from localhost ([::1]:37132 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljR9a-0000UI-RA for importer@patchew.org; Wed, 19 May 2021 14:42:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51414) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyZ-0003ux-Np for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:23 -0400 Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]:35666) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyS-0005jf-4H for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:23 -0400 Received: by mail-ot1-x329.google.com with SMTP id 69-20020a9d0a4b0000b02902ed42f141e1so12616337otg.2 for ; Wed, 19 May 2021 11:31:14 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=L1q+mpwSa9G9Zc5+8vLZr7OPXyD4MHPxLRrUGJAX/p0=; b=cwbra9EE0ahqxbcpgSwskeZncyAuIlhmrOzl/MTrw1O/+MDEWkZzV0FSyuF1TTdSnA oWCSn84PK/kfcMcyFiPg+v5jxZm8erjcIfnFRTycU06vRciZTbACzBfDz8MpBQi7JV0p O2JcdkVxmcFSxzQXSggx6XMPkomZMtpiUWcRGg0+/NPRZUB9Gy0OCzu3mlpyv3Dpq3ub 2OE/axJB7S5EvUV9hGcqDWAHVSUjL83YbxE7gLvA8OnurSSi8pcHGhjURoWB6du6KWNU bD0YOnphSzCFHF9rABjv/2V2DkSX5S72pC6/mmoKU7gO5OfocAj1N/tmNLISEQQtF2tf HzVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=L1q+mpwSa9G9Zc5+8vLZr7OPXyD4MHPxLRrUGJAX/p0=; b=o+UhvcVD5jLlImLhanxI56efr9BRmDxTB5Tdzwomki55DpXiLb/UrgD8+ws0JB0jNm bFpDn+eevwrpNbMEv+PQrpTJg4lLwFUpnCHw24hGMtmyOusOzZM2LKN+lGC/XBp7LZH3 maF8MRAWe96HyuoHP1mAcmFjTJ7SJiGfHHbnCGN1zIa6nd+js7txmB9QgaUZK140XTC+ tJh9Btvg6IHo4RkymwXHHFyVelob5Gz4/zTgyhuoFBqjew78bL4pyXchRf254jOB7YNt bpzlrSiMOTJlXkdpgo1xY6HDI2xZwrHgOxUTfXx6Jx5o1jhCPUQuC56miEv43XjYFdBZ yluw== X-Gm-Message-State: AOAM5316tqlxIwyvmIdGpdNPwwUjqtikSRR5glPKMN/hl2Brbn4u5TeB kNPTz24AbXMfdYDOYF4gd5j7/vEu9XaCcFy6 X-Google-Smtp-Source: ABdhPJz76A7vb4LwopZW+ZtQ4j/zpx8n0R5gfWUHgu7s97CyftXq4OzQuR/fpP9tBBQAbMxc792NIg== X-Received: by 2002:a9d:c64:: with SMTP id 91mr669039otr.130.1621449074246; Wed, 19 May 2021 11:31:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 22/50] target/i386: Reduce DisasContext.prefix to uint8_t Date: Wed, 19 May 2021 13:30:22 -0500 Message-Id: <20210519183050.875453-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::329; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x329.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" The highest bit in this set is 0x40 (PREFIX_REX). Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-23-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 44a28858aa..61c0573c2f 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -78,7 +78,7 @@ typedef struct DisasContext { =20 /* current insn context */ int8_t override; /* -1 if no override, else R_CS, R_DS, etc */ - int prefix; + uint8_t prefix; MemOp aflag; MemOp dflag; target_ulong pc_start; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450114; cv=none; d=zohomail.com; s=zohoarc; b=RNBVmb+NAQIhtedNS6iWBSvLI8tbkhQKE8xj+MEu1iqRYjhWjwoSCE/4FK9xhfApV0P7gbTGRgmCaUF7URHngyXTyMg0W67GX0GCFPr5+Z25u2VgBAcxGKLNx4s2eY2LrEWUgxGY8p3i/BLLEbbaPqjxYrf0X8YQZpQKN3ilv18= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450114; h=Content-Type:Content-Transfer-Encoding:Cc: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=MmALl6+SrAgZGE+y4AHRDA6ukcJz+jYrukcq8t6BAbA=; b=kJ5Ch/NVxaY9YC4/KCkXbvcSHLipnABv9E44SbA6MwMuijjWHyz8t3elSxZMWtbE+NiIKcniS3onfQZyDbVIxBlERCuSclSFB1kE32SEJaVNVSRTgsUsWB2AeD1vrzQzB2SonhgQ3VThp4WCDpEIElvHrPdhTteXeW58KeuewP4= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450114723629.7283734115834; Wed, 19 May 2021 11:48:34 -0700 (PDT) Received: from localhost ([::1]:54282 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRFB-0003dU-LO for importer@patchew.org; Wed, 19 May 2021 14:48:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51536) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQye-00043P-9c for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:28 -0400 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]:34688) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyV-0005kB-AR for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:27 -0400 Received: by mail-ot1-x32d.google.com with SMTP id u25-20020a0568302319b02902ac3d54c25eso12656592ote.1 for ; Wed, 19 May 2021 11:31:15 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MmALl6+SrAgZGE+y4AHRDA6ukcJz+jYrukcq8t6BAbA=; b=E7Qi3grS40snfcUegvCNE9Ukgir8DUOneR0HOdM/5u5omYiQUBx7LZcCSxX/vR/4f4 oMoBuCl1B0xNEqfsHb49O7mtmUgrm7jZTvwODPlXZxbS48NvuWWhqtiS7tbs6VlQWX70 Z66N5Lo0CjCSAkVeP0dauTMydVlZlUBL1nK8jNvpP6UJpa+nTfhjA/BN/ATlcwyxMcSz CRWh5lR7j3wlE7EvMkGn8oqO1kzDzcX3K3WRC2/0ulZdDdvVDvAmsQeqrBZU4QHG5TUn 3M11lFfdWqzYKD/JFNIaF0VGX/xFsj54nluKLp4kLsxMhmuoYo+nCqZ3jkcu7RPZLxlx YoOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MmALl6+SrAgZGE+y4AHRDA6ukcJz+jYrukcq8t6BAbA=; b=P8o9EnfsQyGzVWliOgg0BnBBQKvApROq/FQj7+IiEN4ly/2LZ+h80vyZzCfcZBUQ9F iSRRJx1kRhdcoI2FCNptSzijBnqZE/J2HD8bh0X7V12/vi1ZQtTfXyncGODPIVfV4wSk oinp4P3kaUd75I2UHZt/Zg5s6R2WG6Re1up6TpqQ1kh27mCcQOzoEAPo8/JQNYCoeo5V AvWK8Ig27dekXms98lb784HQcoYtFfDPnk9wM/3me1FFSG0xNAAXQa4BA0NTh/OSXaTi w8dTFAGURwvAKxiWaBh0E231V1W8N1vJSCZNkxF8yds9401NVbp/Ar2L0EMdqdHOUQTv UDyA== X-Gm-Message-State: AOAM530xERdEGhx/juKhURmnGv5La5SfvrQ97/kaxVz7njx0DY2xPtqv AhJO2Q4e3OXJXn+I5Mn8C6/FkOzC4gJZ2sXA X-Google-Smtp-Source: ABdhPJw9feZSzAdfxpfZaVAs+i4pVfna9mhjfiAYpQ2h98QwalOfXvdv9qZSsPQ3BENI25ipXco4CA== X-Received: by 2002:a05:6830:1e6e:: with SMTP id m14mr626268otr.215.1621449075289; Wed, 19 May 2021 11:31:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 23/50] target/i386: Reduce DisasContext.vex_[lv] to uint8_t Date: Wed, 19 May 2021 13:30:23 -0500 Message-Id: <20210519183050.875453-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32d; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32d.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Currently, vex_l is either {0,1}; if in the future we implement AVX-512, the max value will be 2. In vex_v we store a register number. This is 0-15 for SSE, and 0-31 for AVX-512. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-24-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 61c0573c2f..1367e53e4e 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -97,8 +97,8 @@ typedef struct DisasContext { uint8_t rex_b; bool rex_w; #endif - int vex_l; /* vex vector length */ - int vex_v; /* vex vvvv register, without 1's complement. */ + uint8_t vex_l; /* vex vector length */ + uint8_t vex_v; /* vex vvvv register, without 1's complement. */ CCOp cc_op; /* current CC operation */ bool cc_op_dirty; int tf; /* TF cpu flag */ --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450379; cv=none; d=zohomail.com; s=zohoarc; b=G5f4UPxho1Atajtk157jYiqKCIu+CjVVOwDrQ92ZMEIn5Omrp1uXtIzaQbSgXD/tlCW6QVo8pbZ3m/KNre1p/GK4csks9UeI1TZxz5hA/Qh9ITOB9y4l7kIvSKTFiA0mw2MuJCVLPbQtM4jpwvlswJpV/8e4tD/aA3jrg1M8Qy4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450379; h=Content-Transfer-Encoding:Cc: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=GrHhxNQ2eayYuE4IBP3WlrTHRS6oVMsMWIzwFX+Pnhg=; b=cP50D4K6SS4lTN/pLvjXfLpWELb2pIoAwtFKreoFfhomNa74xKpVe7Xg81N8jRboxsArP4CAR9WCYZvuVLgrKI50k340ta4hX9t5quJ4kQKXQ9GfTUCSKy0qk9yfTkFDXnnlDC10i//djW73eKKKclf9XqGH2V4cRABgVb+pLmU= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450379219431.6861394819572; Wed, 19 May 2021 11:52:59 -0700 (PDT) Received: from localhost ([::1]:43254 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRJS-0006gY-6I for importer@patchew.org; Wed, 19 May 2021 14:52:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51708) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyo-0004Mh-0s for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:38 -0400 Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]:39590) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyX-0005kR-Lq for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:37 -0400 Received: by mail-ot1-x332.google.com with SMTP id d25-20020a0568300459b02902f886f7dd43so12620684otc.6 for ; Wed, 19 May 2021 11:31:16 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GrHhxNQ2eayYuE4IBP3WlrTHRS6oVMsMWIzwFX+Pnhg=; b=zkE/VXXPNobvU5rkMIboe4XMjSB50f7auI7KGHmSGTjq7ehWd3DYdR8DTpqzbtxHDQ r6lKlXjWEfq8s0bzPGBBxSM+P7lJGORDYCYZnrHI3k0639vsfZ3qGd3RLKbo+YD3dyaZ e5fVdOzx5r4tbErYtHYbFV0Mxtrc82YudbOcbeN/EUQrjbNfA8iATj+BT8gbSu+kM0fX CoOU98m/5kdJqg1AQo49woLI4gHhemnzSQljezNy+BcP5q38DcoYAE1L/9Vz3RXP9D4g HLeKI55GRFVZHiEjVmd8DyTnG/W69/0qdgBBabn9V4ZPS664Nk631k2pac3PNXuhJqM+ 8mCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GrHhxNQ2eayYuE4IBP3WlrTHRS6oVMsMWIzwFX+Pnhg=; b=CMfn2CqbPGWuDSzm3BHWR3/YUY36q6OYV24yw20XKU9E9fslKXqM/m967fd80J2oH8 RYI0zDjC120NDdw/Iz1sEJxp2kG1oDyvgOCSy84Kd1J70lZB7AxgPq4TrH9kY7Y17b6H Cw5bTqTFW4SF51idZg/5GqNhJhLP/gitWvtuiidAW2TTWdIgeR9Arh/ikwYT0jhNWNR/ URu2cX8hs3mpDp+KNcx9SGWog0cerqDNo3zIasqBn3qPwLDiD2JTpI5Lx5SFrJckreaX iHgf3VcdDxZL+bZTbn9dmQ7KOEmh9kf8LmT6DcY5chHiBQl7s/qv4v4v9bsEcNSqQQyH IF3w== X-Gm-Message-State: AOAM532A8cx8CV8wsuGnE9leKMty2Q6JDwZWN00RCdO5YSH+/whIu5pb NHj5C71Fjh08GxQEvc2dmBg5dRUk+3ZK40xU X-Google-Smtp-Source: ABdhPJzQtdaQt13jdC3QqET7peehWRpZShEDLvY1i+UL+526W+rnX/Y/1KTLi44nXtsMfH2iaxyyag== X-Received: by 2002:a05:6830:611:: with SMTP id w17mr637101oti.225.1621449076241; Wed, 19 May 2021 11:31:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 24/50] target/i386: Reduce DisasContext popl_esp_hack and rip_offset to uint8_t Date: Wed, 19 May 2021 13:30:24 -0500 Message-Id: <20210519183050.875453-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::332; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x332.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Both of these fields store the size of a single memory access, so the range of values is 0-8. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-25-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 1367e53e4e..847502046f 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -106,8 +106,8 @@ typedef struct DisasContext { int repz_opt; /* optimize jumps within repz instructions */ int mem_index; /* select memory access functions */ uint32_t flags; /* all execution flags */ - int popl_esp_hack; /* for correct popl with esp base handling */ - int rip_offset; /* only used in x86_64, but left for simplicity */ + uint8_t popl_esp_hack; /* for correct popl with esp base handling */ + uint8_t rip_offset; /* only used in x86_64, but left for simplicity */ int cpuid_features; int cpuid_ext_features; int cpuid_ext2_features; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450720; cv=none; d=zohomail.com; s=zohoarc; b=GewER508kbEwpf9DOTKFtJs/IAjLBucRdnKLMdCfZ/MdQ9CWU+cKn9Y/87nunclnpY+XpmQi8uH6JLp1L8lXK/ARWA1MttHhe7H6RaPoX2Gp6rY1UP5+ejjgAp5QmFEUxSOeKyyOjgM7R1nXVcywxt9P9fIIzrL2uQb2PdAiIVA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450720; h=Content-Transfer-Encoding:Cc: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=ppegi43nBBiUhTlh14mXrYNLMdDVV4yeu967Ro8CEyE=; b=hDxgxMb6q+dls4/jyS8VtXdu2OGNaEwsHAjzbxDzxkRqR4vqgoXnWMgk+4yhj4d2Z8vF3v3qln3G/fuLnKtkksS7SLm0jBIr8ZQkyYA4Ibp4HKkYxbdG/CFDtnsFYNL31EY/br0HZmWhOIKw0oB2sT71L/wjTCfLVu48w93O/DE= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450720800270.5570130878202; Wed, 19 May 2021 11:58:40 -0700 (PDT) Received: from localhost ([::1]:38016 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljROx-0005CE-NB for importer@patchew.org; Wed, 19 May 2021 14:58:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51642) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyk-0004Em-MZ for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:34 -0400 Received: from mail-oi1-x230.google.com ([2607:f8b0:4864:20::230]:33469) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyX-0005kp-AJ for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:34 -0400 Received: by mail-oi1-x230.google.com with SMTP id b25so14061177oic.0 for ; Wed, 19 May 2021 11:31:17 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ppegi43nBBiUhTlh14mXrYNLMdDVV4yeu967Ro8CEyE=; b=ChABmZJzZ07FBQMY2bT1o4YjK4a0kjdT9w6RZkx3gsBGSnFngaeC7oGikOXGUqYguP 8WsyzVvFgxk7HwB2+bRZW9rHvXDQviog4xMu+9z11/s5S8jvO9nl7KsfGPZPLaXDH/N2 7qPWxFZ0AtQWExh94mLO8YS5KD5R6H+94xpmUnPBrXBktCZObS0vKlvamgpDjnY30C5n xO30VGopal4QpY+2Vty9j/iufTrnOKaoOeP74Y88oIH4pETEDIrSDoAIY9liqp8b1kLm WCyXOMMaQHPRvd8exbNL9fEuMMpvA8FxGCtz3PE31HfAvwOEj4zAcTcNUFyOnhmaoELf 9yjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ppegi43nBBiUhTlh14mXrYNLMdDVV4yeu967Ro8CEyE=; b=RfKdm8oFes2PtGnY7Oqrtojql7T4PPowfo7uqe3Lkhwcnjm/Nu9p2jI/5z1divneu2 cJbXqsUy4X4u1HCa5mzehwwXze2yakp5KK1xyLpNHw/aUJ2OU11b5AuV//7DsXD5iXkc Hu344eDgxS7/5VeEgthohvyPSeQolBFkThirFiFl/N9yYKqZOwVYyJU77ESJLOK0G8fP gQxxho6CbtGhkMYEZmS00xwmhBh/YAMCBp38+PRsu5Aj1vdgZpsm8LS827wGLuBAKKbM LWMVdklfSdUoIyvNsAidfUJoFza4xzaY5ZaR97FqfDGw4HMG/ki+mLqwH4W9WOsjjAWR Fjyw== X-Gm-Message-State: AOAM5324Se0RDlhIyS+ALx/oE3LOOJ7v4UmnA8fFkwrv/8lo455EopCU iYXRTz13eRHtb0JZyhi0VwwIFZHxEXP2hfKq X-Google-Smtp-Source: ABdhPJyNosnelrgQB4+aAWE86bNJup6o10dxuCnmhVbXI9a6pMkHjWlcAE+/Pkw294HCRNTpAk7hhw== X-Received: by 2002:a05:6808:d:: with SMTP id u13mr378932oic.103.1621449077251; Wed, 19 May 2021 11:31:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 25/50] target/i386: Leave TF in DisasContext.flags Date: Wed, 19 May 2021 13:30:25 -0500 Message-Id: <20210519183050.875453-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::230; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x230.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" It's just as easy to clear the flag with AND than assignment. In two cases the test for the bit can be folded together with the test for HF_INHIBIT_IRQ_MASK. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-26-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 847502046f..3f6214c624 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -101,7 +101,6 @@ typedef struct DisasContext { uint8_t vex_v; /* vex vvvv register, without 1's complement. */ CCOp cc_op; /* current CC operation */ bool cc_op_dirty; - int tf; /* TF cpu flag */ int jmp_opt; /* use direct block chaining for direct jumps */ int repz_opt; /* optimize jumps within repz instructions */ int mem_index; /* select memory access functions */ @@ -2656,7 +2655,7 @@ do_gen_eob_worker(DisasContext *s, bool inhibit, bool= recheck_tf, bool jr) } else if (recheck_tf) { gen_helper_rechecking_single_step(cpu_env); tcg_gen_exit_tb(NULL, 0); - } else if (s->tf) { + } else if (s->flags & HF_TF_MASK) { gen_helper_single_step(cpu_env); } else if (jr) { tcg_gen_lookup_and_goto_ptr(); @@ -5540,7 +5539,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (s->base.is_jmp) { gen_jmp_im(s, s->pc - s->cs_base); if (reg =3D=3D R_SS) { - s->tf =3D 0; + s->flags &=3D ~HF_TF_MASK; gen_eob_inhibit_irq(s, true); } else { gen_eob(s); @@ -5606,7 +5605,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (s->base.is_jmp) { gen_jmp_im(s, s->pc - s->cs_base); if (reg =3D=3D R_SS) { - s->tf =3D 0; + s->flags &=3D ~HF_TF_MASK; gen_eob_inhibit_irq(s, true); } else { gen_eob(s); @@ -8506,7 +8505,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) g_assert(LMA(dc) =3D=3D ((flags & HF_LMA_MASK) !=3D 0)); g_assert(ADDSEG(dc) =3D=3D ((flags & HF_ADDSEG_MASK) !=3D 0)); =20 - dc->tf =3D (flags >> TF_SHIFT) & 1; dc->cc_op =3D CC_OP_DYNAMIC; dc->cc_op_dirty =3D false; dc->popl_esp_hack =3D 0; @@ -8521,8 +8519,8 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) dc->cpuid_ext3_features =3D env->features[FEAT_8000_0001_ECX]; dc->cpuid_7_0_ebx_features =3D env->features[FEAT_7_0_EBX]; dc->cpuid_xsave_features =3D env->features[FEAT_XSAVE]; - dc->jmp_opt =3D !(dc->tf || dc->base.singlestep_enabled || - (flags & HF_INHIBIT_IRQ_MASK)); + dc->jmp_opt =3D !(dc->base.singlestep_enabled || + (flags & (HF_TF_MASK | HF_INHIBIT_IRQ_MASK))); /* Do not optimize repz jumps at all in icount mode, because rep movsS instructions are execured with different paths in !repz_opt and repz_opt modes. The first one was used @@ -8597,7 +8595,7 @@ static void i386_tr_translate_insn(DisasContextBase *= dcbase, CPUState *cpu) =20 pc_next =3D disas_insn(dc, cpu); =20 - if (dc->tf || (dc->base.tb->flags & HF_INHIBIT_IRQ_MASK)) { + 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 --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450358; cv=none; d=zohomail.com; s=zohoarc; b=aWwx4Kk+/MLFh/jUrbsbJIt+6rKpOToRXloQ8JjLk2vHOL/7AxE740fg+qiZkAwbKbYD0gzthl+e+uuaSa5G2aPVyhVSUveVyoSHLvBjdtWSSj+J2jr0bPLKDOuO4/EdQInKVRr9o3EKVny/KZC+0t98/vVq9zdx1vjHc6G6zo8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450358; h=Content-Transfer-Encoding:Cc: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=l7/mZ3OBU1PFkFN8QyiVnXNGXP8bHJzSnl+yFiRCNuE=; b=QhOSGgNv663sL/BFy6qTIKDxQ+3sMKou/55SpCqfdg51kxg+qZ6Jt8/6ULoNG9Zhc0D1gzOvZ7R5J6BYxaGESwCkLZUFUbBE/vqGK2hAt/v2H0mDwoBuhUv4CkxxD98/rvG+fXKs1voehlx8UO+IjiZ2ENahVMFIZwMAHgnO/zw= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450358462389.2511520924694; Wed, 19 May 2021 11:52:38 -0700 (PDT) Received: from localhost ([::1]:41150 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRJ7-0005JM-C5 for importer@patchew.org; Wed, 19 May 2021 14:52:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51664) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyl-0004IG-PX for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:36 -0400 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]:35672) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyX-0005kw-DD for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:35 -0400 Received: by mail-ot1-x32e.google.com with SMTP id 69-20020a9d0a4b0000b02902ed42f141e1so12616539otg.2 for ; Wed, 19 May 2021 11:31:18 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=l7/mZ3OBU1PFkFN8QyiVnXNGXP8bHJzSnl+yFiRCNuE=; b=W7E1tQl9SvFS2Z15xTvE9J39X05VP9JvRK1ocA+XC74w49GaJPoNviOidNrzeazb9j ehylXHm3Y45+nqhE66Dg74jeB4o9sCsYKWSAwPBSk6RvteIKTY0Lzj5Qqr61D+Hm7MgV bWQUdHFNMJDeSjVJvY1bdvakLjCcDEXNaHkcXpG7DjJCYzWcReL1PBpYujrzv8c3BX9E LNT4vCAl2snApEjsiIsG4AZ6DLKbLzpKtU15aqSKzM25RxhhSpEGHYUD11ol8y++ObcB gQvqK1eSJuPMg4aFXz3b9LsnbLzKXpyWDKBIB091Wo5w25O9fJDGTsafx+fQjXzuUwB8 LLTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=l7/mZ3OBU1PFkFN8QyiVnXNGXP8bHJzSnl+yFiRCNuE=; b=ssas2LTISw1S77bl7Klbb4HUNK2NhlUO8L3TQ1pFiRYee+autPv7gKfsssJyXpwgCg IWk62SucE0kJt4achvrYnO8A5SpMtAWOueODPBVU7UJyiTgtDR54TQUFvCwQZEHYJEJC wc3veCXhfAG+bYlh8PiECJ2r7vJulWdK/UxZPaQCIZa/dtvkjCBN43J+LZ2zwRLOdrGK cjqhwXxVxuY0cei74JI44b3Vl4Wir/27XP8KWbu/Q0i0ZqriGN3ujVJ3N2FO+b6tNgQQ AvVGK6ziHKQO4Y+nGFtiehW2suke6ui69ZkFXJUy10xOMVzH24IIDkNfgWCDZF/h+M9J JO7A== X-Gm-Message-State: AOAM533zoeaNCZm8ecRC7lgot0Saq36f3H4tflgwonVbQfEmQlRtXIYp HlgNCGpR3FuBETXrmS1yNVayYYRFjoMZvVDw X-Google-Smtp-Source: ABdhPJxkPA7hN9PsRYTQNNgnqh9o0XmScLpOG9E603rxq1kLFIaJmcqAzwI6a7vtYpjsQW1ML8+xqQ== X-Received: by 2002:a05:6830:1510:: with SMTP id k16mr652122otp.290.1621449078228; Wed, 19 May 2021 11:31:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 26/50] target/i386: Reduce DisasContext jmp_opt, repz_opt to bool Date: Wed, 19 May 2021 13:30:26 -0500 Message-Id: <20210519183050.875453-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32e; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32e.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-27-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 3f6214c624..b9b94f0625 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -101,8 +101,8 @@ typedef struct DisasContext { uint8_t vex_v; /* vex vvvv register, without 1's complement. */ CCOp cc_op; /* current CC operation */ bool cc_op_dirty; - int jmp_opt; /* use direct block chaining for direct jumps */ - int repz_opt; /* optimize jumps within repz instructions */ + bool jmp_opt; /* use direct block chaining for direct jumps */ + bool repz_opt; /* optimize jumps within repz instructions */ int mem_index; /* select memory access functions */ uint32_t flags; /* all execution flags */ uint8_t popl_esp_hack; /* for correct popl with esp base handling */ --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450069; cv=none; d=zohomail.com; s=zohoarc; b=h74sbMn2+vvI1t7uRcQp5sxn0xf/VVnI16IvlJ8NNoI5R2R+nwxXbx5ivAm6mPX0h5fApAW5zwY6ECjgBTc2YMwy1t4ArLW6zX92VgWOvbzmAQgkiv8KhXVIMqirJEgOFOeDImuSD4EPTQiIabmpny9mWSyuX9rqHYG5qqkS7vE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450069; h=Content-Transfer-Encoding:Cc: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=qTg6BvoWJ/n7on/pBv1zoVqUiCNkVIMQcf6I+J3L8wc=; b=L4Hfi/ZZrSBwEK4QCILIKT+4a1zSEv8WhrF2JFFLfcjTwwN+vSDG309tjSOzSf6kclMgR2wS99sUXvGeDzxzscHvTkcOtHuEXhKoz+GPLbeN74/cAdX15rtRST8oOtSiqG4ugwzkZ7/YyK752a23CgLqeb7l7CoMK6MqPDMtBoA= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450069948385.6616518939986; Wed, 19 May 2021 11:47:49 -0700 (PDT) Received: from localhost ([::1]:52108 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRES-0002BJ-U6 for importer@patchew.org; Wed, 19 May 2021 14:47:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51594) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyh-000474-PE for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:31 -0400 Received: from mail-oi1-x22c.google.com ([2607:f8b0:4864:20::22c]:44627) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyX-0005lE-Cs for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:31 -0400 Received: by mail-oi1-x22c.google.com with SMTP id d21so13963149oic.11 for ; Wed, 19 May 2021 11:31:19 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qTg6BvoWJ/n7on/pBv1zoVqUiCNkVIMQcf6I+J3L8wc=; b=n1BmLBqxNQgv5dN5Yy7VjXC5UXez89zsm4y6i8xGMKUw0Qn18S7m04KZcpMVOvogQ2 gtYVdMk9+IZG1Ve2gEkO/tepIQcCrF/pL4plN/BMDUcpdtB/iGwjPN3/z+0gBZjK6wK8 wrySv6jQoyr9Ddl+V5A87uc641IjuFpgpGM0rN+cBL6YSlxWN0BqPVmTJL8W/IyeDCjC bXSWrlBbKQKRJKFY340ofuax3FrysJNxVaBec5VGK2NoWx8/Bcs2P68iW/Sto1W965DU j19QnuRwTPEDwT3eAC8bqPPS+dHiVOAmwQ+Kx6pnLwIIfYy7/NkVQ7JrskXxV7xe51h5 63PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qTg6BvoWJ/n7on/pBv1zoVqUiCNkVIMQcf6I+J3L8wc=; b=E0PEly+Xmfl4KCAFQOb9j3Dwlyj/AMt9N3IPPigW1sbAwCB/cif8ZlqHLe9MZqHWYu wposd6FsjZVWDWNQrEGLfiCJEWx6A9I0SZmSisLYGrGrBSEg1hvJWXzClAXi9O2IXj2h ikbcbtmzQ4iKYJjwUnbfVq7aeljytdfVbyGW65rD2ZYmmJiLUfANKVxuvYo+PZonG1fI GVFp+b1IL1UevetWWn4UNjGKs7uc0W/izwctm538a3bPomrS5OlKwqXE/Z5O+1/zerGU fNVAfgql8Zw/20tIL++xbGSTMCdqvcEAJdXDevhp8cCYWMRMKJH5xxwFHq4oTSpOViI7 RWdw== X-Gm-Message-State: AOAM532Mx/Pa1SZFfBrOn2xZvxbVRBMcCahA8YDMTTiHZPzv3y3Nup7Q DJiS5i8bOVyrOa0RfzP1lsd0uwq+IhEv89d0 X-Google-Smtp-Source: ABdhPJxnN6Q8DBJ6SE40hmGoqCRoyaUs5ZKmpDXIXKMOS/PykLnK7RoGJj/an/lK5jAozz+MKNJ1Fg== X-Received: by 2002:a05:6808:8ee:: with SMTP id d14mr555837oic.18.1621449079087; Wed, 19 May 2021 11:31:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 27/50] target/i386: Fix the comment for repz_opt Date: Wed, 19 May 2021 13:30:27 -0500 Message-Id: <20210519183050.875453-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22c; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22c.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" After fixing a typo in the comment, fixup for CODING_STYLE. Signed-off-by: Richard Henderson Message-Id: <20210514151342.384376-28-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index b9b94f0625..226fb62ccb 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -8521,15 +8521,10 @@ static void i386_tr_init_disas_context(DisasContext= Base *dcbase, CPUState *cpu) dc->cpuid_xsave_features =3D env->features[FEAT_XSAVE]; dc->jmp_opt =3D !(dc->base.singlestep_enabled || (flags & (HF_TF_MASK | HF_INHIBIT_IRQ_MASK))); - /* Do not optimize repz jumps at all in icount mode, because - rep movsS instructions are execured with different paths - in !repz_opt and repz_opt modes. The first one was used - always except single step mode. And this setting - disables jumps optimization and control paths become - equivalent in run and single step modes. - Now there will be no jump optimization for repz in - record/replay modes and there will always be an - additional step for ecx=3D0 when icount is enabled. + /* + * If jmp_opt, we want to handle each string instruction individually. + * For icount also disable repz optimization so that each iteration + * is accounted separately. */ dc->repz_opt =3D !dc->jmp_opt && !(tb_cflags(dc->base.tb) & CF_USE_ICO= UNT); =20 --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621449849; cv=none; d=zohomail.com; s=zohoarc; b=CZPmsNjCX017aPXqV6F2BBi77krbWvELVLJJrYTzRXzFY3h2j9bvPFajZzHWHoBCxkkJqwLQl/KAopyelO91OgUHkjc8Luu5CqwnWNK3ASt6fSX2j7Xy53gw1g8f7zhdC3p2GJrD0q5ZkAL7n43PJ4Z++YVJmJbfaqv4mT33zxs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621449849; h=Content-Transfer-Encoding:Cc: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=8VIKm9TP9R9oeV0rPUDGQSAoAin6wclJNR1errvIaDs=; b=EnsI35vYhQLrHlXmyeAfDCUkGhv7ZdyZPiImwd3ZlDafwjleH3mLya6/bVN1abbK2xejOIHJh1cT4uF379PTMWtarYB9eTJGzP5K/Cul6P9QgvxEFaeES15SYrApacldeBvWgStp6kOsWQ1SnhsFac7Ssr9sL8Iz0IaBdkWb3go= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621449849529725.95641574072; Wed, 19 May 2021 11:44:09 -0700 (PDT) Received: from localhost ([::1]:42790 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRAu-0004Eb-31 for importer@patchew.org; Wed, 19 May 2021 14:44:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51636) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyk-0004Ed-72 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:34 -0400 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]:41597) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyY-0005lO-C9 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:33 -0400 Received: by mail-oi1-x22f.google.com with SMTP id c3so13977025oic.8 for ; Wed, 19 May 2021 11:31:20 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8VIKm9TP9R9oeV0rPUDGQSAoAin6wclJNR1errvIaDs=; b=njwVGGVfHfsTCzmj2UZdKfKnTV/n2TZK77JDZDVqdtHXeWJhJqW/vtCsPITGRhBCdX /vWTnzMAvhI/joyazkkp/wI2ljKwNerrsuuiKIHj+22wZXYrFq9msWYkDyTnkDJpTGv9 SxNv5oKC1tnhmSO/jT/EZ2YkfgjglvLFtDN+QXoTdgiZNG5+/BMKmOmlo4/sAdRCvwWE w68U0pVuV7+Ejz+YAgqSYdKYs5CNkSa2T2keeiWvfHRMv28GWGo0/ytPbc0ZLWSJ3U2u ZivKj4pwub3pD8qcXh4Bh17dp6AOgkHCTrfWWfez0yW/D/wVVJVt8YyrZlnMW0qpuWOy P0uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8VIKm9TP9R9oeV0rPUDGQSAoAin6wclJNR1errvIaDs=; b=VZMByBpAs+xqq7CabceovtkfQOPYDvLtnE+DKp8JPGVwyNu5RYyypT9gCWWdKdmLE+ 8xjeQsNJynF03dnk6yo4zCmIGEcemKLC35l6WRETOxDWOYvDoGlAXsuAO8Cjo6O1cRMC i4lE6NMP16CCNVi2v8hyL624V0PJp1zA1qt86RoSWQoJ4G/ITPvozTTJCyzd+lRMOijc b9k+Ecz3WtkEIAPFcOT6mbk2x1iybGRg06xghzW93r7CzGTY0RMOWD4OekTH1qr+/tRK 6j6CejZwBwVGLHY+Z+Y8nk++6jZEFA3dWQBXk5em3rwpZh6r7qqNdZu30Rkw+BA6L741 kBYw== X-Gm-Message-State: AOAM531xdJvS3b1+9xVup0Hl4y3+9LsH2F8P8cTHzMxAYr3YmiPGKGjf 9vJFl8oti2JdqMaoBNlegy8hOjbeWqu/wsUu X-Google-Smtp-Source: ABdhPJwgd55qo9P3GbXcDLyo6nApgeBfsBhSg0lDZyeUhEIcbvyGsFycEhjecAz5IUcTLilzunpNkA== X-Received: by 2002:a05:6808:128b:: with SMTP id a11mr531117oiw.88.1621449080026; Wed, 19 May 2021 11:31:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 28/50] target/i386: Reorder DisasContext members Date: Wed, 19 May 2021 13:30:28 -0500 Message-Id: <20210519183050.875453-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22f; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22f.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Sort all of the single-byte members to the same area of the structure, eliminating 8 bytes of padding. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-29-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 226fb62ccb..5c321b338e 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -76,20 +76,24 @@ static TCGv_i64 cpu_bndu[4]; typedef struct DisasContext { DisasContextBase base; =20 - /* current insn context */ - int8_t override; /* -1 if no override, else R_CS, R_DS, etc */ - uint8_t prefix; + target_ulong pc; /* pc =3D eip + cs_base */ + target_ulong pc_start; /* pc at TB entry */ + target_ulong cs_base; /* base of CS segment */ + MemOp aflag; MemOp dflag; - target_ulong pc_start; - target_ulong pc; /* pc =3D eip + cs_base */ - /* current block context */ - target_ulong cs_base; /* base of CS segment */ + + int8_t override; /* -1 if no override, else R_CS, R_DS, etc */ + uint8_t prefix; =20 #ifndef CONFIG_USER_ONLY uint8_t cpl; /* code priv level */ uint8_t iopl; /* i/o priv level */ #endif + uint8_t vex_l; /* vex vector length */ + uint8_t vex_v; /* vex vvvv register, without 1's complement. */ + uint8_t popl_esp_hack; /* for correct popl with esp base handling */ + uint8_t rip_offset; /* only used in x86_64, but left for simplicity */ =20 #ifdef TARGET_X86_64 uint8_t rex_r; @@ -97,16 +101,13 @@ typedef struct DisasContext { uint8_t rex_b; bool rex_w; #endif - uint8_t vex_l; /* vex vector length */ - uint8_t vex_v; /* vex vvvv register, without 1's complement. */ - CCOp cc_op; /* current CC operation */ - bool cc_op_dirty; bool jmp_opt; /* use direct block chaining for direct jumps */ bool repz_opt; /* optimize jumps within repz instructions */ + bool cc_op_dirty; + + CCOp cc_op; /* current CC operation */ int mem_index; /* select memory access functions */ uint32_t flags; /* all execution flags */ - uint8_t popl_esp_hack; /* for correct popl with esp base handling */ - uint8_t rip_offset; /* only used in x86_64, but left for simplicity */ int cpuid_features; int cpuid_ext_features; int cpuid_ext2_features; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450594; cv=none; d=zohomail.com; s=zohoarc; b=FpGFwK0ya65myNDIHNKSBS38T7S1Nd2VhQFI4lNBgaOyYa8fEIX1XPxp+z03scZXALzMIa+ESaIaZuOP1B0vBCw+quSuSXrdRAv+w868R00UTcozjZ8ssIjH42qvjDIlz8C2fVnD/5rnkt6X6g/2/g+Nf+Vk/gkF0ORfTnimFxE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450594; h=Content-Transfer-Encoding:Cc: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=ml4zJu8F2mL1vM6aa47NTwYNU0UFpq7nQwZNWCia1A4=; b=V6cNPfnTow9k5EDuEtgP+QKx/8ATD+f6ddL/rlYhY0mRTrAJpgYKuOIEwCXN99TjI//rg2N7fbwbVsJdWnG/GmDdiHDlh+7yddGz0gjgZQDrf2dau+ovb2MDbTeGCyXtBUZPiZqSj+LqCG/nBRoVgxU9HFHzlmlJUGxA3BgN3FE= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450594431330.397975360234; Wed, 19 May 2021 11:56:34 -0700 (PDT) Received: from localhost ([::1]:57658 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRMv-0007qj-DQ for importer@patchew.org; Wed, 19 May 2021 14:56:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyj-0004C7-GL for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:33 -0400 Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]:45624) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyZ-0005lT-AU for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:33 -0400 Received: by mail-oi1-x22e.google.com with SMTP id w127so10159708oig.12 for ; Wed, 19 May 2021 11:31:21 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ml4zJu8F2mL1vM6aa47NTwYNU0UFpq7nQwZNWCia1A4=; b=Ab1gIVwrXJnRY4PbLD8umcTkk7p573EO+5uSd5XQW4JbkGWTC1J/9IP+DYlXvmv4QH jHqzvCiEh+9Aes/2FrepBkrFMG4T1coptd1V/okpiP3PxxAGxNecERsf8ab0XlVZittW valXFVeZpoWS+7EO842SeYoUeBd+fEsJ6GSJbO7zlIn3tBnahHeaWwAemdaVW6YfwYeW DXocG2XOmiXIeRm1LvpydHIkwfuxoPyDB3chQqO169CNRIaRA9GPIVCPq47ef4JmX0YA eUn9KFmYqwgm8L6aGGHvu8Mw06JTRzQ/kpcVTNI3dT9qFZ2UibZt71TGmo/cYQuYQ3A1 u5rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ml4zJu8F2mL1vM6aa47NTwYNU0UFpq7nQwZNWCia1A4=; b=FpDQj7TcujE3if1tvsfnHNcUbTPsirMl4rubMHTuMAIEoZFbEyJWl2EFcfajqzBa95 80WsWeOl0PNQXgYuH/gFcPIOvLq25qugJHArUklrY8ovpGa0ka9RDuYfD/gs2/1N+MGI XIUIE0SXfFm4HZc78RaZi5zEgRmGkQiZtolQ5NCf+nkco5Xe4MKngJA9HX53JDe7LqOm 4C/9FsICrLG68rAyKZW3exkbH7IVuZUk5hGcFyOnT+QlvaGwNEh/jzmT/RSwoAUfr09e 4zSEIaCuGTOQ27nmeKGIMWcTsoZn03TQoNlXs9OjS7Qh0oDMzPl4TShkiUKPrP6TChLD WxNQ== X-Gm-Message-State: AOAM533A+XyGkEnn5qCS0G1O3cQHJg6ZRt1nhws4zu2W2B8nhLerPNsW Ye+4N2ry+b37xp37+iFfQIEpZR1n0eor3gSY X-Google-Smtp-Source: ABdhPJybAA3h6M65Mxdu0xOIIuaU9Eo7NFRZ5jw+08+nGAWuceXmcNUY/mRuEBiVET7D+l9bOdIRig== X-Received: by 2002:a05:6808:1154:: with SMTP id u20mr389559oiu.35.1621449080911; Wed, 19 May 2021 11:31:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 29/50] target/i386: Add stub generator for helper_set_dr Date: Wed, 19 May 2021 13:30:29 -0500 Message-Id: <20210519183050.875453-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22e; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22e.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" This removes an ifdef from the middle of disas_insn, and ensures that the branch is not reachable. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-30-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 5c321b338e..28eb0e8adf 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -179,6 +179,19 @@ typedef struct DisasContext { #define REX_B(S) 0 #endif =20 +/* + * Many sysemu-only helpers are not reachable for user-only. + * Define stub generators here, so that we need not either sprinkle + * ifdefs through the translator, nor provide the helper function. + */ +#define STUB_HELPER(NAME, ...) \ + static inline void gen_helper_##NAME(__VA_ARGS__) \ + { qemu_build_not_reached(); } + +#ifdef CONFIG_USER_ONLY +STUB_HELPER(set_dr, TCGv_env env, TCGv_i32 reg, TCGv val) +#endif + static void gen_eob(DisasContext *s); static void gen_jr(DisasContext *s, TCGv dest); static void gen_jmp(DisasContext *s, target_ulong eip); @@ -8075,7 +8088,6 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x121: /* mov reg, drN */ case 0x123: /* mov drN, reg */ if (check_cpl0(s)) { -#ifndef CONFIG_USER_ONLY modrm =3D x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)=3D=3D0xc0). * AMD documentation (24594.pdf) and testing of @@ -8104,7 +8116,6 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_helper_get_dr(s->T0, cpu_env, s->tmp2_i32); gen_op_mov_reg_v(s, ot, rm, s->T0); } -#endif /* !CONFIG_USER_ONLY */ } break; case 0x106: /* clts */ --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450189; cv=none; d=zohomail.com; s=zohoarc; b=kdyZ4YrPZYvjp1BH1QEncHCZ4qhDKIIOtswPjn1fQDQB7G04xk6O5XnmFQiq0+YXRM9VIG3MML+fTmj/FeLOmAOTFBt5L94DkgCDCLEQggLOHNjcT+6iaYLTwtXAvK49d1ztp6cgK76VLrl/y6xznR7LeXs99Av9buYjdrLS+bw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450189; h=Content-Transfer-Encoding:Cc: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=nqW7XsN57M2hYAJUK6/QOBNZBxSwu2T66IctV1Y0s/A=; b=M5zc+NgQcUzc6L9TECvv2ulGIoe9BSWid/dh+/jsrbX7qp/hnJbddvXQ1/6B+Hbxn1dYmA53PtAeCx6tvEenkJwDDOD9OHHCvJmPg4F3439GRlLWS/g28HvxuzTgwxy92wXiw952EZWGv+H6c3EY5mP+X6DC9iSK9cCjFoMUHzw= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450189345626.3796840164553; Wed, 19 May 2021 11:49:49 -0700 (PDT) Received: from localhost ([::1]:60672 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRGO-0007ru-7n for importer@patchew.org; Wed, 19 May 2021 14:49:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51662) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyl-0004Gy-BS for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:35 -0400 Received: from mail-oi1-x22b.google.com ([2607:f8b0:4864:20::22b]:33465) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyZ-0005m2-Cc for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:35 -0400 Received: by mail-oi1-x22b.google.com with SMTP id b25so14061359oic.0 for ; Wed, 19 May 2021 11:31:22 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nqW7XsN57M2hYAJUK6/QOBNZBxSwu2T66IctV1Y0s/A=; b=SnqMeTAjuWrxkMmy3a+oCbs8vSN0TfPhkZuiS4KDL7XXc5/nHizmyNHswCzDOi52xz 5May5pa1u/OsClq0PGP4PPZS4aK/QPrYv9i4UPVTjptuDQ5p8xidsIfEJjzIEajaT4l1 st3GHrfSO2Y5Q/lF+Us0fuhlQAbXEClvr0CK8AR7NSiqw1ppUTAYaljaXCqecRGWxpjE hzywhtrzPYy495RmVaQx33Ryewo7yYO1cY/KxhGpicZk06sT3XY3yHSX9TmtzpWtYdGo SBU0l3CCUZgAOKMu2+wKUPL98ai8CK776Q9YAgKbIiux04GPBV0/85LqYTuLKvJVXWpC BwwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nqW7XsN57M2hYAJUK6/QOBNZBxSwu2T66IctV1Y0s/A=; b=XRvRkHUmGY2KAUf5tpi4+/mSEoibrakuSiUCZANnJx43slLnCKIznyhnHtBUkp3RtF SWUlC+0BtHVazYTowpBvvEWP+wcLUQ2iBkYP6WXdUMkPoq2UrFJ6NFvfee1P1r/SIMWM GztmUEZJubnu1RfjjYqH3ndLCZY9y5Tdgkf/rnp7V2c4iqO2qV+hYIEMeyqh5D4ckPfW 7LEoRzwaJa5tu1BU0E2jPzv8OZFSAjmO8uT0DYrhMbWQ5INXK66aY/MMBTyeaFEWo6II RKTfhuf7fljA28SfGbt8CwUwXC2AyUnk9SYyCoi+wEoZbIr8CHrrooJJgZJRKfnlFfFy EX+A== X-Gm-Message-State: AOAM533dR7jpYYqJ05f4RvfTppgMC1ilVO5OXuOiZTVsXLrGrVzS4X4J z4H4ukgti31t2g6iS+ASfM/1WqGwXR6ri9+V X-Google-Smtp-Source: ABdhPJxP6SGatmwWkQR0QkF2ltZ8/e38JcD/QMUcGZ5JGwiOY1hwNuLQPqSLa1wkx4uF5Kyi8+l6qw== X-Received: by 2002:a54:4396:: with SMTP id u22mr524959oiv.118.1621449081845; Wed, 19 May 2021 11:31:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 30/50] target/i386: Assert !SVME for user-only Date: Wed, 19 May 2021 13:30:30 -0500 Message-Id: <20210519183050.875453-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22b; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22b.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Most of the VMM instructions are already disabled for user-only, by being usable only from ring 0. The spec is intentionally loose for VMMCALL, allowing the VMM to define syscalls for user-only. However, we're not emulating any VMM, so VMMCALL can just raise #UD unconditionally. Reviewed-by: Paolo Bonzini Signed-off-by: Richard Henderson Message-Id: <20210514151342.384376-31-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 28eb0e8adf..235caa247b 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -138,10 +138,12 @@ typedef struct DisasContext { #define PE(S) true #define CPL(S) 3 #define IOPL(S) 0 +#define SVME(S) false #else #define PE(S) (((S)->flags & HF_PE_MASK) !=3D 0) #define CPL(S) ((S)->cpl) #define IOPL(S) ((S)->iopl) +#define SVME(S) (((S)->flags & HF_SVME_MASK) !=3D 0) #endif #if defined(CONFIG_USER_ONLY) && defined(TARGET_X86_64) #define VM86(S) false @@ -7495,7 +7497,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xd8: /* VMRUN */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7510,7 +7512,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xd9: /* VMMCALL */ - if (!(s->flags & HF_SVME_MASK)) { + if (!SVME(s)) { goto illegal_op; } gen_update_cc_op(s); @@ -7519,7 +7521,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xda: /* VMLOAD */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7531,7 +7533,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xdb: /* VMSAVE */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7543,8 +7545,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xdc: /* STGI */ - if ((!(s->flags & HF_SVME_MASK) - && !(s->cpuid_ext3_features & CPUID_EXT3_SKINIT)) + if ((!SVME(s) && !(s->cpuid_ext3_features & CPUID_EXT3_SKINIT)) || !PE(s)) { goto illegal_op; } @@ -7558,7 +7559,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xdd: /* CLGI */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7570,8 +7571,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xde: /* SKINIT */ - if ((!(s->flags & HF_SVME_MASK) - && !(s->cpuid_ext3_features & CPUID_EXT3_SKINIT)) + if ((!SVME(s) && !(s->cpuid_ext3_features & CPUID_EXT3_SKINIT)) || !PE(s)) { goto illegal_op; } @@ -7581,7 +7581,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0xdf: /* INVLPGA */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -8516,6 +8516,7 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) g_assert(SS32(dc) =3D=3D ((flags & HF_SS32_MASK) !=3D 0)); g_assert(LMA(dc) =3D=3D ((flags & HF_LMA_MASK) !=3D 0)); g_assert(ADDSEG(dc) =3D=3D ((flags & HF_ADDSEG_MASK) !=3D 0)); + g_assert(SVME(dc) =3D=3D ((flags & HF_SVME_MASK) !=3D 0)); =20 dc->cc_op =3D CC_OP_DYNAMIC; dc->cc_op_dirty =3D false; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450055; cv=none; d=zohomail.com; s=zohoarc; b=iOgD9hWtNn6ueNzUm0Rihz0zN3Mum9a1PxzVJNL43lO29+g0NqsyeDrOtUiuylZW0UAmYjUNOQgXg1H5uU7DN5eu3MtXhFnnJu8DscRyEpYAtmG+GLzRmLysGfe1chEIH1usshFFyEZ50ZiDrY0QW1WvJRuuACXAt6CXkFjMUH4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450055; h=Content-Transfer-Encoding:Cc: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=1DqtU0WV8QcSF4+X7m6wigiX0PReSyvreleY4X8ijYI=; b=bzAmiZ22WNaO2d9QTQCoUoLxNTBQAHrsxEQ9IKvCHfYyUIT2C1CvHViLAa96+4uJUDB0QoOBEjvCqXuvaENtt5U1Z4ZgmRatgfBpCsWVWa0GYDBZrUxW7sB65sm+cttcRX+fdTZB4tmAi60KS5+gSmwdLpjv0fYDSmCholZLYus= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450055067917.3752815032433; Wed, 19 May 2021 11:47:35 -0700 (PDT) Received: from localhost ([::1]:51374 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRED-0001hA-HG for importer@patchew.org; Wed, 19 May 2021 14:47:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51696) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyn-0004LL-Ir for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:37 -0400 Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]:34695) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyZ-0005mP-VI for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:37 -0400 Received: by mail-ot1-x333.google.com with SMTP id u25-20020a0568302319b02902ac3d54c25eso12656902ote.1 for ; Wed, 19 May 2021 11:31:23 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1DqtU0WV8QcSF4+X7m6wigiX0PReSyvreleY4X8ijYI=; b=WWxnrjOYRyMGRp7PhTvkVpu3miWRLibTfUgyUV/rhQT+M8wEdZ497h7RoZ8xLo5DQu 3hqlKE5fDn0r/ZnlplfgvkdPcudGWeb2CIqzT6zzsH8AvxdY5f2yAazWcj6Q2q7fSRGz U6Y50UCvXyU/hovCVnwZePZ/ZsBOW0M7BUzY0WO9x2P0mf8qQYPmlYhF6PqPvzQJsZrA fWfpKuJhjaNwaCrUXLvh6lmXp5viVA80H1oqDlYjcB1TvimSU2u4S0IbJys6Ntd1s3LK ymO895eWwaRgeBX+pEbOhoKVlEZqHuPWs+hGO4jqeLQef0t5kjPAXp4z1+T2BC8i3O7F JBWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1DqtU0WV8QcSF4+X7m6wigiX0PReSyvreleY4X8ijYI=; b=bniRptcmIHVhW38PelHgrF/Fj2z/UTa+kMDg54F3BR6hKKdbDko42lz9G/Cnabfz+g 8CQNvIiBnRtWmUamv/gCqY+UAo0FfjcBkatRatNkfcHkM9+uKaZ2eOFaVgG+NH7WwAc4 W85puVA2VgPCNgC/xM00EUP6+M+phmnIrP9+1t973ZWh6dDTzZ5IFRlMWioMZzecVUPz or41odxHOph75n/q2vqaex6a4HSUp+HqmY79YgMGWVFNpcdQHRVXZmfKdkd2hOkgIdgi S0tVqktqVvk2BGU6VEm5RyjlREZZnktAjsmHBgMvm2jWAoNW1Jt7cV45q8r1JE84gsuN p0+w== X-Gm-Message-State: AOAM533Ric4rrIn1wTRbJMKel/Bv7y3mGFLi+3FqyFfaOnrginUjhNtG Jt+It3eArxxvSHT2Eosur2DJQA47Cx6AyVdi X-Google-Smtp-Source: ABdhPJxXTPZ2hdcdb/9ULLPWxQsxW/blLfo2P7DZ+uPhVW6FtDeEGUSMAoZv61yUWtFzguLPQLJEAg== X-Received: by 2002:a9d:5a7:: with SMTP id 36mr639756otd.321.1621449082775; Wed, 19 May 2021 11:31:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 31/50] target/i386: Assert !GUEST for user-only Date: Wed, 19 May 2021 13:30:31 -0500 Message-Id: <20210519183050.875453-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::333; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x333.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" For user-only, we do not need to check for VMM intercept. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-32-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 235caa247b..200d205d7e 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -139,11 +139,13 @@ typedef struct DisasContext { #define CPL(S) 3 #define IOPL(S) 0 #define SVME(S) false +#define GUEST(S) false #else #define PE(S) (((S)->flags & HF_PE_MASK) !=3D 0) #define CPL(S) ((S)->cpl) #define IOPL(S) ((S)->iopl) #define SVME(S) (((S)->flags & HF_SVME_MASK) !=3D 0) +#define GUEST(S) (((S)->flags & HF_GUEST_MASK) !=3D 0) #endif #if defined(CONFIG_USER_ONLY) && defined(TARGET_X86_64) #define VM86(S) false @@ -677,7 +679,7 @@ static void gen_check_io(DisasContext *s, MemOp ot, tar= get_ulong cur_eip, tcg_abort(); } } - if(s->flags & HF_GUEST_MASK) { + if (GUEST(s)) { gen_update_cc_op(s); gen_jmp_im(s, cur_eip); svm_flags |=3D (1 << (4 + ot)); @@ -2417,8 +2419,9 @@ gen_svm_check_intercept_param(DisasContext *s, target= _ulong pc_start, uint32_t type, uint64_t param) { /* no SVM activated; fast case */ - if (likely(!(s->flags & HF_GUEST_MASK))) + if (likely(!GUEST(s))) { return; + } gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); gen_helper_svm_check_intercept_param(cpu_env, tcg_const_i32(type), @@ -8517,6 +8520,7 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) g_assert(LMA(dc) =3D=3D ((flags & HF_LMA_MASK) !=3D 0)); g_assert(ADDSEG(dc) =3D=3D ((flags & HF_ADDSEG_MASK) !=3D 0)); g_assert(SVME(dc) =3D=3D ((flags & HF_SVME_MASK) !=3D 0)); + g_assert(GUEST(dc) =3D=3D ((flags & HF_GUEST_MASK) !=3D 0)); =20 dc->cc_op =3D CC_OP_DYNAMIC; dc->cc_op_dirty =3D false; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450245; cv=none; d=zohomail.com; s=zohoarc; b=F7j6torlhZp6WtIzIy0szunv+81r/1ZpZmsPTYh/tSKGYOo2UqsZM1soqOuygviHNMkq1MekkjV8Arl9U0KWINYbQ8VEyvI1bz+seypkeJxbCyzuG/cSK1JhaRgGuIQlXN3EmVCy4BAkDh9urVAMJgrmMoK8qN9Oj7il9Z7AxNs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450245; h=Content-Transfer-Encoding:Cc: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=oHyJNDPwLv7CDpqATFVKQ26htkoObORPlVS9sJxQt9M=; b=niOjmeg9EFZyNox26m/QNiyiO1tfqXZibInDYZNpfPwTB8vwDwCKcvMf7gbSmjIO5X+iyyguY5BK1xDAKHsZHrOTllbwLlCphgGzxFnq1gKG5+mVlzZ/+gVqC/fQnsrs1B84rMskmtLlutD2dRmIOTi63l2MVbLk1vmjLOcPiAA= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162145024519345.87605924607578; Wed, 19 May 2021 11:50:45 -0700 (PDT) Received: from localhost ([::1]:34544 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRHI-0000qP-4m for importer@patchew.org; Wed, 19 May 2021 14:50:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51690) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQym-0004JH-Vp for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:37 -0400 Received: from mail-ot1-x32f.google.com ([2607:f8b0:4864:20::32f]:38705) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyb-0005mg-47 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:36 -0400 Received: by mail-ot1-x32f.google.com with SMTP id i14-20020a9d624e0000b029033683c71999so1434475otk.5 for ; Wed, 19 May 2021 11:31:24 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oHyJNDPwLv7CDpqATFVKQ26htkoObORPlVS9sJxQt9M=; b=eCJZBmBaTf45ebK9uSFdapKDqaTUgHY6JuY3IVmJK6/5RXPISNvg8iO1PFmSOVSGJV fzxjfQe3GQpmmra00VjRNhe1TCMyTZ+Pr8VP+0oAsPK74FsJQhEiiEgyrsxUoxs5t+f1 +7IUZWthVlvJK3rD4HgOtJsr7KCmUbuefA/CEXzeT30hvxZS1wkZ/8VT4OQp3Fa2G3xx pR36T9Gdv8utdZJYjwbYmRPWGH7IwfvRvQpfBoB56kd19CN/LOWPYveVCBPp0OQCvv7l 3SSGkQfIROs/l9di3i+vRyQ0jo3dBuyHt5eU4hj2oI9czFiCJAPmMYykzNwiimYHt7HB AIPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oHyJNDPwLv7CDpqATFVKQ26htkoObORPlVS9sJxQt9M=; b=WpSG8XjNuf+3DrD2Bk6feKS94eibRmk/P598I6JEZ2C4JiHO2rMou7DfQSOA31MKUE RpfkesQlZ24/Xupg2kNvRz0H/Ewn/id/DkBkfShmBvPf8l1pw38SKYhmdv/lm2waKF3W z4XDXVBwBKRfev7wCrmUfNJ/DQpqJFaBKBp5Da+OPtJf7WbyXeKKWwv9HWYA5VYa2jhV y3j3pyC44psQHbNO2A1DpmDOFsxnyM3ROtesr1hM92V295Yg8XwJxQyFKNoucA1pCFp1 2ZMgN+Ng0irsoSOc2Yz8RJE89/jRwwfUnNWzJsVrsuE2cY+zwnRxhTWOV7EyWNsFLxoP +7oQ== X-Gm-Message-State: AOAM5302bR/2QAJKqEIO9+TzEWjIAP9jheknh0+HoQMJ6AmGS1ivLdXQ KjsGPx0fmkIA4qTd7nuIV3Oui5/AePVg157W X-Google-Smtp-Source: ABdhPJx5bC/qCjCn9wouLuzzt2FDsU+xN/f1JBcqDt+ANktIIBUOW9Z9esLG+vW0oK7qM6OluOrDKw== X-Received: by 2002:a9d:a37:: with SMTP id 52mr687003otg.280.1621449083752; Wed, 19 May 2021 11:31:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 32/50] target/i386: Implement skinit in translate.c Date: Wed, 19 May 2021 13:30:32 -0500 Message-Id: <20210519183050.875453-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32f; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32f.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Our sysemu implementation is a stub. We can already intercept instructions for vmexit, and raising #UD is trivial. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-33-richard.henderson@linaro.org> --- target/i386/helper.h | 1 - target/i386/tcg/sysemu/svm_helper.c | 7 ------- target/i386/tcg/translate.c | 7 +++---- target/i386/tcg/user/svm_stubs.c | 4 ---- 4 files changed, 3 insertions(+), 16 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index 095520f81f..7a09efd55b 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -117,7 +117,6 @@ DEF_HELPER_2(vmload, void, env, int) DEF_HELPER_2(vmsave, void, env, int) DEF_HELPER_1(stgi, void, env) DEF_HELPER_1(clgi, void, env) -DEF_HELPER_1(skinit, void, env) DEF_HELPER_2(invlpga, void, env, int) =20 /* x86 FPU */ diff --git a/target/i386/tcg/sysemu/svm_helper.c b/target/i386/tcg/sysemu/s= vm_helper.c index c4e8e717a9..79c73d67af 100644 --- a/target/i386/tcg/sysemu/svm_helper.c +++ b/target/i386/tcg/sysemu/svm_helper.c @@ -412,13 +412,6 @@ void helper_clgi(CPUX86State *env) env->hflags2 &=3D ~HF2_GIF_MASK; } =20 -void helper_skinit(CPUX86State *env) -{ - cpu_svm_check_intercept_param(env, SVM_EXIT_SKINIT, 0, GETPC()); - /* XXX: not implemented */ - raise_exception(env, EXCP06_ILLOP); -} - void helper_invlpga(CPUX86State *env, int aflag) { X86CPU *cpu =3D env_archcpu(env); diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 200d205d7e..f7f84f79fe 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -7578,10 +7578,9 @@ static target_ulong disas_insn(DisasContext *s, CPUS= tate *cpu) || !PE(s)) { goto illegal_op; } - gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); - gen_helper_skinit(cpu_env); - break; + gen_svm_check_intercept(s, pc_start, SVM_EXIT_SKINIT); + /* If not intercepted, not implemented -- raise #UD. */ + goto illegal_op; =20 case 0xdf: /* INVLPGA */ if (!SVME(s) || !PE(s)) { diff --git a/target/i386/tcg/user/svm_stubs.c b/target/i386/tcg/user/svm_st= ubs.c index 97528b56ad..63b37f0de6 100644 --- a/target/i386/tcg/user/svm_stubs.c +++ b/target/i386/tcg/user/svm_stubs.c @@ -46,10 +46,6 @@ void helper_clgi(CPUX86State *env) { } =20 -void helper_skinit(CPUX86State *env) -{ -} - void helper_invlpga(CPUX86State *env, int aflag) { } --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450181; cv=none; d=zohomail.com; s=zohoarc; b=BQ4+uG4WIxvOEnGTqU+pY0NPXG6hnIQzf/dO9XXUVBRSeTMImIw74V8byb7oddMCee/VgIjJwyogdORYspccU+whSR4VTAYYAElUgrpqr9YfRst7T0aN4DvHgFDbaVJkqxDy96tjVeW5fYAfA7jpmvzMgeQlEYh6hMeZQs0RWc4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450181; h=Content-Transfer-Encoding:Cc: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=5OwIdHlv3LdKR7MTqV9VCeiU1XRsbRl+uomjXUgH9RM=; b=U9xheWhvooyKZy13IK5gQ2ZfDbLR4YIpO7aT53Syz1lnEAMr9NqByK4ZpV9WJWoPsjJpgILW1tY/z9o1HMbU4w8qwXu2ov+J+9E8mxUp9hvhTtEy3siFJHYpAGglqW+zNF0Lxb3YbtVHG3s7M0xBCuWJGUcJ4HarBdoIxcoRLfI= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450181433920.7302772894545; Wed, 19 May 2021 11:49:41 -0700 (PDT) Received: from localhost ([::1]:59884 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRGG-0007MB-1b for importer@patchew.org; Wed, 19 May 2021 14:49:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51778) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyt-0004V2-Qj for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:43 -0400 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]:34697) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyc-0005nT-T7 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:43 -0400 Received: by mail-ot1-x335.google.com with SMTP id u25-20020a0568302319b02902ac3d54c25eso12656971ote.1 for ; Wed, 19 May 2021 11:31:25 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5OwIdHlv3LdKR7MTqV9VCeiU1XRsbRl+uomjXUgH9RM=; b=O3Qoa0oPmKPLbGotezIODNmkKL+o2YtDJ94KujFPMzS44YcOFDtpke8ON87RcGjoJT 3CjDTU9b+FqycVqmAAesVfgEsyyLugMJ0bZFFmwfyZQVhuDfBLWE8R1zemeeqUKZescb h2dVTIT4aL0dLj20xIoparWGbIBdchE1DbzEOiPmjjH8/CQlKCdzOaEAaCL3Ifm5pJsx C6/BMBwLGXOrLrZC10UD1nv6aV9U53U0KiLby0Kxh1ZKBMuWK3Cr+mpw3rTp3m18DWmN 1zasu3q5/H7aNkdImOWKONQR9mullbsMg1tSy97xHzg61sQLq8gwCK5aEcQ/vzfSdyd6 uISg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5OwIdHlv3LdKR7MTqV9VCeiU1XRsbRl+uomjXUgH9RM=; b=a1dniCbtWQ/BtfGDoGlk44GPoe96I4vASinThyczGE7hVb0evNLK43NP4BGLvh+aRf FYbi882c5FXgUGZCGlIdTPyqm24KE4T7W92YZww3SSR5YWlJCLJjcK8moof1fExMt4Qt lkjXM7iW7ZYpZ/MazKFVJGmj7Y02tA7LxRpq56+oOvhlol9nfki6NmUoJdJiPg6Ze4u6 Bi/ZOkBIKav7B7oCspAs0W8ZMyZWGKHGLnM5pYCJMAhtAhPjWfekUqn9ciXT1C7+pizr yZMnVkN/Mu0CIJc6pZqECzJejH4cDTtgBSY9dCRn/7iuHDF3YktdRbfSBlLZQg+HJEYJ TCzA== X-Gm-Message-State: AOAM530UIvE8MHN27m4AnqBEvoNiKJrRhPiE0cEuSVbeFUsrK0F2O4E+ I3ouf9wvOeg2AwfsbDB5CW0WSSGdFzc99xC9 X-Google-Smtp-Source: ABdhPJw1sPW1F7KrlFYwLCKufDI5BUts4popzIYzquGSDf3fvJm4CLZzlB288NuMAOnh1nyoDHanHg== X-Received: by 2002:a9d:6244:: with SMTP id i4mr646702otk.182.1621449084717; Wed, 19 May 2021 11:31:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 33/50] target/i386: Eliminate SVM helpers for user-only Date: Wed, 19 May 2021 13:30:33 -0500 Message-Id: <20210519183050.875453-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::335; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x335.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Use STUB_HELPER to ensure that such calls are always eliminated. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-34-richard.henderson@linaro.org> --- target/i386/helper.h | 3 +-- target/i386/tcg/translate.c | 9 ++++++++ target/i386/tcg/user/svm_stubs.c | 38 -------------------------------- 3 files changed, 10 insertions(+), 40 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index 7a09efd55b..d0f7f07c6c 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -107,8 +107,6 @@ DEF_HELPER_2(inl, tl, env, i32) =20 #ifndef CONFIG_USER_ONLY DEF_HELPER_FLAGS_4(bpt_io, TCG_CALL_NO_WG, void, env, i32, i32, tl) -#endif /* !CONFIG_USER_ONLY */ - DEF_HELPER_3(svm_check_intercept_param, void, env, i32, i64) DEF_HELPER_4(svm_check_io, void, env, i32, i32, i32) DEF_HELPER_3(vmrun, void, env, int, int) @@ -118,6 +116,7 @@ DEF_HELPER_2(vmsave, void, env, int) DEF_HELPER_1(stgi, void, env) DEF_HELPER_1(clgi, void, env) DEF_HELPER_2(invlpga, void, env, int) +#endif /* !CONFIG_USER_ONLY */ =20 /* x86 FPU */ =20 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index f7f84f79fe..b2a997fb30 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -193,7 +193,16 @@ typedef struct DisasContext { { qemu_build_not_reached(); } =20 #ifdef CONFIG_USER_ONLY +STUB_HELPER(clgi, TCGv_env env) +STUB_HELPER(invlpga, TCGv_env env, TCGv_i32 aflag) STUB_HELPER(set_dr, TCGv_env env, TCGv_i32 reg, TCGv val) +STUB_HELPER(stgi, TCGv_env env) +STUB_HELPER(svm_check_intercept_param, TCGv_env env, TCGv_i32 t, TCGv_i64 = p) +STUB_HELPER(svm_check_io, TCGv_env env, TCGv_i32 port, TCGv_i32 p, TCGv_i3= 2 a) +STUB_HELPER(vmload, TCGv_env env, TCGv_i32 aflag) +STUB_HELPER(vmmcall, TCGv_env env) +STUB_HELPER(vmrun, TCGv_env env, TCGv_i32 aflag, TCGv_i32 pc_ofs) +STUB_HELPER(vmsave, TCGv_env env, TCGv_i32 aflag) #endif =20 static void gen_eob(DisasContext *s); diff --git a/target/i386/tcg/user/svm_stubs.c b/target/i386/tcg/user/svm_st= ubs.c index 63b37f0de6..48a43bdcea 100644 --- a/target/i386/tcg/user/svm_stubs.c +++ b/target/i386/tcg/user/svm_stubs.c @@ -22,51 +22,13 @@ #include "exec/helper-proto.h" #include "tcg/helper-tcg.h" =20 -void helper_vmrun(CPUX86State *env, int aflag, int next_eip_addend) -{ -} - -void helper_vmmcall(CPUX86State *env) -{ -} - -void helper_vmload(CPUX86State *env, int aflag) -{ -} - -void helper_vmsave(CPUX86State *env, int aflag) -{ -} - -void helper_stgi(CPUX86State *env) -{ -} - -void helper_clgi(CPUX86State *env) -{ -} - -void helper_invlpga(CPUX86State *env, int aflag) -{ -} - void cpu_vmexit(CPUX86State *nenv, uint32_t exit_code, uint64_t exit_info_= 1, uintptr_t retaddr) { assert(0); } =20 -void helper_svm_check_intercept_param(CPUX86State *env, uint32_t type, - uint64_t param) -{ -} - void cpu_svm_check_intercept_param(CPUX86State *env, uint32_t type, uint64_t param, uintptr_t retaddr) { } - -void helper_svm_check_io(CPUX86State *env, uint32_t port, uint32_t param, - uint32_t next_eip_addend) -{ -} --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450992; cv=none; d=zohomail.com; s=zohoarc; b=GYxh1pabXJ0u53gtVmTeYe84levSta6sUShrNF0uNyQMoykklCMoDAwUxJWJnBy/XFFL2NnWGxcUW08/1KesDAlOlsRcf0kETZ/BtyIKagDyuXG6/QxS7+R+QCoH24hyhd+NrBmgizvT8fbfdOpJ60CiWBTBz9srco5LZJvuVyM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450992; h=Content-Transfer-Encoding:Cc: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=5qBVkg2/s0WgFvJDY/rKl/W0YYbprSAUr+98hK52eZk=; b=k5Nc7XW3g2e/EWWBz4kUHSs2w9/IseLGrPXZg04Hb0TuolyKc22FeiOaQiP7OCkHnnULn9zwT/S+5cCjrgJ3s1E8r8D2zFMEPZB0bknF52WJ/eLMPpUVWu27b5kOlZxxzhCqO7EF5IgWg7qZIDLkDxXlIQ/GqFio5f+rOg3msik= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450992253166.16229960932117; Wed, 19 May 2021 12:03:12 -0700 (PDT) Received: from localhost ([::1]:49856 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRTL-0004hu-5H for importer@patchew.org; Wed, 19 May 2021 15:03:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51728) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyo-0004Q5-TB for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:38 -0400 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]:38703) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyc-0005nx-Td for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:38 -0400 Received: by mail-ot1-x32c.google.com with SMTP id i14-20020a9d624e0000b029033683c71999so1434580otk.5 for ; Wed, 19 May 2021 11:31:26 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5qBVkg2/s0WgFvJDY/rKl/W0YYbprSAUr+98hK52eZk=; b=vz78j+w/IL1+HjEvY9ouRdoIv10NeFODy13gj3iVfyTlsTPhATQe59KhKw/UWaCjhO dCccOwEJXZMiBAuZWMLIkuwPj4hVq6FtKOGZf4vAvd9ZY5HqTZ1HFkefleqWeXgmAkFr hWrWMGLH/YNHtiuC/4P30V3qFEryfDGdN/QzKxPaDbA0+IrgZ0IB0vBE/mg4yyfuSSgU mxYf/22E1yD600e8O2LVlp1dXwE5+zxfRswVlYxzVGczr6pb6GcowuYR04L+I8qVgjxX IXlhvfGsmcmM4lmybwx6X3WOeAzUiK7TJzGD/VDf235HjOBUZDoEdznD8iwAgj1h8IjG Qszg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5qBVkg2/s0WgFvJDY/rKl/W0YYbprSAUr+98hK52eZk=; b=JX5xLTraEuSFyJYiUjqJldPQgGKv4nI/EbpggZJjCPOMnv6xqhKbbvtox4xhWUfUhR nbJV68GcA2L/VMoSZ21bay6RPNeHEcdlGq7svOZe8Qu9q0J5xvE2udFLnfilwiuFXQxx vCcPmahbPau4CE6+e9md0FhopePLn3l3QAJ5kaba5ROkOvNarS50vDrYPUx+3luHyzB3 ZNr1xQYx2dESF6ChW4dCcJ5vv/PKiXY+HXNc1xJYXrEBdWy5UQiZvt9jiJ0vYhOQHXiV N6EaiWR8QjoKPhqQ1zWBrTDQ8OQ3sKlm5rdwJY9vU8Y0jbOYHH+kGcIpF4bQOzQkp/DM 9TBA== X-Gm-Message-State: AOAM533XGt3gC5xeuXGJXTVHNcpvAKNlW/FfTIzY01EWqOzOmpSy21Gc cug8yPFiKpnAZVlfMAeHLP3h2Rzdr8yUG0gA X-Google-Smtp-Source: ABdhPJyjd+xTEn4ZcPY7RB9eVVOVovkJpxDKuLi9zuMakePmmouu2+iblVuaL/GCfBJx/0gswR+jDw== X-Received: by 2002:a05:6830:248d:: with SMTP id u13mr629342ots.121.1621449085706; Wed, 19 May 2021 11:31:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 34/50] target/i386: Mark some helpers as noreturn Date: Wed, 19 May 2021 13:30:34 -0500 Message-Id: <20210519183050.875453-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32c; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32c.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Any helper that always raises an exception or interrupt, or simply exits to the main loop, can be so marked. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-35-richard.henderson@linaro.org> --- target/i386/helper.h | 18 +++++++++--------- target/i386/tcg/bpt_helper.c | 2 +- target/i386/tcg/excp_helper.c | 18 ++++++++++-------- target/i386/tcg/misc_helper.c | 14 +++++++------- target/i386/tcg/translate.c | 3 ++- 5 files changed, 29 insertions(+), 26 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index d0f7f07c6c..f794d1c7c7 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -60,14 +60,14 @@ DEF_HELPER_2(sysexit, void, env, int) DEF_HELPER_2(syscall, void, env, int) DEF_HELPER_2(sysret, void, env, int) #endif -DEF_HELPER_2(hlt, void, env, int) -DEF_HELPER_2(monitor, void, env, tl) -DEF_HELPER_2(mwait, void, env, int) -DEF_HELPER_2(pause, void, env, int) -DEF_HELPER_1(debug, void, env) +DEF_HELPER_FLAGS_2(hlt, TCG_CALL_NO_WG, noreturn, env, int) +DEF_HELPER_FLAGS_2(monitor, TCG_CALL_NO_WG, void, env, tl) +DEF_HELPER_FLAGS_2(mwait, TCG_CALL_NO_WG, noreturn, env, int) +DEF_HELPER_FLAGS_2(pause, TCG_CALL_NO_WG, noreturn, env, int) +DEF_HELPER_FLAGS_1(debug, TCG_CALL_NO_WG, noreturn, env) DEF_HELPER_1(reset_rf, void, env) -DEF_HELPER_3(raise_interrupt, void, env, int, int) -DEF_HELPER_2(raise_exception, void, env, int) +DEF_HELPER_FLAGS_3(raise_interrupt, TCG_CALL_NO_WG, noreturn, env, int, in= t) +DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, int) DEF_HELPER_1(cli, void, env) DEF_HELPER_1(sti, void, env) DEF_HELPER_1(clac, void, env) @@ -86,12 +86,12 @@ DEF_HELPER_2(cmpxchg8b, void, env, tl) DEF_HELPER_2(cmpxchg16b_unlocked, void, env, tl) DEF_HELPER_2(cmpxchg16b, void, env, tl) #endif -DEF_HELPER_1(single_step, void, env) +DEF_HELPER_FLAGS_1(single_step, TCG_CALL_NO_WG, noreturn, env) DEF_HELPER_1(rechecking_single_step, void, env) DEF_HELPER_1(cpuid, void, env) DEF_HELPER_1(rdtsc, void, env) DEF_HELPER_1(rdtscp, void, env) -DEF_HELPER_1(rdpmc, void, env) +DEF_HELPER_FLAGS_1(rdpmc, TCG_CALL_NO_WG, noreturn, env) DEF_HELPER_1(rdmsr, void, env) DEF_HELPER_1(wrmsr, void, env) =20 diff --git a/target/i386/tcg/bpt_helper.c b/target/i386/tcg/bpt_helper.c index fb2a65ac9c..83cd89581e 100644 --- a/target/i386/tcg/bpt_helper.c +++ b/target/i386/tcg/bpt_helper.c @@ -22,7 +22,7 @@ #include "exec/helper-proto.h" #include "helper-tcg.h" =20 -void helper_single_step(CPUX86State *env) +void QEMU_NORETURN helper_single_step(CPUX86State *env) { #ifndef CONFIG_USER_ONLY check_hw_breakpoints(env, true); diff --git a/target/i386/tcg/excp_helper.c b/target/i386/tcg/excp_helper.c index 0183f3932e..bdae887d0a 100644 --- a/target/i386/tcg/excp_helper.c +++ b/target/i386/tcg/excp_helper.c @@ -25,12 +25,13 @@ #include "exec/helper-proto.h" #include "helper-tcg.h" =20 -void helper_raise_interrupt(CPUX86State *env, int intno, int next_eip_adde= nd) +void QEMU_NORETURN helper_raise_interrupt(CPUX86State *env, int intno, + int next_eip_addend) { raise_interrupt(env, intno, 1, 0, next_eip_addend); } =20 -void helper_raise_exception(CPUX86State *env, int exception_index) +void QEMU_NORETURN helper_raise_exception(CPUX86State *env, int exception_= index) { raise_exception(env, exception_index); } @@ -116,24 +117,25 @@ void QEMU_NORETURN raise_interrupt(CPUX86State *env, = int intno, int is_int, raise_interrupt2(env, intno, is_int, error_code, next_eip_addend, 0); } =20 -void raise_exception_err(CPUX86State *env, int exception_index, - int error_code) +void QEMU_NORETURN raise_exception_err(CPUX86State *env, int exception_ind= ex, + int error_code) { raise_interrupt2(env, exception_index, 0, error_code, 0, 0); } =20 -void raise_exception_err_ra(CPUX86State *env, int exception_index, - int error_code, uintptr_t retaddr) +void QEMU_NORETURN raise_exception_err_ra(CPUX86State *env, int exception_= index, + int error_code, uintptr_t retadd= r) { raise_interrupt2(env, exception_index, 0, error_code, 0, retaddr); } =20 -void raise_exception(CPUX86State *env, int exception_index) +void QEMU_NORETURN raise_exception(CPUX86State *env, int exception_index) { raise_interrupt2(env, exception_index, 0, 0, 0, 0); } =20 -void raise_exception_ra(CPUX86State *env, int exception_index, uintptr_t r= etaddr) +void QEMU_NORETURN raise_exception_ra(CPUX86State *env, int exception_inde= x, + uintptr_t retaddr) { raise_interrupt2(env, exception_index, 0, 0, 0, retaddr); } diff --git a/target/i386/tcg/misc_helper.c b/target/i386/tcg/misc_helper.c index a30379283e..0e9a4f0bfc 100644 --- a/target/i386/tcg/misc_helper.c +++ b/target/i386/tcg/misc_helper.c @@ -96,7 +96,7 @@ void helper_rdtscp(CPUX86State *env) env->regs[R_ECX] =3D (uint32_t)(env->tsc_aux); } =20 -void helper_rdpmc(CPUX86State *env) +void QEMU_NORETURN helper_rdpmc(CPUX86State *env) { if (((env->cr[4] & CR4_PCE_MASK) =3D=3D 0 ) && ((env->hflags & HF_CPL_MASK) !=3D 0)) { @@ -109,7 +109,7 @@ void helper_rdpmc(CPUX86State *env) raise_exception_err(env, EXCP06_ILLOP, 0); } =20 -static void do_pause(X86CPU *cpu) +static QEMU_NORETURN void do_pause(X86CPU *cpu) { CPUState *cs =3D CPU(cpu); =20 @@ -118,7 +118,7 @@ static void do_pause(X86CPU *cpu) cpu_loop_exit(cs); } =20 -static void do_hlt(X86CPU *cpu) +static QEMU_NORETURN void do_hlt(X86CPU *cpu) { CPUState *cs =3D CPU(cpu); CPUX86State *env =3D &cpu->env; @@ -129,7 +129,7 @@ static void do_hlt(X86CPU *cpu) cpu_loop_exit(cs); } =20 -void helper_hlt(CPUX86State *env, int next_eip_addend) +void QEMU_NORETURN helper_hlt(CPUX86State *env, int next_eip_addend) { X86CPU *cpu =3D env_archcpu(env); =20 @@ -148,7 +148,7 @@ void helper_monitor(CPUX86State *env, target_ulong ptr) cpu_svm_check_intercept_param(env, SVM_EXIT_MONITOR, 0, GETPC()); } =20 -void helper_mwait(CPUX86State *env, int next_eip_addend) +void QEMU_NORETURN helper_mwait(CPUX86State *env, int next_eip_addend) { CPUState *cs =3D env_cpu(env); X86CPU *cpu =3D env_archcpu(env); @@ -167,7 +167,7 @@ void helper_mwait(CPUX86State *env, int next_eip_addend) } } =20 -void helper_pause(CPUX86State *env, int next_eip_addend) +void QEMU_NORETURN helper_pause(CPUX86State *env, int next_eip_addend) { X86CPU *cpu =3D env_archcpu(env); =20 @@ -177,7 +177,7 @@ void helper_pause(CPUX86State *env, int next_eip_addend) do_pause(cpu); } =20 -void helper_debug(CPUX86State *env) +void QEMU_NORETURN helper_debug(CPUX86State *env) { CPUState *cs =3D env_cpu(env); =20 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index b2a997fb30..c1d4d58c61 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -7282,6 +7282,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); gen_helper_rdpmc(cpu_env); + s->base.is_jmp =3D DISAS_NORETURN; break; case 0x134: /* sysenter */ /* For Intel SYSENTER is valid on 64-bit */ @@ -7443,7 +7444,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); gen_helper_mwait(cpu_env, tcg_const_i32(s->pc - pc_start)); - gen_eob(s); + s->base.is_jmp =3D DISAS_NORETURN; break; =20 case 0xca: /* clac */ --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450491; cv=none; d=zohomail.com; s=zohoarc; b=k4yA0aWuP3jnSfPrFrPScxcuZ/eV692t9H8fPxm8EDENDqBCJy6/naHrUEeZjAmNrUd0g6kLkuJWsFEK4LkEE4hBcY9AVFw8Faa8NYhmaPt4oIecCjvW11lSW4HG/u3sKKqZ4kVDc4h0ysvHNbElpJo2ogQ1lJR3hRe7tbvFpCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450491; h=Content-Transfer-Encoding:Cc: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=YE5gh1RAZElW6rE0tgb4yyRWs9xDRZvjDM9uycPY9fA=; b=KsbL3hgV2nKLwg1nUwZHlN5NS9Cu07m8UICzXDq0d5l1gnLrLlS1rhpOofVKqB6ayn2wC+fvVJ4sEDXvkb/J53u5oYrlAoLa8atR/dfTGGht764uaPKcojC0JxIJ91WRKGChoxUZw4NAJVp28KENPt/09xpdoG/wxx8kdoyqrU0= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162145049109922.963096947761187; Wed, 19 May 2021 11:54:51 -0700 (PDT) Received: from localhost ([::1]:51842 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRLG-0003w8-3H for importer@patchew.org; Wed, 19 May 2021 14:54:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51786) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyu-0004Xv-Gm for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:44 -0400 Received: from mail-oo1-xc31.google.com ([2607:f8b0:4864:20::c31]:44796) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyd-0005oC-Tc for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:44 -0400 Received: by mail-oo1-xc31.google.com with SMTP id s24-20020a4aead80000b02901fec6deb28aso3212243ooh.11 for ; Wed, 19 May 2021 11:31:27 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YE5gh1RAZElW6rE0tgb4yyRWs9xDRZvjDM9uycPY9fA=; b=XAiXHmeFNAdV33zpYz5y6O98ZuvnwugHgfif+qPk3fyhOXba1ffovj+avuagY6SBJk x/iKkZQTiI3i+ZJzpYdHlcpzHLDvtIaJYTxkxUmjj/mfFi4dkUzz4BywGWQTqoYVPIBm R6O3oDz+Zno9IN63c3FwasRvf4QNDkg6IT73MGPEia52rfOxi/Qm7OFmX0FaTWhLxrmL tfLT6AWYELJZXTayHWL2Amx37IOyGzHV26dQ8YFD8Ut957/Khg7yWnN8qqN6H+cl+i4b ysrtDPUrT+mqkKgG3cWuONXW7kYT2RbaGqWRUKVhV4xLJK/VUEiC77UwQK6tupwFRAI2 nsqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YE5gh1RAZElW6rE0tgb4yyRWs9xDRZvjDM9uycPY9fA=; b=mE+DPBS/yoCzv3RhCDgs62ZSKotsaruc3E2L/FySGwLCmWGvNUz6ebrHtImTbYW2w8 rB9xkKt0JECNXC7esD6ra7/3miEsqmBU7kbisxfqjeCdX4zzrSUUsKZvBleJQIi3Df/8 dZEVb3bZuk7bEHAMtDTThFC7UVHptRcRCiFDtTyD1Hpmwu5az3sn4AkcWp37uH8q/Exu O2/ONNB8J7um4gQk4xRwtgXsV5L3P6M9rLJsYPYo91/D5g4qbXC4rdnOHr6wnuQF/DJl ZcBX9j7wBjY3uiUj3sNuadV/M5Ng23ZEFKastOyEK5RcEVFPRZM4boF69w+zYkXnjXN+ WVzw== X-Gm-Message-State: AOAM531EFELRAH9/i9Lmkg5J2hCVO8iLESskvuCWUoqfs+cfrP/8JeyK 93PZTnfF26e/EYJ7q5J4Uy63eK9t0W9qsG9t X-Google-Smtp-Source: ABdhPJz+0x9sgZl1Dyn0DFZikBMbHaLhQ2lFH3asN7yUYX/Veq0CqTQALG/IEIMO+EabOJjVatU5fg== X-Received: by 2002:a4a:97ed:: with SMTP id x42mr564923ooi.40.1621449086664; Wed, 19 May 2021 11:31:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 35/50] target/i386: Simplify gen_debug usage Date: Wed, 19 May 2021 13:30:35 -0500 Message-Id: <20210519183050.875453-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::c31; envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc31.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Both invocations pass the start of the current instruction, which is available as s->base.pc_next. The function sets is_jmp, so we can eliminate a second setting. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-36-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index c1d4d58c61..36e38ebebf 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2614,10 +2614,10 @@ static void gen_interrupt(DisasContext *s, int intn= o, s->base.is_jmp =3D DISAS_NORETURN; } =20 -static void gen_debug(DisasContext *s, target_ulong cur_eip) +static void gen_debug(DisasContext *s) { gen_update_cc_op(s); - gen_jmp_im(s, cur_eip); + gen_jmp_im(s, s->base.pc_next - s->cs_base); gen_helper_debug(cpu_env); s->base.is_jmp =3D DISAS_NORETURN; } @@ -7152,7 +7152,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) #ifdef WANT_ICEBP case 0xf1: /* icebp (undocumented, exits to external debugger) */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_ICEBP); - gen_debug(s, pc_start - s->cs_base); + gen_debug(s); break; #endif case 0xfa: /* cli */ @@ -8586,8 +8586,7 @@ static bool i386_tr_breakpoint_check(DisasContextBase= *dcbase, CPUState *cpu, /* If RF is set, suppress an internally generated breakpoint. */ int flags =3D dc->base.tb->flags & HF_RF_MASK ? BP_GDB : BP_ANY; if (bp->flags & flags) { - gen_debug(dc, dc->base.pc_next - dc->cs_base); - dc->base.is_jmp =3D DISAS_NORETURN; + gen_debug(dc); /* The address covered by the breakpoint must be included in [tb->pc, tb->pc + tb->size) in order to for it to be properly cleared -- thus we increment the PC here so that --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450636; cv=none; d=zohomail.com; s=zohoarc; b=OSWfaPZkrmvWpkJnsH2Ai3k8h4Zc9XEXbfTRMLdB8+CysOmNz0oMMZPtsT9hEotkN/7KdtPD6et8KaUhcunE2BB5rPWMKaipqYwxI4Ks1tvzz4+FJf4Vw6TdBxvjBX+03NCKc/2YA2EcF8XbThLgfli8uw/gTUU/9eGL4jaUefc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450636; h=Content-Transfer-Encoding:Cc: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=o+bSpPqvUS5hXLbtWM0XfAjDH/PGAEYXlkUYshXGyEo=; b=JzmB4/boiWHKfLUW0fcIDTNz8NNRicf4QYDJZuIqtrM+1ryVzl4cg/wJZ1/yelXWJema15HQziTLvaZZPg8qyqGPYB5g/pHoSLwxbTeZ36j9hiPdjOA6hnclHiIzq+xJTQhTQSSklWUClqLp4SdpoU4Vhez/X/WYjaZNVfz+Njs= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450636397357.0319690260087; Wed, 19 May 2021 11:57:16 -0700 (PDT) Received: from localhost ([::1]:60446 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRNb-0001MY-Bx for importer@patchew.org; Wed, 19 May 2021 14:57:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51792) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyu-0004Yv-T2 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:44 -0400 Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]:33299) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyh-0005pA-4X for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:44 -0400 Received: by mail-ot1-x333.google.com with SMTP id i23-20020a9d68d70000b02902dc19ed4c15so12662099oto.0 for ; Wed, 19 May 2021 11:31:28 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=o+bSpPqvUS5hXLbtWM0XfAjDH/PGAEYXlkUYshXGyEo=; b=Mj9CiSl30M5SrX+Hfe73nhCiqAVlYMbRoQrPasxPO7N4Uy+sYMmInR+3mV/BITZ+yU OL2E6V9fHo2QVCgZTtuBZqkIXngysrJRs6VilPfbQKjtEm7g41HRiW62lJu+5WsIPTjw utqVAFT2cOWHDP8Iw7I65K8ZBWzUQT7FSvM0xAuLXY/3xnkaShCokqM63t/6qPAX9Uef rZ+++G+jdkrJLKMObKCgz4GRthb45fc6oAvAH/5eNgRlI3ZWufAjY43FM9KxG9B/YN7H zq5HZ8m/bn6ZC53vojAhY3v8H3VXg7t5TBf5wIG7r69aywHZg38XG2AKnSemk+BvSUie SBnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=o+bSpPqvUS5hXLbtWM0XfAjDH/PGAEYXlkUYshXGyEo=; b=dWS2s7Ck4zQrfWspKT56UXyCFQeRSS6myctWLZ360XIVtT8uOH8Mg7kYgWMrn3NlK/ 2PjtFLpnFJAmD9NYGuNq+8HkW0Y2U5eECD/BWcd0cu7tNXl9Lpk0aA7cM9g+W/jd7pAT RrhrfqwLBOPrTnLGwjSQ38fN1w9A5kiTuj/C37dmqY/rb9LC4KbukHcnyUn5nIRTrsTP VmaBiq/8LV0mv5j5e1A4FJtPVj8Ll3R4lFaWkJK+agtpfz8bElEOrgG+1WTesMLamR9W eTxt5XCY6qqEt5F10CKc1ScRYC7k1Cphu090cRa5nDXM/aJftGRQ2KTEDy55ktY9ytGZ Hr7A== X-Gm-Message-State: AOAM5326eIu5vGt47ZpcIoEL4MNaEEh4q3Wesw6h6Z4M15jRONiHQ08J 8sV7JxdgowMwCGhtvhCmlc6wOXDmzfmRVEQi X-Google-Smtp-Source: ABdhPJw4hg4BlFlit2wjZ02drTv4FUlcs2HHXMFtdS0MTmpJl2i3Dpmi+SrHrntbR8lADo7pifdowg== X-Received: by 2002:a9d:6c47:: with SMTP id g7mr645929otq.67.1621449087801; Wed, 19 May 2021 11:31:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 36/50] target/i386: Tidy svm_check_intercept from tcg Date: Wed, 19 May 2021 13:30:36 -0500 Message-Id: <20210519183050.875453-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::333; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x333.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" The param argument to helper_svm_check_intercept_param is always 0; eliminate it and rename to helper_svm_check_intercept. Fold gen_svm_check_intercept_param into gen_svm_check_intercept. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-37-richard.henderson@linaro.org> --- target/i386/helper.h | 2 +- target/i386/tcg/sysemu/svm_helper.c | 5 ++--- target/i386/tcg/translate.c | 16 ++++------------ 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index f794d1c7c7..86484a4ec4 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -107,7 +107,7 @@ DEF_HELPER_2(inl, tl, env, i32) =20 #ifndef CONFIG_USER_ONLY DEF_HELPER_FLAGS_4(bpt_io, TCG_CALL_NO_WG, void, env, i32, i32, tl) -DEF_HELPER_3(svm_check_intercept_param, void, env, i32, i64) +DEF_HELPER_2(svm_check_intercept, void, env, i32) DEF_HELPER_4(svm_check_io, void, env, i32, i32, i32) DEF_HELPER_3(vmrun, void, env, int, int) DEF_HELPER_1(vmmcall, void, env) diff --git a/target/i386/tcg/sysemu/svm_helper.c b/target/i386/tcg/sysemu/s= vm_helper.c index 79c73d67af..b431016e72 100644 --- a/target/i386/tcg/sysemu/svm_helper.c +++ b/target/i386/tcg/sysemu/svm_helper.c @@ -506,10 +506,9 @@ void cpu_svm_check_intercept_param(CPUX86State *env, u= int32_t type, } } =20 -void helper_svm_check_intercept_param(CPUX86State *env, uint32_t type, - uint64_t param) +void helper_svm_check_intercept(CPUX86State *env, uint32_t type) { - cpu_svm_check_intercept_param(env, type, param, GETPC()); + cpu_svm_check_intercept_param(env, type, 0, GETPC()); } =20 void helper_svm_check_io(CPUX86State *env, uint32_t port, uint32_t param, diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 36e38ebebf..ad2e6cdd8c 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -197,7 +197,7 @@ STUB_HELPER(clgi, TCGv_env env) STUB_HELPER(invlpga, TCGv_env env, TCGv_i32 aflag) STUB_HELPER(set_dr, TCGv_env env, TCGv_i32 reg, TCGv val) STUB_HELPER(stgi, TCGv_env env) -STUB_HELPER(svm_check_intercept_param, TCGv_env env, TCGv_i32 t, TCGv_i64 = p) +STUB_HELPER(svm_check_intercept, TCGv_env env, TCGv_i32 type) STUB_HELPER(svm_check_io, TCGv_env env, TCGv_i32 port, TCGv_i32 p, TCGv_i3= 2 a) STUB_HELPER(vmload, TCGv_env env, TCGv_i32 aflag) STUB_HELPER(vmmcall, TCGv_env env) @@ -2423,9 +2423,8 @@ static inline int svm_is_rep(int prefixes) return ((prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) ? 8 : 0); } =20 -static inline void -gen_svm_check_intercept_param(DisasContext *s, target_ulong pc_start, - uint32_t type, uint64_t param) +static void gen_svm_check_intercept(DisasContext *s, target_ulong pc_start, + uint32_t type) { /* no SVM activated; fast case */ if (likely(!GUEST(s))) { @@ -2433,14 +2432,7 @@ gen_svm_check_intercept_param(DisasContext *s, targe= t_ulong pc_start, } gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); - gen_helper_svm_check_intercept_param(cpu_env, tcg_const_i32(type), - tcg_const_i64(param)); -} - -static inline void -gen_svm_check_intercept(DisasContext *s, target_ulong pc_start, uint64_t t= ype) -{ - gen_svm_check_intercept_param(s, pc_start, type, 0); + gen_helper_svm_check_intercept(cpu_env, tcg_constant_i32(type)); } =20 static inline void gen_stack_update(DisasContext *s, int addend) --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450620; cv=none; d=zohomail.com; s=zohoarc; b=nBKM2+pW7HO+yiiW6S+/xDrrpbTT4eTsnOID7SSQfoopg8BGMZS+S/ZYoCT8hJv+O7W+9boX9GMFOSpL/mIJfaoV6fK1Duu0rH3JiXPVyGwzXy+saTtXJUK10AMPso51ZcoYTExo919oz9tZa7wKBAB3ybPlXs4V3FiCi6G6zbk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450620; h=Content-Transfer-Encoding:Cc: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=wGPkMnHncYPRjpbgxeSiThUfzvY8NqHBArvTydIYpa0=; b=ee4abQ+GZdsZHOfX28X4da07Wye3t5I+1ADRlooq7jazMOhmI2f75ooSI1ZvsCQLUrPPsOYTU8Qrui0GBnqdW791Yh3L4iOrbUS84tNYjDYZElPH6x2zjsB91ddLiNdzlStI3o83AHeaXWDCqL8uXqahXfWRZquvbUcU1NaytGQ= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450620352870.5557401609872; Wed, 19 May 2021 11:57:00 -0700 (PDT) Received: from localhost ([::1]:58762 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRNL-0000Ek-5w for importer@patchew.org; Wed, 19 May 2021 14:56:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51858) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyx-0004hp-E3 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:47 -0400 Received: from mail-oo1-xc33.google.com ([2607:f8b0:4864:20::c33]:45967) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyh-0005q9-49 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:46 -0400 Received: by mail-oo1-xc33.google.com with SMTP id s1-20020a4ac1010000b02901cfd9170ce2so3212007oop.12 for ; Wed, 19 May 2021 11:31:29 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wGPkMnHncYPRjpbgxeSiThUfzvY8NqHBArvTydIYpa0=; b=VxCbeBaDAVJea+pkF4JkaDCYaqpgeCJBA3Aq9kzqV+D4O6Fa0CNzjW0x+7GLOHBF6P T3HWED9YR0n2qoBxHenV69cAKCFXvLHFBEkpvq2oIt4c58A3qQehRvvrmFd+YY9P/SIo 4ohoCOQyDfjadtM/miTvxt8ciDpFiw9wdULfK6ND7P3qupLwvihGeRvY9bGfALwfaWnN grVqXOxUk5rVHZQ6VQE4z6K9yc1qLIqdVolsHM9Rp3QM6/qfKo4HAH88YFIrPio88HO9 HOFua9bFMcABcd2Zz9Ls42XGxdm9YYTtQmON+GlDe700CM9jD3JzgS5IumJXxrYgEW/8 blnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wGPkMnHncYPRjpbgxeSiThUfzvY8NqHBArvTydIYpa0=; b=UVUYugKbfPSDkCEDocurHwiAkwefahZR1ksHlzgOGy0w+efEqlQ8h7wKD0ai9AE06C OmCQhOhP59qGktV1i01JH+zLCXxA6Nw+7eIQb+U6uhfgoWyiPK+wDWEejtJxe/Vqwct0 La/lGmf2BcB+qzTUTrz1RJOWRqbnhf5gdcd2rXt/c68VbcfkpAe8GCv316Gbr0D5E9VA UAX1II1Q9dk3hvh3WAeP40ILeNgAiU96uzRIU0EFUJjXIJoxXJFuyJsh6MArJU+1iRRr LCRWJ1BXZQgSjMNvZjsx7UNFHMUdmphphTT4lCaMPyyQRUCH64hIcUotDo8JBj824mWY QG/Q== X-Gm-Message-State: AOAM533kuKo0p72Mc9fjz0hHw+jvzfcawhlmpipIUUx6Ibn++QNL0DW5 hZdveqAIH52JOE2NLkOU4W8kzwZKaZb+Yfk1 X-Google-Smtp-Source: ABdhPJzHl+NCsRBebWfLy+GDjtfqryz8JtfW4gtREH/7mm+ZaPGxySDorfyRf5J9gxv62N70lsFONA== X-Received: by 2002:a4a:49c8:: with SMTP id z191mr553771ooa.62.1621449088759; Wed, 19 May 2021 11:31:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 37/50] target/i386: Remove pc_start argument to gen_svm_check_intercept Date: Wed, 19 May 2021 13:30:37 -0500 Message-Id: <20210519183050.875453-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::c33; envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc33.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" When exiting helper_svm_check_intercept via exception, cpu_vmexit calls cpu_restore_state, which will recover eip and cc_op via unwind. Therefore we do not need to store eip or cc_op before the call. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-38-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 45 +++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index ad2e6cdd8c..3844c0342e 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2423,15 +2423,12 @@ static inline int svm_is_rep(int prefixes) return ((prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) ? 8 : 0); } =20 -static void gen_svm_check_intercept(DisasContext *s, target_ulong pc_start, - uint32_t type) +static void gen_svm_check_intercept(DisasContext *s, uint32_t type) { /* no SVM activated; fast case */ if (likely(!GUEST(s))) { return; } - gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); gen_helper_svm_check_intercept(cpu_env, tcg_constant_i32(type)); } =20 @@ -6639,7 +6636,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) val =3D 0; goto do_lret; case 0xcf: /* iret */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_IRET); + gen_svm_check_intercept(s, SVM_EXIT_IRET); if (!PE(s) || VM86(s)) { /* real mode or vm86 mode */ if (!check_vm86_iopl(s)) { @@ -6761,7 +6758,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /************************/ /* flags */ case 0x9c: /* pushf */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_PUSHF); + gen_svm_check_intercept(s, SVM_EXIT_PUSHF); if (check_vm86_iopl(s)) { gen_update_cc_op(s); gen_helper_read_eflags(s->T0, cpu_env); @@ -6769,7 +6766,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } break; case 0x9d: /* popf */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_POPF); + gen_svm_check_intercept(s, SVM_EXIT_POPF); if (check_vm86_iopl(s)) { ot =3D gen_pop_T0(s); if (CPL(s) =3D=3D 0) { @@ -7143,7 +7140,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; #ifdef WANT_ICEBP case 0xf1: /* icebp (undocumented, exits to external debugger) */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_ICEBP); + gen_svm_check_intercept(s, SVM_EXIT_ICEBP); gen_debug(s); break; #endif @@ -7347,7 +7344,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0: /* sldt */ if (!PE(s) || VM86(s)) goto illegal_op; - gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_READ); + gen_svm_check_intercept(s, SVM_EXIT_LDTR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, ldt.selector)); ot =3D mod =3D=3D 3 ? dflag : MO_16; @@ -7357,7 +7354,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!PE(s) || VM86(s)) goto illegal_op; if (check_cpl0(s)) { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_WRITE); + gen_svm_check_intercept(s, SVM_EXIT_LDTR_WRITE); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_lldt(cpu_env, s->tmp2_i32); @@ -7366,7 +7363,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 1: /* str */ if (!PE(s) || VM86(s)) goto illegal_op; - gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_READ); + gen_svm_check_intercept(s, SVM_EXIT_TR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, tr.selector)); ot =3D mod =3D=3D 3 ? dflag : MO_16; @@ -7376,7 +7373,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!PE(s) || VM86(s)) goto illegal_op; if (check_cpl0(s)) { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_WRITE); + gen_svm_check_intercept(s, SVM_EXIT_TR_WRITE); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_ltr(cpu_env, s->tmp2_i32); @@ -7404,7 +7401,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) modrm =3D x86_ldub_code(env, s); switch (modrm) { CASE_MODRM_MEM_OP(0): /* sgdt */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_GDTR_READ); + gen_svm_check_intercept(s, SVM_EXIT_GDTR_READ); gen_lea_modrm(env, s, modrm); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, gdt.limit)); @@ -7460,7 +7457,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 CASE_MODRM_MEM_OP(1): /* sidt */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_IDTR_READ); + gen_svm_check_intercept(s, SVM_EXIT_IDTR_READ); gen_lea_modrm(env, s, modrm); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, idt.lim= it)); gen_op_st_v(s, MO_16, s->T0, s->A0); @@ -7580,7 +7577,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) || !PE(s)) { goto illegal_op; } - gen_svm_check_intercept(s, pc_start, SVM_EXIT_SKINIT); + gen_svm_check_intercept(s, SVM_EXIT_SKINIT); /* If not intercepted, not implemented -- raise #UD. */ goto illegal_op; =20 @@ -7600,7 +7597,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!check_cpl0(s)) { break; } - gen_svm_check_intercept(s, pc_start, SVM_EXIT_GDTR_WRITE); + gen_svm_check_intercept(s, SVM_EXIT_GDTR_WRITE); gen_lea_modrm(env, s, modrm); gen_op_ld_v(s, MO_16, s->T1, s->A0); gen_add_A0_im(s, 2); @@ -7616,7 +7613,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!check_cpl0(s)) { break; } - gen_svm_check_intercept(s, pc_start, SVM_EXIT_IDTR_WRITE); + gen_svm_check_intercept(s, SVM_EXIT_IDTR_WRITE); gen_lea_modrm(env, s, modrm); gen_op_ld_v(s, MO_16, s->T1, s->A0); gen_add_A0_im(s, 2); @@ -7629,7 +7626,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 CASE_MODRM_OP(4): /* smsw */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_READ_CR0); + gen_svm_check_intercept(s, SVM_EXIT_READ_CR0); tcg_gen_ld_tl(s->T0, cpu_env, offsetof(CPUX86State, cr[0])); /* * In 32-bit mode, the higher 16 bits of the destination @@ -7661,7 +7658,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!check_cpl0(s)) { break; } - gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); + gen_svm_check_intercept(s, SVM_EXIT_WRITE_CR0); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); gen_helper_lmsw(cpu_env, s->T0); gen_jmp_im(s, s->pc - s->cs_base); @@ -7718,7 +7715,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x108: /* invd */ case 0x109: /* wbinvd */ if (check_cpl0(s)) { - gen_svm_check_intercept(s, pc_start, (b & 2) ? SVM_EXIT_INVD := SVM_EXIT_WBINVD); + gen_svm_check_intercept(s, (b & 2) ? SVM_EXIT_INVD : SVM_EXIT_= WBINVD); /* nothing to do */ } break; @@ -8108,14 +8105,14 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) goto illegal_op; } if (b & 2) { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_DR0 + = reg); + gen_svm_check_intercept(s, SVM_EXIT_WRITE_DR0 + reg); 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_eob(s); } else { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_READ_DR0 + r= eg); + gen_svm_check_intercept(s, SVM_EXIT_READ_DR0 + reg); tcg_gen_movi_i32(s->tmp2_i32, reg); gen_helper_get_dr(s->T0, cpu_env, s->tmp2_i32); gen_op_mov_reg_v(s, ot, rm, s->T0); @@ -8124,7 +8121,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x106: /* clts */ if (check_cpl0(s)) { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); + 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); @@ -8351,7 +8348,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_nop_modrm(env, s, modrm); break; case 0x1aa: /* rsm */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_RSM); + gen_svm_check_intercept(s, SVM_EXIT_RSM); if (!(s->flags & HF_SMM_MASK)) goto illegal_op; #ifdef CONFIG_USER_ONLY --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450746; cv=none; d=zohomail.com; s=zohoarc; b=LaUijRjQtq7lM9t8WCWCkNUP47W1UYZb+NqSCRsHjnxH/pjAXhMvvrJecQnA+gqnApmiZnmlNerhZNGks6QW1JC9hZy/cB79GbflWXN64m/tDusgVbfKacJHaJeaV4HcWmsO3vyQFYC3Y76DuW0PxIxNqkN1VqUfCGjWYvnl6KA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450746; h=Content-Transfer-Encoding:Cc: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=iPj+icuYk1Db82ELWhN0FuTsJx+Xd+A4Cv7yhnX7+A8=; b=X4C40MPucaMY8utj5QaM72BhkRml8KjCcYIfXkJnQ2aeCgk74awCjGnyG7KrYrSNxS3C+XxTB7Z0Xt1+hXXH1AHmHahT5ktu/5fEZhtePWl+oynG9bgMkztKx0zoFuLuDBYvFmbsM9tJ/ADDj6RdTV7ratSNjj1fGFMv8SlnqnE= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450746978337.2060982499735; Wed, 19 May 2021 11:59:06 -0700 (PDT) Received: from localhost ([::1]:40806 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRPN-00071x-SN for importer@patchew.org; Wed, 19 May 2021 14:59:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51844) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyw-0004f6-Ih for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:46 -0400 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]:42738) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyh-0005qb-4k for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:46 -0400 Received: by mail-ot1-x32e.google.com with SMTP id g7-20020a9d12870000b0290328b1342b73so4776826otg.9 for ; Wed, 19 May 2021 11:31:30 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iPj+icuYk1Db82ELWhN0FuTsJx+Xd+A4Cv7yhnX7+A8=; b=X2b32TWZOWujfKRu9u11k3kJKGad/2wEHUu30Y8D5LkyLX4DnD9yefPsnbJyMq2jyz Ipz9yBM5v+39pQeXWF53Sf+XMLMSDkPajJMPB1gxmD+HqbwXKGVLSy70CvsYzUfrk1vb ckv1M+V0uJK7R3B77Ii9p1HrUBWSQmixlVAJEU/MtUX6kue1GpHTNZVMjSeIWzlTfM58 ip1Pczf4w1gKiuigjQJqG33o2aZ/adbHChtaZyW4gq01YHkxwhZvUYWCzzxXjFs2xv/L YU6E6DvRbb3qvo3FIct2QZToUwkJGQYEYTHDssiXkd0lMecTX7ypGTphqyns9zE7wvml l0PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iPj+icuYk1Db82ELWhN0FuTsJx+Xd+A4Cv7yhnX7+A8=; b=oC4Wnoczn8dDFOcRfHapWJmXyvrEolZa+ky6SjhKkFvD/zN2or/AuqywhAoDmDMtwE r6Uq+S0CIa2vgsA0+gY1c7kSazsZ/hit4IDBy1vX7s6lQNsJbFIwFJ7+aY2FjkD57ePt av8y5N9xOpRAPIRj8hcF0xU/tuWa2ienNzAXOqSKztlT4al8Ir6GIcNYyGegfPI9Yh7x 31Dk6YAQmbi6HhPZWVbcJ8LzCb0xuzChoQMlPX+JS5J5wmovmTNDbxBY8IaCx+uYWVh2 YG+HuCEklgeNg6c8XE6YuYQb65vZujuVpEMCrJ27dxTovXt+AkPrTdAkTISjeSXNT9wY uKMA== X-Gm-Message-State: AOAM53097wpkcK9tyj4VWl53ooiBnd6PBEJg/5ZS+M7qxRC039zaCh/h 8RPmjl6S9a+vh8PY0f+QsWtuCXoB5l5To5Nl X-Google-Smtp-Source: ABdhPJxKY+tUGs3g6/iHlEfeSRWC80L7rycX3Lc8hGpFx5+dX3l7sJH4m+cLW3yXIrzG9wdjf2bXfw== X-Received: by 2002:a9d:5a12:: with SMTP id v18mr636651oth.306.1621449089699; Wed, 19 May 2021 11:31:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 38/50] target/i386: Remove user stub for cpu_vmexit Date: Wed, 19 May 2021 13:30:38 -0500 Message-Id: <20210519183050.875453-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32e; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32e.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" This function is only called from tcg/sysemu/. There is no need for a stub in tcg/user/. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-39-richard.henderson@linaro.org> --- target/i386/tcg/helper-tcg.h | 4 +++- target/i386/tcg/user/svm_stubs.c | 6 ------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/target/i386/tcg/helper-tcg.h b/target/i386/tcg/helper-tcg.h index 97fb7a226a..85a8b0ebd6 100644 --- a/target/i386/tcg/helper-tcg.h +++ b/target/i386/tcg/helper-tcg.h @@ -77,10 +77,12 @@ extern const uint8_t parity_table[256]; /* misc_helper.c */ void cpu_load_eflags(CPUX86State *env, int eflags, int update_mask); =20 -/* svm_helper.c */ +/* sysemu/svm_helper.c */ +#ifndef CONFIG_USER_ONLY void QEMU_NORETURN cpu_vmexit(CPUX86State *nenv, uint32_t exit_code, uint64_t exit_info_1, uintptr_t retaddr); void do_vmexit(CPUX86State *env); +#endif =20 /* seg_helper.c */ void do_interrupt_x86_hardirq(CPUX86State *env, int intno, int is_hw); diff --git a/target/i386/tcg/user/svm_stubs.c b/target/i386/tcg/user/svm_st= ubs.c index 48a43bdcea..db818f89a8 100644 --- a/target/i386/tcg/user/svm_stubs.c +++ b/target/i386/tcg/user/svm_stubs.c @@ -22,12 +22,6 @@ #include "exec/helper-proto.h" #include "tcg/helper-tcg.h" =20 -void cpu_vmexit(CPUX86State *nenv, uint32_t exit_code, uint64_t exit_info_= 1, - uintptr_t retaddr) -{ - assert(0); -} - void cpu_svm_check_intercept_param(CPUX86State *env, uint32_t type, uint64_t param, uintptr_t retaddr) { --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450473; cv=none; d=zohomail.com; s=zohoarc; b=MJA6agjCAqC4yiHoybcSRv4ROpoe/69OgwidY7jfZyaT7RrwVj5CsEBALWeJQEeZboTeBbow48oDOPy74Gj7iHnP978MXiM1vIccRZSE3vOQ0EU1OmTB54ZVhGe8vqQ5gAYRg6JmH/ThwtvCMHRFeUP45Yy7xkjaMZjC1eECt0o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450473; h=Content-Transfer-Encoding:Cc: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=uACQlfQ1L4lJXOLq7mztjHzJAGN3TYb66yJkvd3rBv4=; b=WuqXdFcvq5WGcySXQdfTdoJorAPpUjUaNmLzJLv8/865TAIYiR7XLVVAlsS0BcC7d1ozb8SZzoJ+Y5KZEIV9lnqKVJ30CigOcONHNAV6e92j8+YZ3w6VD+7sK4YQtKsNIvqYdb/8ey84fSQyYqviSc1phuuHFaA+B/QhGEYmfdE= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450473839293.9129355074854; Wed, 19 May 2021 11:54:33 -0700 (PDT) Received: from localhost ([::1]:50006 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRKy-0002jV-Ns for importer@patchew.org; Wed, 19 May 2021 14:54:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51816) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljQyv-0004cu-W0 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:46 -0400 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]:37413) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljQyh-0005ql-On for qemu-devel@nongnu.org; Wed, 19 May 2021 14:31:45 -0400 Received: by mail-ot1-x32c.google.com with SMTP id v19-20020a0568301413b0290304f00e3d88so12620353otp.4 for ; Wed, 19 May 2021 11:31:31 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id l9sm28428oou.43.2021.05.19.11.31.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:31:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uACQlfQ1L4lJXOLq7mztjHzJAGN3TYb66yJkvd3rBv4=; b=P0wCPtX+ts8CT7tpL5nc1xWLPnbkjkgc6quRJQXHgZI85puFlJq7LzTYR3XPgvQv10 CNselL13FORw5hAl1EMFp+EmvBrF+zcaKTnHhFqRirHmzVRqWesbl1aHGEjjbvKP/Vsn SE6nYHTnv4CK2/utRFC5rE+66ibqbqiGAWbQUeGcDw7ORihlD3XHoadoLdFxKaZ7MsKS Tl8lIDaznEftfiYuxcfNvNLaNG77eUbNvhn48doicZtYOcUy4qDwPIt7FMPBX6LI/iTl KkwGyok/O+Ge5yCGAN7vDdVohuxNmYvEIvC/xjPGGE9Qyc4EyLXfkKLp69+fxz/6QWN8 V+qQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uACQlfQ1L4lJXOLq7mztjHzJAGN3TYb66yJkvd3rBv4=; b=rdfBGpxOBxrJIDog5mwkCBsnbAUc1VrI7XJrW6cjaZNzF/HENdyXTVx2XM/76P/Zat mSAaGBCWDGHg0hvIWJcW4X5usjtDyNNbJcHwz+E+27iQRfJ27pOyw+5nwfV8o99JmCTh v9RN35s8aEGLkrwITpMFXgyO987Spsgi/fYdwg5pvg0ZDQvpeNvB22+CF4JzPs6nSu/Y ALA/FabOMW98Smu+dqCZk0NKA6wj2iO9iW2DhR6cnG4D4wCA/7gq79R+ooahh0jaEEIU u5P5gOvnGM/q8H/fdEFpMaNnYvke2dFjKnzLN6LcMklggz/QPKDS7L7B1pD8OXkpGP4C uDUQ== X-Gm-Message-State: AOAM532EnYUPREPNehJ/cWWLaS30L8gbO6vUz2tjck2YUnDmK3gubE2N cLKgkco2AP4/xHTgxobNFFQC5vUyzwneNIoH X-Google-Smtp-Source: ABdhPJyaid9qrV97D37JhOBsjX3EWl/MIaq9nvGJisfRF2hbAjEt9CMa8U5eZLwjIy83vJ1UHXhT/A== X-Received: by 2002:a9d:be2:: with SMTP id 89mr633099oth.269.1621449090650; Wed, 19 May 2021 11:31:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 39/50] target/i386: Cleanup read_crN, write_crN, lmsw Date: Wed, 19 May 2021 13:30:39 -0500 Message-Id: <20210519183050.875453-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32c; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32c.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Pull the svm intercept check into the translator. Pull the entire implementation of lmsw into the translator. Push the check for CR8LEG into the regno validation switch. Unify the gen_io_start check between read/write. Reviewed-by: Paolo Bonzini Signed-off-by: Richard Henderson Message-Id: <20210514151342.384376-40-richard.henderson@linaro.org> --- target/i386/helper.h | 5 +- target/i386/tcg/misc_helper.c | 8 --- target/i386/tcg/sysemu/misc_helper.c | 2 - target/i386/tcg/translate.c | 97 +++++++++++++++------------- 4 files changed, 54 insertions(+), 58 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index 86484a4ec4..ebfaca66dd 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -42,9 +42,8 @@ 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) DEF_HELPER_3(lret_protected, void, env, int, int) -DEF_HELPER_2(read_crN, tl, env, int) -DEF_HELPER_3(write_crN, void, env, int, tl) -DEF_HELPER_2(lmsw, void, env, tl) +DEF_HELPER_FLAGS_2(read_crN, TCG_CALL_NO_RWG, tl, env, int) +DEF_HELPER_FLAGS_3(write_crN, TCG_CALL_NO_RWG, void, env, int, tl) DEF_HELPER_1(clts, void, env) =20 #ifndef CONFIG_USER_ONLY diff --git a/target/i386/tcg/misc_helper.c b/target/i386/tcg/misc_helper.c index 0e9a4f0bfc..931dbd9db0 100644 --- a/target/i386/tcg/misc_helper.c +++ b/target/i386/tcg/misc_helper.c @@ -60,14 +60,6 @@ void helper_cpuid(CPUX86State *env) env->regs[R_EDX] =3D edx; } =20 -void helper_lmsw(CPUX86State *env, target_ulong t0) -{ - /* only 4 lower bits of CR0 are modified. PE cannot be set to zero - if already set to one. */ - t0 =3D (env->cr[0] & ~0xe) | (t0 & 0xf); - helper_write_crN(env, 0, t0); -} - void helper_invlpg(CPUX86State *env, target_ulong addr) { X86CPU *cpu =3D env_archcpu(env); diff --git a/target/i386/tcg/sysemu/misc_helper.c b/target/i386/tcg/sysemu/= misc_helper.c index 66e7939537..c7381ef7e8 100644 --- a/target/i386/tcg/sysemu/misc_helper.c +++ b/target/i386/tcg/sysemu/misc_helper.c @@ -65,7 +65,6 @@ target_ulong helper_read_crN(CPUX86State *env, int reg) { target_ulong val; =20 - cpu_svm_check_intercept_param(env, SVM_EXIT_READ_CR0 + reg, 0, GETPC()= ); switch (reg) { default: val =3D env->cr[reg]; @@ -83,7 +82,6 @@ target_ulong helper_read_crN(CPUX86State *env, int reg) =20 void helper_write_crN(CPUX86State *env, int reg, target_ulong t0) { - cpu_svm_check_intercept_param(env, SVM_EXIT_WRITE_CR0 + reg, 0, GETPC(= )); switch (reg) { case 0: cpu_x86_update_cr0(env, t0); diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 3844c0342e..14a44a00ca 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -7654,13 +7654,22 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); gen_helper_wrpkru(cpu_env, s->tmp2_i32, s->tmp1_i64); break; + CASE_MODRM_OP(6): /* lmsw */ if (!check_cpl0(s)) { break; } gen_svm_check_intercept(s, SVM_EXIT_WRITE_CR0); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); - gen_helper_lmsw(cpu_env, s->T0); + /* + * Only the 4 lower bits of CR0 are modified. + * PE cannot be set to zero if already set to one. + */ + tcg_gen_ld_tl(s->T1, cpu_env, offsetof(CPUX86State, cr[0])); + tcg_gen_andi_tl(s->T0, s->T0, 0xf); + 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_eob(s); break; @@ -8034,58 +8043,56 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) modrm =3D x86_ldub_code(env, s); gen_nop_modrm(env, s, modrm); break; + case 0x120: /* mov reg, crN */ case 0x122: /* mov crN, reg */ - if (check_cpl0(s)) { - modrm =3D x86_ldub_code(env, s); - /* Ignore the mod bits (assume (modrm&0xc0)=3D=3D0xc0). - * AMD documentation (24594.pdf) and testing of - * intel 386 and 486 processors all show that the mod bits - * are assumed to be 1's, regardless of actual values. - */ - rm =3D (modrm & 7) | REX_B(s); - reg =3D ((modrm >> 3) & 7) | REX_R(s); - if (CODE64(s)) - ot =3D MO_64; - else - ot =3D MO_32; - if ((prefixes & PREFIX_LOCK) && (reg =3D=3D 0) && + if (!check_cpl0(s)) { + break; + } + modrm =3D x86_ldub_code(env, s); + /* + * Ignore the mod bits (assume (modrm&0xc0)=3D=3D0xc0). + * AMD documentation (24594.pdf) and testing of Intel 386 and 486 + * processors all show that the mod bits are assumed to be 1's, + * regardless of actual values. + */ + rm =3D (modrm & 7) | REX_B(s); + reg =3D ((modrm >> 3) & 7) | REX_R(s); + switch (reg) { + case 0: + if ((prefixes & PREFIX_LOCK) && (s->cpuid_ext3_features & CPUID_EXT3_CR8LEG)) { reg =3D 8; } - switch(reg) { - case 0: - case 2: - case 3: - case 4: - case 8: - gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); - if (b & 2) { - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_io_start(); - } - gen_op_mov_v_reg(s, ot, s->T0, rm); - gen_helper_write_crN(cpu_env, tcg_const_i32(reg), - s->T0); - gen_jmp_im(s, s->pc - s->cs_base); - gen_eob(s); - } else { - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { - gen_io_start(); - } - gen_helper_read_crN(s->T0, cpu_env, tcg_const_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; - default: - goto unknown_op; + break; + case 2: + case 3: + case 4: + break; + default: + goto unknown_op; + } + ot =3D (CODE64(s) ? MO_64 : MO_32); + + if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { + gen_io_start(); + } + if (b & 2) { + 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_eob(s); + } else { + 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; + case 0x121: /* mov reg, drN */ case 0x123: /* mov drN, reg */ if (check_cpl0(s)) { --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450971; cv=none; d=zohomail.com; s=zohoarc; b=MhqpF/VMbIozNsXRBUAohc21VigaoDUH1XVtxyUSjn+x7wztimRiiSM7XfgfjgkEW9kDZQu42P6If75rRxHPGlUFaybINzTsYl/O3jb7VHwyuCbi3W5WmhZPflD2nmvhVxArgqasSwWD81NZ+MoVPif1HEqkfP5bQKYIEJXgG4A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450971; h=Content-Transfer-Encoding:Cc: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=MxaVFDhOR/2P7mRJMj9Ww3Gxrm+V2fvm6YpN2MZVwIE=; b=LkRHxr4sDWR+N5KfDvbqN0hdConsAgNAQnrRqvGYMTVBMOlPuZnLoy7Y4HiVhr+XRdzTG9zO+te7tHwQogg6VEzclvprWM1dEwXV5CKUnMdFv95zmKcgPLYo0anJBlZCXL2yJwcJnmRJ1i6l/FnYx9nH1xjNN++m9f9dkU/15os= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450971137210.56355853438686; Wed, 19 May 2021 12:02:51 -0700 (PDT) Received: from localhost ([::1]:49702 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRT0-0004aj-3T for importer@patchew.org; Wed, 19 May 2021 15:02:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53118) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1f-0002iB-K4 for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:35 -0400 Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]:44657) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1d-0007OE-Op for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:35 -0400 Received: by mail-oi1-x22e.google.com with SMTP id d21so13972394oic.11 for ; Wed, 19 May 2021 11:34:33 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MxaVFDhOR/2P7mRJMj9Ww3Gxrm+V2fvm6YpN2MZVwIE=; b=WIqlYSoaWmrH4nFkAtEJPo/VcDqFVEAACacHxoRClLekcEfh/SDXX1vhJZFRtd6Wxv N5G7O96AJ/H4HkLshGpCav5Awoe03ngwkeIerm89RwchYgdxrRPpFTMoNfTOkAneYnZo 8514O7MQcVSL6wYpcdbyLieJqWmaoad+O8O4Hg5+raqUNQdZKhbwteexxyjoihCRAlOQ hjIQ7BFdNMD+q4Ft0f3W0pu3jxzyAi6MeVGgKLWRrkuLgrstHwSRjnf5bqGG1/+GxJ67 02VoY+uT8AT076VuV+t4M1Uw3vP5zG5WHBSu4wdrVmz0Hw48k+N1S7fxUIBeiBoNY17q Qkxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MxaVFDhOR/2P7mRJMj9Ww3Gxrm+V2fvm6YpN2MZVwIE=; b=GAcm0yAggkqEzaZ4z7Xy/1hQGHeC3id7aHlB6DtzxA9GZmBWdimRtlfXkL830O3rng 7gmf5cQBRm+vNHYzlFqI9Abu4+BU63cNQFajOrm8hfW0Gypq9a0S8c3XV1ZFfiqsRR+z uWcxCOiTbH4e9XbzPVe36kuNHlWffXzfMqoSo6q4LhZSj255RUsfU2MCyb7MgvGIvyyL FgDm00clGXOC0aUVCo1TQ8l0tH2ctM3AYc564WvE1kEe0C6/UQIafYeV1KdK4suOHm/W j5cVe1c6QIhcSXrobzZpDcx9a7/jUXSrevkd5QQ/FNkcVEvx7vyZKNAbyuvk6iy+kE5T 0aNQ== X-Gm-Message-State: AOAM5331rWDrEFiF+suxHldV2Jy031p/z1aEWwcexvFTeeMttUUIfRPG etIFkk1H449b/BpRemT4+riOGdZHyD81ApIE X-Google-Smtp-Source: ABdhPJxvpTbGnoU4d8jvFdv2ANFdVnNV1mmJZlv8et4/N7vKJ02GwVMvZMsNVBOS0NZDwHF6n8j6Dg== X-Received: by 2002:aca:aa12:: with SMTP id t18mr547947oie.16.1621449272775; Wed, 19 May 2021 11:34:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 40/50] target/i386: Pass env to do_pause and do_hlt Date: Wed, 19 May 2021 13:30:40 -0500 Message-Id: <20210519183050.875453-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::22e; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22e.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Having the callers upcast to X86CPU is a waste, since we don't need it. We even have to recover env in do_hlt. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-41-richard.henderson@linaro.org> --- target/i386/tcg/misc_helper.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/target/i386/tcg/misc_helper.c b/target/i386/tcg/misc_helper.c index 931dbd9db0..23287b330e 100644 --- a/target/i386/tcg/misc_helper.c +++ b/target/i386/tcg/misc_helper.c @@ -101,19 +101,18 @@ void QEMU_NORETURN helper_rdpmc(CPUX86State *env) raise_exception_err(env, EXCP06_ILLOP, 0); } =20 -static QEMU_NORETURN void do_pause(X86CPU *cpu) +static void QEMU_NORETURN do_pause(CPUX86State *env) { - CPUState *cs =3D CPU(cpu); + CPUState *cs =3D env_cpu(env); =20 /* Just let another CPU run. */ cs->exception_index =3D EXCP_INTERRUPT; cpu_loop_exit(cs); } =20 -static QEMU_NORETURN void do_hlt(X86CPU *cpu) +static void QEMU_NORETURN do_hlt(CPUX86State *env) { - CPUState *cs =3D CPU(cpu); - CPUX86State *env =3D &cpu->env; + CPUState *cs =3D env_cpu(env); =20 env->hflags &=3D ~HF_INHIBIT_IRQ_MASK; /* needed if sti is just before= */ cs->halted =3D 1; @@ -123,12 +122,10 @@ static QEMU_NORETURN void do_hlt(X86CPU *cpu) =20 void QEMU_NORETURN helper_hlt(CPUX86State *env, int next_eip_addend) { - X86CPU *cpu =3D env_archcpu(env); - cpu_svm_check_intercept_param(env, SVM_EXIT_HLT, 0, GETPC()); env->eip +=3D next_eip_addend; =20 - do_hlt(cpu); + do_hlt(env); } =20 void helper_monitor(CPUX86State *env, target_ulong ptr) @@ -143,7 +140,6 @@ void helper_monitor(CPUX86State *env, target_ulong ptr) void QEMU_NORETURN helper_mwait(CPUX86State *env, int next_eip_addend) { CPUState *cs =3D env_cpu(env); - X86CPU *cpu =3D env_archcpu(env); =20 if ((uint32_t)env->regs[R_ECX] !=3D 0) { raise_exception_ra(env, EXCP0D_GPF, GETPC()); @@ -153,20 +149,18 @@ void QEMU_NORETURN helper_mwait(CPUX86State *env, int= next_eip_addend) =20 /* XXX: not complete but not completely erroneous */ if (cs->cpu_index !=3D 0 || CPU_NEXT(cs) !=3D NULL) { - do_pause(cpu); + do_pause(env); } else { - do_hlt(cpu); + do_hlt(env); } } =20 void QEMU_NORETURN helper_pause(CPUX86State *env, int next_eip_addend) { - X86CPU *cpu =3D env_archcpu(env); - cpu_svm_check_intercept_param(env, SVM_EXIT_PAUSE, 0, GETPC()); env->eip +=3D next_eip_addend; =20 - do_pause(cpu); + do_pause(env); } =20 void QEMU_NORETURN helper_debug(CPUX86State *env) --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621451234; cv=none; d=zohomail.com; s=zohoarc; b=YayWBoOGmouygb/cRn9dE++wtfV0vMIbjtjrk9FH8ttRr2ylIQYp4PNQkaWBEaGQc5sCJ+t3BqqLuEE8PlCivprkKCcE0ve2fP1C92puzYVnkXAlwzg2aVy2tX1dZSc3347dj3Z3wJ4sLqBG1ky9fEnmu1dTTI1dlEPDn0VWITU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621451234; h=Content-Transfer-Encoding:Cc: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=klTWXaUSPDXpDuYjtqmoOjms0PHU2tWWOTJOUfsWPG4=; b=HMQpSn+tsf7KkdP7LykdFbeCvsuPXxOvm+j5Q8tD7a4EsCACDRMGQwAnNlmXNO3+KyzFvLAB3fv3u6RjRpEHLAhvnqoJzaOjUjh1Sma6/9fB5AsBbqbSyWA4NzXl1QSR5dTIpdAyg83mur+llZVBteqdW3e+LRdZ+QdLsEkh3ZA= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621451234656895.6152987412432; Wed, 19 May 2021 12:07:14 -0700 (PDT) Received: from localhost ([::1]:59082 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRXF-0002Y2-H6 for importer@patchew.org; Wed, 19 May 2021 15:07:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53148) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1h-0002o2-7x for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:37 -0400 Received: from mail-oi1-x235.google.com ([2607:f8b0:4864:20::235]:46811) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1e-0007Od-VV for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:36 -0400 Received: by mail-oi1-x235.google.com with SMTP id x15so13967791oic.13 for ; Wed, 19 May 2021 11:34:34 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=klTWXaUSPDXpDuYjtqmoOjms0PHU2tWWOTJOUfsWPG4=; b=g6tMDS5KMFejpwHK5Q5lFtH2qaJ8iBDdCKwRP0hoQ6hs4cUOGgHu2M9qGuN/0DF0xE lwg7z8jqQix7omXfaQr3OGfbIXlyRhqJEoiTBWyPHFDqC1T3uhCTXtwRoY2ZePJ7dH+t 2BeMZ+1wfUJznLWzS5VCyb8kwNLEeingjN+lPoAiMSXlIJ635nLG2xDiQPIRdRPXTB8o kLTeEIKueUm9X0hEIOSzzwD5J5LLFBOtaJ/BhTFJir6a2y7k+602Nj+gI8GRZ8oRlB8h SHfwUDbQAZxl+24G74hmJFvtFETD/4rvfqKk7sHn/byLbV1CnZELZfof6JmWzHnoQuSf 2v/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=klTWXaUSPDXpDuYjtqmoOjms0PHU2tWWOTJOUfsWPG4=; b=DzRlYQueJ22s3F1y+vYMaR/KcQtnN/NQ00kcF5sPmxOEns44r/50oq5ok8hwOK1QaB zPmIvjWCpHguoLcfDJpOdy2X5cSFlUsSRPz3Vmdn2hpBJkLNIuAxjghYtgeH7S5qW3qL bOJkmHvyXmFg5aQMOXSY8xQNEoyEk8NpT84q3pr9lmDo18Ajp38YJUC4ttcs6+L9h6jI /w3ZQ28pM1AIxr3Fr/XRcZqCqgG8/fM4lT9+QdLF3vnk+I1szNRcqsVjeC/slP8JIip6 ny0gvHPKRcLebHQgUvDO5CqFTuo5uBSPbLINsM4l8H3sC5d69ELfOahwvWnHT1yNurKQ TCrA== X-Gm-Message-State: AOAM532YiU8XR4pSzXb9M6zO9P2ZjgiN6If7USevkbLEGWM0lfM/NtZL YOkJtbapfE344owoed+XycjfiLAylLP9Fh8c X-Google-Smtp-Source: ABdhPJybfPRFCXeawAQf6vkvjlzMsy7xNeO3z7DCgtRqG4tOe98Sy/xWgz5+f57+v4JkW1mCLEjxQg== X-Received: by 2002:aca:5c04:: with SMTP id q4mr394929oib.11.1621449273688; Wed, 19 May 2021 11:34:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 41/50] target/i386: Move invlpg, hlt, monitor, mwait to sysemu Date: Wed, 19 May 2021 13:30:41 -0500 Message-Id: <20210519183050.875453-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::235; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x235.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" These instructions are all privileged. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-42-richard.henderson@linaro.org> --- target/i386/helper.h | 8 ++-- target/i386/tcg/helper-tcg.h | 1 + target/i386/tcg/misc_helper.c | 55 +--------------------------- target/i386/tcg/sysemu/misc_helper.c | 53 +++++++++++++++++++++++++++ target/i386/tcg/translate.c | 4 ++ 5 files changed, 63 insertions(+), 58 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index ebfaca66dd..ab72eba52a 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -51,7 +51,6 @@ DEF_HELPER_FLAGS_3(set_dr, TCG_CALL_NO_WG, void, env, int= , tl) #endif /* !CONFIG_USER_ONLY */ =20 DEF_HELPER_FLAGS_2(get_dr, TCG_CALL_NO_WG, tl, env, int) -DEF_HELPER_2(invlpg, void, env, tl) =20 DEF_HELPER_1(sysenter, void, env) DEF_HELPER_2(sysexit, void, env, int) @@ -59,9 +58,6 @@ DEF_HELPER_2(sysexit, void, env, int) DEF_HELPER_2(syscall, void, env, int) DEF_HELPER_2(sysret, void, env, int) #endif -DEF_HELPER_FLAGS_2(hlt, TCG_CALL_NO_WG, noreturn, env, int) -DEF_HELPER_FLAGS_2(monitor, TCG_CALL_NO_WG, void, env, tl) -DEF_HELPER_FLAGS_2(mwait, TCG_CALL_NO_WG, noreturn, env, int) DEF_HELPER_FLAGS_2(pause, TCG_CALL_NO_WG, noreturn, env, int) DEF_HELPER_FLAGS_1(debug, TCG_CALL_NO_WG, noreturn, env) DEF_HELPER_1(reset_rf, void, env) @@ -115,6 +111,10 @@ DEF_HELPER_2(vmsave, void, env, int) DEF_HELPER_1(stgi, void, env) DEF_HELPER_1(clgi, void, env) DEF_HELPER_2(invlpga, void, env, int) +DEF_HELPER_2(invlpg, void, env, tl) +DEF_HELPER_FLAGS_2(hlt, TCG_CALL_NO_WG, noreturn, env, int) +DEF_HELPER_FLAGS_2(monitor, TCG_CALL_NO_WG, void, env, tl) +DEF_HELPER_FLAGS_2(mwait, TCG_CALL_NO_WG, noreturn, env, int) #endif /* !CONFIG_USER_ONLY */ =20 /* x86 FPU */ diff --git a/target/i386/tcg/helper-tcg.h b/target/i386/tcg/helper-tcg.h index 85a8b0ebd6..2510cc244e 100644 --- a/target/i386/tcg/helper-tcg.h +++ b/target/i386/tcg/helper-tcg.h @@ -76,6 +76,7 @@ extern const uint8_t parity_table[256]; =20 /* misc_helper.c */ void cpu_load_eflags(CPUX86State *env, int eflags, int update_mask); +void do_pause(CPUX86State *env) QEMU_NORETURN; =20 /* sysemu/svm_helper.c */ #ifndef CONFIG_USER_ONLY diff --git a/target/i386/tcg/misc_helper.c b/target/i386/tcg/misc_helper.c index 23287b330e..baffa5d7ba 100644 --- a/target/i386/tcg/misc_helper.c +++ b/target/i386/tcg/misc_helper.c @@ -60,14 +60,6 @@ void helper_cpuid(CPUX86State *env) env->regs[R_EDX] =3D edx; } =20 -void helper_invlpg(CPUX86State *env, target_ulong addr) -{ - X86CPU *cpu =3D env_archcpu(env); - - cpu_svm_check_intercept_param(env, SVM_EXIT_INVLPG, 0, GETPC()); - tlb_flush_page(CPU(cpu), addr); -} - void helper_rdtsc(CPUX86State *env) { uint64_t val; @@ -101,7 +93,7 @@ void QEMU_NORETURN helper_rdpmc(CPUX86State *env) raise_exception_err(env, EXCP06_ILLOP, 0); } =20 -static void QEMU_NORETURN do_pause(CPUX86State *env) +void QEMU_NORETURN do_pause(CPUX86State *env) { CPUState *cs =3D env_cpu(env); =20 @@ -110,51 +102,6 @@ static void QEMU_NORETURN do_pause(CPUX86State *env) cpu_loop_exit(cs); } =20 -static void QEMU_NORETURN do_hlt(CPUX86State *env) -{ - CPUState *cs =3D env_cpu(env); - - env->hflags &=3D ~HF_INHIBIT_IRQ_MASK; /* needed if sti is just before= */ - cs->halted =3D 1; - cs->exception_index =3D EXCP_HLT; - cpu_loop_exit(cs); -} - -void QEMU_NORETURN helper_hlt(CPUX86State *env, int next_eip_addend) -{ - cpu_svm_check_intercept_param(env, SVM_EXIT_HLT, 0, GETPC()); - env->eip +=3D next_eip_addend; - - do_hlt(env); -} - -void helper_monitor(CPUX86State *env, target_ulong ptr) -{ - if ((uint32_t)env->regs[R_ECX] !=3D 0) { - raise_exception_ra(env, EXCP0D_GPF, GETPC()); - } - /* XXX: store address? */ - cpu_svm_check_intercept_param(env, SVM_EXIT_MONITOR, 0, GETPC()); -} - -void QEMU_NORETURN helper_mwait(CPUX86State *env, int next_eip_addend) -{ - CPUState *cs =3D env_cpu(env); - - if ((uint32_t)env->regs[R_ECX] !=3D 0) { - raise_exception_ra(env, EXCP0D_GPF, GETPC()); - } - cpu_svm_check_intercept_param(env, SVM_EXIT_MWAIT, 0, GETPC()); - env->eip +=3D next_eip_addend; - - /* XXX: not complete but not completely erroneous */ - if (cs->cpu_index !=3D 0 || CPU_NEXT(cs) !=3D NULL) { - do_pause(env); - } else { - do_hlt(env); - } -} - void QEMU_NORETURN helper_pause(CPUX86State *env, int next_eip_addend) { cpu_svm_check_intercept_param(env, SVM_EXIT_PAUSE, 0, GETPC()); diff --git a/target/i386/tcg/sysemu/misc_helper.c b/target/i386/tcg/sysemu/= misc_helper.c index c7381ef7e8..803c39e2fb 100644 --- a/target/i386/tcg/sysemu/misc_helper.c +++ b/target/i386/tcg/sysemu/misc_helper.c @@ -438,3 +438,56 @@ void helper_rdmsr(CPUX86State *env) env->regs[R_EAX] =3D (uint32_t)(val); env->regs[R_EDX] =3D (uint32_t)(val >> 32); } + +void helper_invlpg(CPUX86State *env, target_ulong addr) +{ + X86CPU *cpu =3D env_archcpu(env); + + cpu_svm_check_intercept_param(env, SVM_EXIT_INVLPG, 0, GETPC()); + tlb_flush_page(CPU(cpu), addr); +} + +static void QEMU_NORETURN do_hlt(CPUX86State *env) +{ + CPUState *cs =3D env_cpu(env); + + env->hflags &=3D ~HF_INHIBIT_IRQ_MASK; /* needed if sti is just before= */ + cs->halted =3D 1; + cs->exception_index =3D EXCP_HLT; + cpu_loop_exit(cs); +} + +void QEMU_NORETURN helper_hlt(CPUX86State *env, int next_eip_addend) +{ + cpu_svm_check_intercept_param(env, SVM_EXIT_HLT, 0, GETPC()); + env->eip +=3D next_eip_addend; + + do_hlt(env); +} + +void helper_monitor(CPUX86State *env, target_ulong ptr) +{ + if ((uint32_t)env->regs[R_ECX] !=3D 0) { + raise_exception_ra(env, EXCP0D_GPF, GETPC()); + } + /* XXX: store address? */ + cpu_svm_check_intercept_param(env, SVM_EXIT_MONITOR, 0, GETPC()); +} + +void QEMU_NORETURN helper_mwait(CPUX86State *env, int next_eip_addend) +{ + CPUState *cs =3D env_cpu(env); + + if ((uint32_t)env->regs[R_ECX] !=3D 0) { + raise_exception_ra(env, EXCP0D_GPF, GETPC()); + } + cpu_svm_check_intercept_param(env, SVM_EXIT_MWAIT, 0, GETPC()); + env->eip +=3D next_eip_addend; + + /* XXX: not complete but not completely erroneous */ + if (cs->cpu_index !=3D 0 || CPU_NEXT(cs) !=3D NULL) { + do_pause(env); + } else { + do_hlt(env); + } +} diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 14a44a00ca..39af147a87 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -194,7 +194,11 @@ typedef struct DisasContext { =20 #ifdef CONFIG_USER_ONLY STUB_HELPER(clgi, TCGv_env env) +STUB_HELPER(hlt, TCGv_env env, TCGv_i32 pc_ofs) STUB_HELPER(invlpga, TCGv_env env, TCGv_i32 aflag) +STUB_HELPER(invlpg, TCGv_env env, TCGv addr) +STUB_HELPER(monitor, TCGv_env env, TCGv addr) +STUB_HELPER(mwait, TCGv_env env, TCGv_i32 pc_ofs) STUB_HELPER(set_dr, TCGv_env env, TCGv_i32 reg, TCGv val) STUB_HELPER(stgi, TCGv_env env) STUB_HELPER(svm_check_intercept, TCGv_env env, TCGv_i32 type) --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621451205; cv=none; d=zohomail.com; s=zohoarc; b=T3pZj0+TW7a7alawR5KROBycjPtlJ04n0FsxgWSbJrXMf9R2tdMpPrzqKwETtPW97HPuNLk78f/1c21a9MOILWFuDCbwkzVoLCkVCa/49N+BMCn200fLXchMAB6s1FNz1qZ8G9KzOoa7jQ8vZhux+cSPbt5fpktSntmo6El+hJY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621451205; h=Content-Transfer-Encoding:Cc: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=qedixzyYh5iaufNZBAKxPaR/qjTosX24RNXw6yX0DSU=; b=ewIWdeSIsUTCIcj3Ghf9C11yzAz/64VJsMyN66gZjKW06nZNa6ZWGtfcsNTDzsEO6f0fD6p3VogBMx2ngX9ArEzrkUPRkyeOUfmeISZqebhDNyEqrj4lz+p2yA3HfVuHfYd0dYVQ779wj6ilcZx6Ya/roHXvEvGq2iqQEVkdVfs= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621451205216928.5554584629324; Wed, 19 May 2021 12:06:45 -0700 (PDT) Received: from localhost ([::1]:57542 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRWm-0001Wz-61 for importer@patchew.org; Wed, 19 May 2021 15:06:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53170) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1i-0002rA-0L for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:38 -0400 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]:42771) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1f-0007P1-Vm for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:37 -0400 Received: by mail-ot1-x336.google.com with SMTP id g7-20020a9d12870000b0290328b1342b73so4784928otg.9 for ; Wed, 19 May 2021 11:34:35 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qedixzyYh5iaufNZBAKxPaR/qjTosX24RNXw6yX0DSU=; b=KQ9ITebUGUh4+9o4JBgxns0Q5NIWXY6FwRHGSNy0ggkeASd5R3NxAPpLG0rVcJHtJH iPRu7VEgL5AXT3KZZ4aubUBe+SfCbo/l3lfBTIal1C2tXldulUqAAF3IQgIPONdOuD1C XewMf6/1u4yk5m/i6tp7FnYk7zdJF2SojwU0w2tvhzS7M7rKE5cHjT1MEbT/WIaOc5Oq z7Vm2ipUaWKtySv58AvoYwA0cxIhC5NS+6BEK1GJ/oP2XOd2l3KZHNr1FBNDu4AmjD0O rK/wyxpSzlr/d3UpGKT7tEPhHv07mTp029HQrY8EA+YHDeHoaf+lNwWI/htNfHB1mPVN 5PWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qedixzyYh5iaufNZBAKxPaR/qjTosX24RNXw6yX0DSU=; b=bZVqyEIvSULlQ7eJ8DmQ9Yf39CaxbQt7iCFK462IJMCS+qw4lgQlkK00nrWfh5dgGL oH5m3rSQXvXY0yKsMKuxJXNdZvzn0+SItSX56WIhxdVBoHLr3VmfkCwKy+YzFbJlyDKm I6kXNKX/5zWQLhiCR3zZQe/RIl9+trpnwLwKc++FThn4tTAGBv095Bu4vBtKUw9oGzif W4TAz8tSLYsAbgCxhHVz5addXqD1sPEQY2Yxb6hKy1N2D36X5pkf+6jdfknRFyu/H87S 4UZw9Cm/j98pi25NjI3Ne8jlcUpcwfaR9SMkNkqZXEN4uootbsNVdu3yQGbGb09sQOQO HnwA== X-Gm-Message-State: AOAM530f7+CBD4f6wasgS0Hk0KT22KYnPgJzi4lVubwrejBawiWQAOIk EjFC7jTrQUtgj4bHb72PvDOu6jfASqfwdSqd X-Google-Smtp-Source: ABdhPJw35eVhnA4vOmBue4peTRwLcSr+gOnLLx7aiFLWE/eN0Va86tUJIg4KFobXT4+MYoqd8jTWtw== X-Received: by 2002:a9d:1918:: with SMTP id j24mr619519ota.329.1621449274636; Wed, 19 May 2021 11:34:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 42/50] target/i386: Unify invlpg, invlpga Date: Wed, 19 May 2021 13:30:42 -0500 Message-Id: <20210519183050.875453-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::336; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x336.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Use a single helper, flush_page, to do the work. Use gen_svm_check_intercept. Perform the zero-extension for invlpga inline. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-43-richard.henderson@linaro.org> --- target/i386/helper.h | 3 +-- target/i386/tcg/sysemu/misc_helper.c | 7 ++----- target/i386/tcg/sysemu/svm_helper.c | 18 ------------------ target/i386/tcg/translate.c | 20 ++++++++++++-------- 4 files changed, 15 insertions(+), 33 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index ab72eba52a..0264fba335 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -110,8 +110,7 @@ DEF_HELPER_2(vmload, void, env, int) DEF_HELPER_2(vmsave, void, env, int) DEF_HELPER_1(stgi, void, env) DEF_HELPER_1(clgi, void, env) -DEF_HELPER_2(invlpga, void, env, int) -DEF_HELPER_2(invlpg, void, env, tl) +DEF_HELPER_FLAGS_2(flush_page, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_FLAGS_2(hlt, TCG_CALL_NO_WG, noreturn, env, int) DEF_HELPER_FLAGS_2(monitor, TCG_CALL_NO_WG, void, env, tl) DEF_HELPER_FLAGS_2(mwait, TCG_CALL_NO_WG, noreturn, env, int) diff --git a/target/i386/tcg/sysemu/misc_helper.c b/target/i386/tcg/sysemu/= misc_helper.c index 803c39e2fb..0cef2f1a4c 100644 --- a/target/i386/tcg/sysemu/misc_helper.c +++ b/target/i386/tcg/sysemu/misc_helper.c @@ -439,12 +439,9 @@ void helper_rdmsr(CPUX86State *env) env->regs[R_EDX] =3D (uint32_t)(val >> 32); } =20 -void helper_invlpg(CPUX86State *env, target_ulong addr) +void helper_flush_page(CPUX86State *env, target_ulong addr) { - X86CPU *cpu =3D env_archcpu(env); - - cpu_svm_check_intercept_param(env, SVM_EXIT_INVLPG, 0, GETPC()); - tlb_flush_page(CPU(cpu), addr); + tlb_flush_page(env_cpu(env), addr); } =20 static void QEMU_NORETURN do_hlt(CPUX86State *env) diff --git a/target/i386/tcg/sysemu/svm_helper.c b/target/i386/tcg/sysemu/s= vm_helper.c index b431016e72..9d671297cf 100644 --- a/target/i386/tcg/sysemu/svm_helper.c +++ b/target/i386/tcg/sysemu/svm_helper.c @@ -412,24 +412,6 @@ void helper_clgi(CPUX86State *env) env->hflags2 &=3D ~HF2_GIF_MASK; } =20 -void helper_invlpga(CPUX86State *env, int aflag) -{ - X86CPU *cpu =3D env_archcpu(env); - target_ulong addr; - - cpu_svm_check_intercept_param(env, SVM_EXIT_INVLPGA, 0, GETPC()); - - if (aflag =3D=3D 2) { - addr =3D env->regs[R_EAX]; - } else { - addr =3D (uint32_t)env->regs[R_EAX]; - } - - /* XXX: could use the ASID to see if it is needed to do the - flush */ - tlb_flush_page(CPU(cpu), addr); -} - void cpu_svm_check_intercept_param(CPUX86State *env, uint32_t type, uint64_t param, uintptr_t retaddr) { diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 39af147a87..eb11a75e86 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -194,9 +194,8 @@ typedef struct DisasContext { =20 #ifdef CONFIG_USER_ONLY STUB_HELPER(clgi, TCGv_env env) +STUB_HELPER(flush_page, TCGv_env env, TCGv addr) STUB_HELPER(hlt, TCGv_env env, TCGv_i32 pc_ofs) -STUB_HELPER(invlpga, TCGv_env env, TCGv_i32 aflag) -STUB_HELPER(invlpg, TCGv_env env, TCGv addr) STUB_HELPER(monitor, TCGv_env env, TCGv addr) STUB_HELPER(mwait, TCGv_env env, TCGv_i32 pc_ofs) STUB_HELPER(set_dr, TCGv_env env, TCGv_i32 reg, TCGv val) @@ -7592,9 +7591,15 @@ static target_ulong disas_insn(DisasContext *s, CPUS= tate *cpu) if (!check_cpl0(s)) { break; } - gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); - gen_helper_invlpga(cpu_env, tcg_const_i32(s->aflag - 1)); + gen_svm_check_intercept(s, SVM_EXIT_INVLPGA); + if (s->aflag =3D=3D MO_64) { + tcg_gen_mov_tl(s->A0, cpu_regs[R_EAX]); + } else { + 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_eob(s); break; =20 CASE_MODRM_MEM_OP(2): /* lgdt */ @@ -7682,10 +7687,9 @@ static target_ulong disas_insn(DisasContext *s, CPUS= tate *cpu) if (!check_cpl0(s)) { break; } - gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_svm_check_intercept(s, SVM_EXIT_INVLPG); gen_lea_modrm(env, s, modrm); - gen_helper_invlpg(cpu_env, s->A0); + gen_helper_flush_page(cpu_env, s->A0); gen_jmp_im(s, s->pc - s->cs_base); gen_eob(s); break; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450349; cv=none; d=zohomail.com; s=zohoarc; b=TpJdQPket3xUBynqqrX64RlscHh2TEBOnXDsesgRfoDB8fXOsEvvHsVLbGCkrFD9cV8ff6dRIULEX8L8KjRP9rCj+Z3J1GTpBHnRYs9EwFUUfrGWuPjKw/XYZNf4wJnoHqRxSTtFKjf73Vxiph/jBBNuvzLbL3q/4ATWqNOVKuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450349; h=Content-Transfer-Encoding:Cc: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=NyRgc+Gn7oqqf/QHFgizxweLPsqaDiM3F1V+G4Xmf04=; b=ImhZr2gYdgqVVUPtASqSP6cAdARjBOMrwRC2UjabOMV+oYXzBirhG+Dbe2ttOuTzsB47d7OYnAHmE7mOQeJ6JJgZ0PGWEfWgUP9i2SFiNN/Lix649hKcbZq75fSRlkgg0Dsd7UPjfZAxzK2DTnXI3b4n0nFQm/Sy6MhhvJvyvUY= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162145034990048.58237603898067; Wed, 19 May 2021 11:52:29 -0700 (PDT) Received: from localhost ([::1]:40208 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRIy-0004gN-SM for importer@patchew.org; Wed, 19 May 2021 14:52:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53220) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1j-0002ux-1F for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:39 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]:33326) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1g-0007Py-Md for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:38 -0400 Received: by mail-ot1-x334.google.com with SMTP id i23-20020a9d68d70000b02902dc19ed4c15so12670527oto.0 for ; Wed, 19 May 2021 11:34:36 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NyRgc+Gn7oqqf/QHFgizxweLPsqaDiM3F1V+G4Xmf04=; b=hZnP/N1Dt2eLr/hb2J5uhosXENVCy+o6S3b2z3hByRkbVu6ucDwLyyCZjrJmOGYHgY fIa7Q6IkoiEBF34HqgFzfWFTIMH8jiW755uj8eEccO8DMM/PzZ61p2guHKqtzuVg2vXH OsdZ+VMz9UhiCocKLjPhrwVx0MRp6xz0cyDPSGYYu/JU/GKIjMmLEmGoThXfrNC/K/lD kaZ4FOoTMlnKtm2cX/ktPNOuDUHCKvCjka2EBCL6Vra0Dr5C16Ydtl+xKSO5HCOeiPqf IdXP5p4RK+yEsaRdLXV5XYY3Z4sWpt6DoHsT/oU0WBLO1ZCzX83v02vGXpOUY9CB63no L9LA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NyRgc+Gn7oqqf/QHFgizxweLPsqaDiM3F1V+G4Xmf04=; b=AT7KDF2b2Hh1NKl75lWkQMCBfrQ17Hd95ymLcblUJw/qWlcxlxrSAX9VCYHFIJdd8f BiIW0UzYOAOMukQM/wa9XNcPTYMS2sgFet+dMK4e8c8olHIqngV1QYu9uzW7F2vOLbaB hpNEHv2OkA3dG8Biapg4pcK5TECypKKoOBOD0QGbGZh8blJFSzyiiVo0E8+D0huVoTdv ijFXdXq3GpDhyNSmVtoEBLeYYc2/gSRTEoSoyXlR7xD95sKGMYJNCLCUGW3QkABi4kY4 9bh4bohZnpNdi2qHPANFxtvl+QkjsoJD2Gv9rD+wqcY57oTcZsVc5kyFoejdZDvHUHdn pt2g== X-Gm-Message-State: AOAM531Ww8r9V+UaP1jCr3EauZwYGd8Rc2E8/GkGAVRR0zjqfXc5Iz5g UvDyA1OTioyAxraTb+Cm+tmipRkIjSIIPPCw X-Google-Smtp-Source: ABdhPJyeppZGyk+MZlGE+L1q/C4vshRdSv1o2W5Hs/XRYIyQUhHPlNOujY1dKvtTAINUm+yYZ4nVXQ== X-Received: by 2002:a9d:5c08:: with SMTP id o8mr651089otk.261.1621449275543; Wed, 19 May 2021 11:34:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 43/50] target/i386: Inline user cpu_svm_check_intercept_param Date: Wed, 19 May 2021 13:30:43 -0500 Message-Id: <20210519183050.875453-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x334.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" The user-version is a no-op. This lets us completely remove tcg/user/svm_stubs.c. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-44-richard.henderson@linaro.org> --- target/i386/cpu.h | 8 ++++++++ target/i386/tcg/user/svm_stubs.c | 28 ---------------------------- target/i386/tcg/user/meson.build | 1 - 3 files changed, 8 insertions(+), 29 deletions(-) delete mode 100644 target/i386/tcg/user/svm_stubs.c diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 324ef92beb..e6836393f7 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -2146,8 +2146,16 @@ static inline void cpu_set_fpuc(CPUX86State *env, ui= nt16_t fpuc) void helper_lock_init(void); =20 /* svm_helper.c */ +#ifdef CONFIG_USER_ONLY +static inline void +cpu_svm_check_intercept_param(CPUX86State *env1, uint32_t type, + uint64_t param, uintptr_t retaddr) +{ /* no-op */ } +#else void cpu_svm_check_intercept_param(CPUX86State *env1, uint32_t type, uint64_t param, uintptr_t retaddr); +#endif + /* apic.c */ void cpu_report_tpr_access(CPUX86State *env, TPRAccess access); void apic_handle_tpr_access_report(DeviceState *d, target_ulong ip, diff --git a/target/i386/tcg/user/svm_stubs.c b/target/i386/tcg/user/svm_st= ubs.c deleted file mode 100644 index db818f89a8..0000000000 --- a/target/i386/tcg/user/svm_stubs.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - * x86 SVM helpers (user-mode) - * - * Copyright (c) 2003 Fabrice Bellard - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see . - */ - -#include "qemu/osdep.h" -#include "cpu.h" -#include "exec/helper-proto.h" -#include "tcg/helper-tcg.h" - -void cpu_svm_check_intercept_param(CPUX86State *env, uint32_t type, - uint64_t param, uintptr_t retaddr) -{ -} diff --git a/target/i386/tcg/user/meson.build b/target/i386/tcg/user/meson.= build index 9eac0e69ca..3555b15bdd 100644 --- a/target/i386/tcg/user/meson.build +++ b/target/i386/tcg/user/meson.build @@ -1,6 +1,5 @@ i386_user_ss.add(when: ['CONFIG_TCG', 'CONFIG_USER_ONLY'], if_true: files( 'excp_helper.c', 'misc_stubs.c', - 'svm_stubs.c', 'seg_helper.c', )) --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450731; cv=none; d=zohomail.com; s=zohoarc; b=fAJNwL3PenH61zM1VWrmO05NtVHbPcmhUsjrl199mqEoKt+fpWs0PKsn3sRokP8CCM1y0fSNbmYWSkiuRsNtqa43mOKV4wYraTgkjH92OvW77uVgzIQTU1Fe30GAES5N1GWy2p/mzqqmoP6pwleYBnuFoa/Z1OQ38Xu1Zxa2AK0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450731; h=Content-Transfer-Encoding:Cc: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=5FZEkPjS4wJtxJ82VN/fE6regNmzsPr0FO89DJYk2Ek=; b=hy4m4zkSVTtQAeSbdKcrp0h5KP5LW5i0+nGZN9rWRqwcbMwoEXMApuByN/D7epGqou8ETpzA/Pkvu1sp5nE6CfYg5uAw5YdFXQaIDRSD4qUyi/F58MZaWjcmWfXikdMObTYd809DnBGyTxkXR1LOh+DX8zj9jUz/UFO5QTWitwo= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450731469576.3139135755534; Wed, 19 May 2021 11:58:51 -0700 (PDT) Received: from localhost ([::1]:39210 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRP8-0005yz-AD for importer@patchew.org; Wed, 19 May 2021 14:58:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53310) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1m-000340-HU for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:42 -0400 Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]:35698) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1h-0007Qk-Hp for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:42 -0400 Received: by mail-ot1-x329.google.com with SMTP id 69-20020a9d0a4b0000b02902ed42f141e1so12625301otg.2 for ; Wed, 19 May 2021 11:34:37 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5FZEkPjS4wJtxJ82VN/fE6regNmzsPr0FO89DJYk2Ek=; b=DM32tm/9glhf1FkBdEJiHNAfhe4OHqcDeKdIJeJl+TDAJl0aHqH2+hTlTNvLOy+db2 rwEZywZxmFybont52Y5DQy/yputet4q4vWFWO4ZEZatRpKyQ4MQCGEM1hVjD82tW5pzX eNAFBbTq3p0HwN86Hrj1QrZDR+/IuKfs4S3cZvQuvA4UOanX4zvPFTNAfpjTWtWrkf1S 3Q4tYxQ0PKzQoc/2C3fHHBVg++MNX27Q8cRoV5SKz8ndD9GZ244mUrvCOJk7NAZuiXUU QWcrzzoWizksrqfNBBMBwjXawLyLJSchcRs9FXlmPZZFI/dumUelFCDF2FDZ4m2yBjdd 2TlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5FZEkPjS4wJtxJ82VN/fE6regNmzsPr0FO89DJYk2Ek=; b=Bc2yCk4EA5aRItC2GWgVHp8tpkTBjj12BhZoOIvJgS+ihGpvywcd7dJtA7tbJE/nwm NOrRYczq05uBh2WA1CdEJNX0MjsjbadtIt5To660xw7VPAI99WYlMStqjHlC350AYzlz n5nKdBPG91ZBuqngkm0emZHXiRgtudnL9cA4XzDAICYUTry8BYCQ8U+wplF8VmfMRYEa Wb78ri6vWLsCh9cR8mGJ0oib7SfL9Fyww7UPXa+yhCHFE0knjGlwubPXRJ3X3p52vTVq yjJpB8dW/Wn1K4RjFPyur71hAARvZU09w1P8xdLuBMzKeyrI3SuLWB7jTIY8vtsQKmuE iK3Q== X-Gm-Message-State: AOAM530ghkhEhmXfbDFyxwLbb7b64FGl1V3igr4X6TIJO+gY/4NoB2yT txCco/AJJQZUSlkOEzH9UPayFLwB0EKYhRpj X-Google-Smtp-Source: ABdhPJzyfyKv/fN8CEmhXRcJXl3BbWe41kHG0CrMdgjYeR9aNfyvq21RPgR1qD30WBW8zG5tqLhDdw== X-Received: by 2002:a05:6830:1388:: with SMTP id d8mr659926otq.53.1621449276484; Wed, 19 May 2021 11:34:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 44/50] target/i386: Eliminate user stubs for read/write_crN, rd/wrmsr Date: Wed, 19 May 2021 13:30:44 -0500 Message-Id: <20210519183050.875453-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::329; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x329.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-45-richard.henderson@linaro.org> --- target/i386/helper.h | 8 ++++---- target/i386/tcg/translate.c | 4 ++++ target/i386/tcg/user/misc_stubs.c | 20 -------------------- 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index 0264fba335..1d85f033df 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -42,8 +42,6 @@ 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) DEF_HELPER_3(lret_protected, void, env, int, int) -DEF_HELPER_FLAGS_2(read_crN, TCG_CALL_NO_RWG, tl, env, int) -DEF_HELPER_FLAGS_3(write_crN, TCG_CALL_NO_RWG, void, env, int, tl) DEF_HELPER_1(clts, void, env) =20 #ifndef CONFIG_USER_ONLY @@ -87,8 +85,6 @@ DEF_HELPER_1(cpuid, void, env) DEF_HELPER_1(rdtsc, void, env) DEF_HELPER_1(rdtscp, void, env) DEF_HELPER_FLAGS_1(rdpmc, TCG_CALL_NO_WG, noreturn, env) -DEF_HELPER_1(rdmsr, void, env) -DEF_HELPER_1(wrmsr, void, env) =20 DEF_HELPER_2(check_iob, void, env, i32) DEF_HELPER_2(check_iow, void, env, i32) @@ -114,6 +110,10 @@ DEF_HELPER_FLAGS_2(flush_page, TCG_CALL_NO_RWG, void, = env, tl) DEF_HELPER_FLAGS_2(hlt, TCG_CALL_NO_WG, noreturn, env, int) DEF_HELPER_FLAGS_2(monitor, TCG_CALL_NO_WG, void, env, tl) DEF_HELPER_FLAGS_2(mwait, TCG_CALL_NO_WG, noreturn, env, int) +DEF_HELPER_1(rdmsr, void, env) +DEF_HELPER_1(wrmsr, void, env) +DEF_HELPER_FLAGS_2(read_crN, TCG_CALL_NO_RWG, tl, env, int) +DEF_HELPER_FLAGS_3(write_crN, TCG_CALL_NO_RWG, void, env, int, tl) #endif /* !CONFIG_USER_ONLY */ =20 /* x86 FPU */ diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index eb11a75e86..9501089861 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -198,6 +198,8 @@ STUB_HELPER(flush_page, TCGv_env env, TCGv addr) STUB_HELPER(hlt, TCGv_env env, TCGv_i32 pc_ofs) STUB_HELPER(monitor, TCGv_env env, TCGv addr) STUB_HELPER(mwait, TCGv_env env, TCGv_i32 pc_ofs) +STUB_HELPER(rdmsr, TCGv_env env) +STUB_HELPER(read_crN, TCGv ret, TCGv_env env, TCGv_i32 reg) STUB_HELPER(set_dr, TCGv_env env, TCGv_i32 reg, TCGv val) STUB_HELPER(stgi, TCGv_env env) STUB_HELPER(svm_check_intercept, TCGv_env env, TCGv_i32 type) @@ -206,6 +208,8 @@ STUB_HELPER(vmload, TCGv_env env, TCGv_i32 aflag) STUB_HELPER(vmmcall, TCGv_env env) STUB_HELPER(vmrun, TCGv_env env, TCGv_i32 aflag, TCGv_i32 pc_ofs) STUB_HELPER(vmsave, TCGv_env env, TCGv_i32 aflag) +STUB_HELPER(write_crN, TCGv_env env, TCGv_i32 reg, TCGv val) +STUB_HELPER(wrmsr, TCGv_env env) #endif =20 static void gen_eob(DisasContext *s); diff --git a/target/i386/tcg/user/misc_stubs.c b/target/i386/tcg/user/misc_= stubs.c index 84df4e65ff..df38b44d6e 100644 --- a/target/i386/tcg/user/misc_stubs.c +++ b/target/i386/tcg/user/misc_stubs.c @@ -53,23 +53,3 @@ target_ulong helper_inl(CPUX86State *env, uint32_t port) g_assert_not_reached(); return 0; } - -target_ulong helper_read_crN(CPUX86State *env, int reg) -{ - g_assert_not_reached(); -} - -void helper_write_crN(CPUX86State *env, int reg, target_ulong t0) -{ - g_assert_not_reached(); -} - -void helper_wrmsr(CPUX86State *env) -{ - g_assert_not_reached(); -} - -void helper_rdmsr(CPUX86State *env) -{ - g_assert_not_reached(); -} --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621451341; cv=none; d=zohomail.com; s=zohoarc; b=cgmasxKKoGIOuU9ObqfOpOm96iKSsQrMyLD+JeBPicqremyXWLk9jlULfcB917PioB8O9eeX7qo0mFcDP3ObW8lkJtpEY2IIGTfeDySF/1oFeawC8cbJ4rehXyON8XyfOK3jrLDUreSYtIkaUfMHPS6/9rsgJ4lDprKlXmYZRYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621451341; h=Content-Transfer-Encoding:Cc: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=EuZn+pX4L8/1GsX4Y2iVsbbPTiTW2IOoX08dYPiqnSg=; b=XGhB76DO86r/zTzFX3nbSuQ+rImjTSxTbptILLrpzGaPaU7v4MakP2Rik5HiFsqspvos4DrTpRruLRPAdS18A4yjxdl1DAXXikMfqMo+D6PYcNNmNemEbQOIcBJUTaxNlNQmAghartMfi6H8V5hyu92sxjUSFFuiUDVwLDHCi6c= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621451341680150.20252407467967; Wed, 19 May 2021 12:09:01 -0700 (PDT) Received: from localhost ([::1]:36866 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRYy-0006XK-MH for importer@patchew.org; Wed, 19 May 2021 15:09:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53282) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1l-000313-CY for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:41 -0400 Received: from mail-oo1-xc2a.google.com ([2607:f8b0:4864:20::c2a]:40456) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1i-0007R9-KB for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:41 -0400 Received: by mail-oo1-xc2a.google.com with SMTP id j26-20020a4adf5a0000b029020eac899f76so1436997oou.7 for ; Wed, 19 May 2021 11:34:38 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EuZn+pX4L8/1GsX4Y2iVsbbPTiTW2IOoX08dYPiqnSg=; b=boPUwZtU51qkXfTX/M8wXnEORo2Qg39XWkht8gVV2rvzmhDBaDEmqKOrcVNRq5wqKT HmY7174f5aGAYW747Ov6Q3z55gaO1/Z+ffs+bvt+oJFkxa+6dlmJeto82VduNHWclPbW 5ZcP5g5urKRp7mtlGuulzG4dYJMzs/Vao3TC6DvNkawop3oBFnhVfnhsr8LfhfUMKfgh xxYAjKDaSl6T4DWs/gdFM42ZMwraUUP6dWH/T5Ge8mZyF/JSGnPZ9nDQwfpGfBPl2hH3 VcIFMY0FVfqAqlfHHtPunCjfaG6Jx2quI9Zr/pN2xSbiog5V86C8u1YmKrEKt376v/aU k6cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EuZn+pX4L8/1GsX4Y2iVsbbPTiTW2IOoX08dYPiqnSg=; b=OKrZl9oezNeYfK2X6S/3Kbu8yZyko8EJ3velnqafujl5k2LSGYiqg0m0dAai5D7/5g /wMmg9VJA4KtQATf6eUJ9/M6g3DxiHt7xtVgvNhCr0tOP5agnYEIGAKUU+VfT5ZzdbOk aVH4QhH3JYwglic0aakNk2XihN+JIjw5W4o5Sd9T1v8eiiXdl2lEnhzn5DyNicdjj0RK Sp4BtuoUjxox4d4GoujQ/R1TgP2DmoK+pbrdlN+JSeZyOPDUqBDQXhQk2iCoh70CRAwv u+lOiMQJ2VLavW2srywgOYxe1hccvmWX1vkZ09weLMvSLFhmv8wg9Bj81pIwwQ2XVY33 wrlA== X-Gm-Message-State: AOAM531xk2QUZLyGWwRW1apANAvQb3aYJNgJUQv8/kRMFnyoQWC0tV9d P6yf6oHoK/a31g87hr6Ef41b+m5GmyOmySD+ X-Google-Smtp-Source: ABdhPJwuJpTVc8ZVdO4iMtL57kYbiy/nkZqFXIG9pXycu/PTRyIwsWNu3Pcy8TWSU8HtVgGjqDBS9w== X-Received: by 2002:a4a:dc4e:: with SMTP id q14mr551120oov.43.1621449277511; Wed, 19 May 2021 11:34:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 45/50] target/i386: Exit tb after wrmsr Date: Wed, 19 May 2021 13:30:45 -0500 Message-Id: <20210519183050.875453-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::c2a; envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc2a.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 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-stable@nongnu.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" At minimum, wrmsr can change efer, which affects HF_LMA. Cc: qemu-stable@nongnu.org Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-46-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 9501089861..ef0ba822e1 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -7260,6 +7260,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_helper_rdmsr(cpu_env); } else { gen_helper_wrmsr(cpu_env); + gen_jmp_im(s, s->pc - s->cs_base); + gen_eob(s); } } break; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621451534; cv=none; d=zohomail.com; s=zohoarc; b=hAzCgcTHTylI9cIyG1BVXxoAsw5HLXQQXhChd01o6qBZBpozlwK32/ZwK4IBJL9nJUv5UTWmPfEBt42jwQLzgbX0D/UvXxJuzYDaSK/MoYRbMXYIvouDrmhWxJiBgrSyDA6Py2XH6Nvmoh0tWkWcdbVg28fgNbSwuwTeKtv4RxI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621451534; h=Content-Transfer-Encoding:Cc: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=qnZV0wX95VAsWpNoAvBiFixvkFrekitqEJ+f9enV/uM=; b=GM+BuObS/MsNhKkfixBZAIIusTcE1JtG4B0EwlZkXMhyDLBJky2wQnqEs2chtP5MYw9GDu6tnGsTKJmwjxLj/usWbVzO3XdiOqgqMhm23H6dSuFZ1JB935se8tW0A0SPg4PCgUjAOWqbVGtJ/AHKEQjm6ZaJzZZp6EDhfthWDQY= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621451534707692.7009309141325; Wed, 19 May 2021 12:12:14 -0700 (PDT) Received: from localhost ([::1]:48180 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRc3-0005zk-7E for importer@patchew.org; Wed, 19 May 2021 15:12:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53350) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1o-00038s-ND for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:44 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]:37449) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1j-0007S6-Im for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:44 -0400 Received: by mail-ot1-x334.google.com with SMTP id v19-20020a0568301413b0290304f00e3d88so12628720otp.4 for ; Wed, 19 May 2021 11:34:39 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qnZV0wX95VAsWpNoAvBiFixvkFrekitqEJ+f9enV/uM=; b=tzs6fR9HuT5Ot6KIndiOlsq580qc4nj8kZdx4WwfaMk1u0obzIpr5uFCzCqTrmUfgZ /1AMB/5gbL4qcmfT71UL+o8uNor6i26dPgyWEr8gk7kyOyud/K9woHqCDdWba3ie/53V aaPgZi2CcfSMd0gsb2WdnmpLBPpNnHLHnP2GZbAY2AGlLzHGLG2rd1VOrdZ9YM6RunsD o+bEgJ+mEepfFGDnl9qPTrUZ1T7IMyDJeNBvYBBdlXGjDbuC1Z1b+jJT314zWw2kyBQE 8s8+Tp2ByvymprlJOGX8d3OzD89AFdC4UkCGxnjLuhHVwRLDvvD3RHc9X+dxYUpTrLQB ZTRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qnZV0wX95VAsWpNoAvBiFixvkFrekitqEJ+f9enV/uM=; b=nl02A+9xRMZ1LTygK+F/XTdn0JBer7iHAw65NzNKrkg2EfS7Ll70hYW+Oq0WMWWKoJ rnJTH6YjXZaQpQDBDChhMhnsyEw+VZYbB0ZFilcfYeSt3+NvZteoqGC9KhuYrfE0a5O8 NPPqI6a2qVXxcy+s99Ye6T6d+uKGM87PxkyqyuxX5v28BxPUcF5BansBNf2ZrF8cYmBR W5N2IptMJu6EkLIAi7EIM4Vo3OcF1k/1qRfJTs7I6nWsR112x4nberLMfZycHLLX4P8P QnqzHzV+XTXRZXqCWoWOfTpKMrHogRW1zo53VgYixBAZ+0c/ilNdeNqnF1YnfHBLZ9+e WQTA== X-Gm-Message-State: AOAM531X3ju7lxSdiNHql1dBs5BaDPxxQE6NUOVno7fUzDjLnBeLgsIX MaNKiaPHFaYYxfZkYUY259fwUL5MFaBJCPuc X-Google-Smtp-Source: ABdhPJzTSca3sCgJjQ/pkEWghhh0ClTevByhFzdGz1woCib8ChL0SzeGOaU9W1m+H79UikUVtnEDOQ== X-Received: by 2002:a05:6830:33c7:: with SMTP id q7mr666332ott.308.1621449278475; Wed, 19 May 2021 11:34:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 46/50] target/i386: Tidy gen_check_io Date: Wed, 19 May 2021 13:30:46 -0500 Message-Id: <20210519183050.875453-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x334.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Get cur_eip from DisasContext. Do not require the caller to use svm_is_rep; get prefix from DisasContext. Use the proper symbolic constants for SVM_IOIO_*. While we're touching all call sites, return bool in preparation for gen_check_io raising #GP. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-47-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 57 +++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index ef0ba822e1..2282c3598c 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -674,13 +674,10 @@ static void gen_helper_out_func(MemOp ot, TCGv_i32 v,= TCGv_i32 n) } } =20 -static void gen_check_io(DisasContext *s, MemOp ot, target_ulong cur_eip, - uint32_t svm_flags) +static bool gen_check_io(DisasContext *s, MemOp ot, uint32_t svm_flags) { - target_ulong next_eip; - + tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); if (PE(s) && (CPL(s) > IOPL(s) || VM86(s))) { - tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); switch (ot) { case MO_8: gen_helper_check_iob(cpu_env, s->tmp2_i32); @@ -696,15 +693,20 @@ static void gen_check_io(DisasContext *s, MemOp ot, t= arget_ulong cur_eip, } } 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_jmp_im(s, cur_eip); - svm_flags |=3D (1 << (4 + ot)); - next_eip =3D s->pc - s->cs_base; - tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); + if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { + svm_flags |=3D SVM_IOIO_REP_MASK; + } + svm_flags |=3D 1 << (SVM_IOIO_SIZE_SHIFT + ot); gen_helper_svm_check_io(cpu_env, s->tmp2_i32, - tcg_const_i32(svm_flags), - tcg_const_i32(next_eip - cur_eip)); + tcg_constant_i32(svm_flags), + tcg_constant_i32(next_eip - cur_eip)); } + return true; } =20 static inline void gen_movs(DisasContext *s, MemOp ot) @@ -2425,11 +2427,6 @@ static void gen_movl_seg_T0(DisasContext *s, X86Seg = seg_reg) } } =20 -static inline int svm_is_rep(int prefixes) -{ - return ((prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) ? 8 : 0); -} - static void gen_svm_check_intercept(DisasContext *s, uint32_t type) { /* no SVM activated; fast case */ @@ -6483,8 +6480,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x6d: ot =3D mo_b_d32(b, dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - gen_check_io(s, ot, pc_start - s->cs_base,=20 - SVM_IOIO_TYPE_MASK | svm_is_rep(prefixes) | 4); + if (!gen_check_io(s, ot, SVM_IOIO_TYPE_MASK | SVM_IOIO_STR_MASK)) { + break; + } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -6502,8 +6500,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x6f: ot =3D mo_b_d32(b, dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - gen_check_io(s, ot, pc_start - s->cs_base, - svm_is_rep(prefixes) | 4); + if (!gen_check_io(s, ot, SVM_IOIO_STR_MASK)) { + break; + } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -6526,8 +6525,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d32(b, dflag); val =3D x86_ldub_code(env, s); tcg_gen_movi_tl(s->T0, val); - gen_check_io(s, ot, pc_start - s->cs_base, - SVM_IOIO_TYPE_MASK | svm_is_rep(prefixes)); + if (!gen_check_io(s, ot, SVM_IOIO_TYPE_MASK)) { + break; + } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -6544,8 +6544,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d32(b, dflag); val =3D x86_ldub_code(env, s); tcg_gen_movi_tl(s->T0, val); - gen_check_io(s, ot, pc_start - s->cs_base, - svm_is_rep(prefixes)); + if (!gen_check_io(s, ot, 0)) { + break; + } gen_op_mov_v_reg(s, ot, s->T1, R_EAX); =20 if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { @@ -6563,8 +6564,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xed: ot =3D mo_b_d32(b, dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - gen_check_io(s, ot, pc_start - s->cs_base, - SVM_IOIO_TYPE_MASK | svm_is_rep(prefixes)); + if (!gen_check_io(s, ot, SVM_IOIO_TYPE_MASK)) { + break; + } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -6580,8 +6582,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xef: ot =3D mo_b_d32(b, dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - gen_check_io(s, ot, pc_start - s->cs_base, - svm_is_rep(prefixes)); + if (!gen_check_io(s, ot, 0)) { + break; + } gen_op_mov_v_reg(s, ot, s->T1, R_EAX); =20 if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621451392; cv=none; d=zohomail.com; s=zohoarc; b=W3EjIihDpugS4ORIzF0L6tFZHrQgNLXO2C7jpXsxhvAdXDA0RXbJ5317cUiKcQpJEpaUr+9SV5U0q4xs0verOm6lM8ZISznN+BtENhJHRYMn+JT27b7GAD0bANqY2Y4ZnUeO0nqSbpCyCmoNroOsHFraKvTIJUFzAECkyUomMC8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621451392; h=Content-Transfer-Encoding:Cc: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=MRsJOtWLsUiQQv1TYIL+rqHnyRD8cRIptjpT1vVaFRM=; b=X5qllL60rL6Mn2wx6drbUV7JVwyOsiCkqtXguo0IEtiSASBZGSyID/GwwJBz+LvfvGgTyENchezA9z9bONCMrffmS6gaOJWlaPNmTLZWbsyCYNyE+8NzNdddJ/AuTtzO1Hvj8cMMKGJLXwaJdkBCgKvzhaU3jbKKTsTpqpR18ps= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621451392008820.4472689941203; Wed, 19 May 2021 12:09:52 -0700 (PDT) Received: from localhost ([::1]:39546 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRZm-0008Jh-TZ for importer@patchew.org; Wed, 19 May 2021 15:09:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53326) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1n-00036C-9f for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:43 -0400 Received: from mail-ot1-x32b.google.com ([2607:f8b0:4864:20::32b]:46885) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1k-0007UC-EX for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:43 -0400 Received: by mail-ot1-x32b.google.com with SMTP id d3-20020a9d29030000b029027e8019067fso12580135otb.13 for ; Wed, 19 May 2021 11:34:40 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MRsJOtWLsUiQQv1TYIL+rqHnyRD8cRIptjpT1vVaFRM=; b=hfKff/cvZqQyYhkeAIFZYVsS9jheGJ5zUjL9tdJGvRPQxqG8rRivNY0kKdHwYPNlYz eYSmTdUv1p8QPEHn2Pcts69iWr6CloS9aSzk929Ur9MWwKgGZNy6Ufdgrlu27MOFqFoH Uw/K1fOTdaJlhbPYCI4+6STu2Oc81q1lZfv9K2RK8Flr60NTgNs+wXzH5JLLQiaweQUY rtgqEklVjZi8WE10xLfC/MA+HyRsbZzt5CbdIdR52Xb7N7CnRUCEUu4xLqZpw0gLfqRf J4us586YVF39c23yyEscCIW7ipKYfRIZ2arjc77ygYXr1A1Fav7g530NyjQGyDV++MRB Qp6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MRsJOtWLsUiQQv1TYIL+rqHnyRD8cRIptjpT1vVaFRM=; b=YHC1iUdf8c0+nsemfTwBz91j0yW/RrO7tsgL4EpI/2ANtLdi319k5/kFIZdx0LIxK4 X7crFAaxA7EmUWPBcI+gGxBGJbBaPYoiukNZK51T3l0+1ziCVtrLcH/o8I3Znhsig9me HlS6ieI1iRvB+k6e00xVaozOWI6TLd8se9n2XeYjLGWBC1UHo0Gl4XCvI2n8McmTfn/l pd3Dn7JPFd8RmA6vsbqYqSCPbIatDbcSmIxB6R5N36esVkBXpOU1wqV9POQVN5iIBE8G nWoBc+3YiZcvLi/6YRc1KEFJColMWiNMZM2oMcM4NbSsAd7DyllEif1H6YJUhb5N4dDD nK6Q== X-Gm-Message-State: AOAM531ve+5gXXE3lQGd8pYkDdlFY4BeoBH0Cn8Q2SxxZxjgD+XF5rGK Bw93Np/jogxb2b5XAaWXZDBEDWkUXf9tGc6a X-Google-Smtp-Source: ABdhPJw5MxpDbeI+e3d0yBr7sjtg/Xkxp1KRB71SvM818GT5ag9IYEBJcqBm3095qZWPUQF/Ehk+lg== X-Received: by 2002:a9d:7747:: with SMTP id t7mr680892otl.96.1621449279410; Wed, 19 May 2021 11:34:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 47/50] target/i386: Pass in port to gen_check_io Date: Wed, 19 May 2021 13:30:47 -0500 Message-Id: <20210519183050.875453-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-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::32b; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32b.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Pass in a pre-truncated TCGv_i32 value. We were doing the truncation of EDX in multiple places, now only once per insn. While all callers use s->tmp2_i32, for cleanliness of the subroutine, use a parameter anyway. Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-48-richard.henderson@linaro.org> --- target/i386/tcg/translate.c | 55 +++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 2282c3598c..94193a8e00 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -674,19 +674,23 @@ static void gen_helper_out_func(MemOp ot, TCGv_i32 v,= TCGv_i32 n) } } =20 -static bool gen_check_io(DisasContext *s, MemOp ot, uint32_t svm_flags) +/* + * Validate that access to [port, port + 1<tmp2_i32, s->T0); if (PE(s) && (CPL(s) > IOPL(s) || VM86(s))) { switch (ot) { case MO_8: - gen_helper_check_iob(cpu_env, s->tmp2_i32); + gen_helper_check_iob(cpu_env, port); break; case MO_16: - gen_helper_check_iow(cpu_env, s->tmp2_i32); + gen_helper_check_iow(cpu_env, port); break; case MO_32: - gen_helper_check_iol(cpu_env, s->tmp2_i32); + gen_helper_check_iol(cpu_env, port); break; default: tcg_abort(); @@ -702,7 +706,7 @@ static bool gen_check_io(DisasContext *s, MemOp ot, uin= t32_t svm_flags) svm_flags |=3D SVM_IOIO_REP_MASK; } svm_flags |=3D 1 << (SVM_IOIO_SIZE_SHIFT + ot); - gen_helper_svm_check_io(cpu_env, s->tmp2_i32, + gen_helper_svm_check_io(cpu_env, port, tcg_constant_i32(svm_flags), tcg_constant_i32(next_eip - cur_eip)); } @@ -6479,8 +6483,10 @@ static target_ulong disas_insn(DisasContext *s, CPUS= tate *cpu) case 0x6c: /* insS */ case 0x6d: ot =3D mo_b_d32(b, dflag); - tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - if (!gen_check_io(s, ot, SVM_IOIO_TYPE_MASK | SVM_IOIO_STR_MASK)) { + tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_EDX]); + tcg_gen_ext16u_i32(s->tmp2_i32, s->tmp2_i32); + if (!gen_check_io(s, ot, s->tmp2_i32, + SVM_IOIO_TYPE_MASK | SVM_IOIO_STR_MASK)) { break; } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { @@ -6499,8 +6505,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x6e: /* outsS */ case 0x6f: ot =3D mo_b_d32(b, dflag); - tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - if (!gen_check_io(s, ot, SVM_IOIO_STR_MASK)) { + tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_EDX]); + tcg_gen_ext16u_i32(s->tmp2_i32, s->tmp2_i32); + if (!gen_check_io(s, ot, s->tmp2_i32, SVM_IOIO_STR_MASK)) { break; } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { @@ -6524,14 +6531,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) case 0xe5: ot =3D mo_b_d32(b, dflag); val =3D x86_ldub_code(env, s); - tcg_gen_movi_tl(s->T0, val); - if (!gen_check_io(s, ot, SVM_IOIO_TYPE_MASK)) { + tcg_gen_movi_i32(s->tmp2_i32, val); + if (!gen_check_io(s, ot, s->tmp2_i32, SVM_IOIO_TYPE_MASK)) { break; } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } - tcg_gen_movi_i32(s->tmp2_i32, val); 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); @@ -6543,16 +6549,14 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) case 0xe7: ot =3D mo_b_d32(b, dflag); val =3D x86_ldub_code(env, s); - tcg_gen_movi_tl(s->T0, val); - if (!gen_check_io(s, ot, 0)) { + tcg_gen_movi_i32(s->tmp2_i32, val); + if (!gen_check_io(s, ot, s->tmp2_i32, 0)) { break; } - gen_op_mov_v_reg(s, ot, s->T1, R_EAX); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } - tcg_gen_movi_i32(s->tmp2_i32, val); + 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); @@ -6563,14 +6567,14 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) case 0xec: case 0xed: ot =3D mo_b_d32(b, dflag); - tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - if (!gen_check_io(s, ot, SVM_IOIO_TYPE_MASK)) { + tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_EDX]); + tcg_gen_ext16u_i32(s->tmp2_i32, s->tmp2_i32); + if (!gen_check_io(s, ot, s->tmp2_i32, SVM_IOIO_TYPE_MASK)) { break; } if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } - tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); 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); @@ -6581,16 +6585,15 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) case 0xee: case 0xef: ot =3D mo_b_d32(b, dflag); - tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - if (!gen_check_io(s, ot, 0)) { + tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_EDX]); + tcg_gen_ext16u_i32(s->tmp2_i32, s->tmp2_i32); + if (!gen_check_io(s, ot, s->tmp2_i32, 0)) { break; } - gen_op_mov_v_reg(s, ot, s->T1, R_EAX); - if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } - tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); + 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); --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450939; cv=none; d=zohomail.com; s=zohoarc; b=LV4zfXHDhGxNj2Et9a7XdJThC4xShQrjoRlX/zClGro/T8LCEJrsFu3z5CHbZYT2EP1WkucE6H2e0eRa4S7swoLhH7/JrpezpDQ2q97ZbXM3G69khyEg8kxURi5S+Gn+7TyT11TLsa+yFclYbweRbDrv1a8ky9dK/aVEv9nT2ro= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450939; h=Content-Type:Content-Transfer-Encoding:Cc: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=vrBlr05OPyOsTxUcBIownyAACzTpgn59yE8tdL4D5Hs=; b=cgtIkPPHm32A8Tcowgf2MksIyvUbz5fdbYF1PyVjZn2NgV5Go2xhYZv6xldb8RnosLv9TUB71CPSRPs3GRzcTFCSGFydTde9EzTdUh4Slr93J0YZDmIi0F5LCUrZ+Nm1yQllRVfhlE3+7PaQnOP3RXqVXYPlqTmksu7jw4j9OSc= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162145093920645.43628380796304; Wed, 19 May 2021 12:02:19 -0700 (PDT) Received: from localhost ([::1]:48104 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRSU-0003Ri-0a for importer@patchew.org; Wed, 19 May 2021 15:02:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53360) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1p-0003AM-DL for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:45 -0400 Received: from mail-ot1-x32f.google.com ([2607:f8b0:4864:20::32f]:45890) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1l-0007Uz-Fd for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:45 -0400 Received: by mail-ot1-x32f.google.com with SMTP id t10-20020a05683022eab0290304ed8bc759so12598047otc.12 for ; Wed, 19 May 2021 11:34:41 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vrBlr05OPyOsTxUcBIownyAACzTpgn59yE8tdL4D5Hs=; b=UfvTlxwp+Ccmg+lvKKBZhUfQhnFHQIZ5ZjNDNbuj2XvrmAJ91X4mD7nHLfK3FnfJlT Cwdez5OBeYqCfHPYByprKAV6pJHZrEt5g+JPQCiZdf3xkWuIu25auymkbEhnWLb6vyBr DzYWRR9CvGt/pFmTbz8LivGGlGYPR88MHoRxJfa/LYQO0pIuga4aJj9XkxZ7crJQ12fY +TbC0hDMqpTmAjghFMU4N29SsXLtL62j1wwu1pLiM4XaBjQ+UTGHCOc8DfYgYw5MWgwk odkAsbX7p1Zzch9xIUvQuZtoO+zFYsmWwd1rLQ43Mw4lp8ip2AvKBvM7+HjwcOTv9+Bt zsWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vrBlr05OPyOsTxUcBIownyAACzTpgn59yE8tdL4D5Hs=; b=LbLyw+3i8OyVJ+v2dEEHwuvzS4JjxFORCSVx4vASLl+EjSTHHYkymvV7gG1ZsVBem+ jAbAe0S0tGuKqvuWJ4elrFvZcTIwmNE9NmcZm99YTigtVDC10AEyM2EZbdKL7aAuMWOY veInmDivC1PsZY1UZ54R+/7nsYCcjhhIn7deVcPSFdufeo1nR9JcRN1QgbcaESbo18pf 2pHgAwNHcZZU4O+y2q439VRemLzIwbay23mDJEf83RDg7/uaEfvwHRq4qrTNXrdmAXSB J3czPGiXIiVgfvoi0XZhM8I7c8Gw155SVNMbl22R2jPSXuWSyk3r6sMYfrrGB6a2Fmsc TRTA== X-Gm-Message-State: AOAM531yfkKlInbL6zACkeBxjVi5UMq3xSzRUoEZd3ZSkesaPNz39AX/ vGtl9c0UAgyTCe3q6EQ5HxokDhamDKtSxlk5 X-Google-Smtp-Source: ABdhPJwIYZCVy5i3ytxmtS/Y2uZz/Yp26VbH/vxbUAHtPX6tfaW3Jh0T5hsYK2hGgfS29r5N+Bnf9g== X-Received: by 2002:a9d:61cb:: with SMTP id h11mr638072otk.19.1621449280393; Wed, 19 May 2021 11:34:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 48/50] target/i386: Create helper_check_io Date: Wed, 19 May 2021 13:30:48 -0500 Message-Id: <20210519183050.875453-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32f; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32f.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Drop helper_check_io[bwl] and expose their common subroutine to tcg directly. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20210514151342.384376-49-richard.henderson@linaro.org> --- target/i386/helper.h | 4 +--- target/i386/tcg/seg_helper.c | 21 +++------------------ target/i386/tcg/translate.c | 14 +------------- 3 files changed, 5 insertions(+), 34 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index 1d85f033df..47d0d67699 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -86,9 +86,7 @@ DEF_HELPER_1(rdtsc, void, env) DEF_HELPER_1(rdtscp, void, env) DEF_HELPER_FLAGS_1(rdpmc, TCG_CALL_NO_WG, noreturn, env) =20 -DEF_HELPER_2(check_iob, void, env, i32) -DEF_HELPER_2(check_iow, void, env, i32) -DEF_HELPER_2(check_iol, void, env, i32) +DEF_HELPER_FLAGS_3(check_io, TCG_CALL_NO_WG, void, env, i32, i32) DEF_HELPER_3(outb, void, env, i32, i32) DEF_HELPER_2(inb, tl, env, i32) DEF_HELPER_3(outw, void, env, i32, i32) diff --git a/target/i386/tcg/seg_helper.c b/target/i386/tcg/seg_helper.c index cf3f051524..69d6e8f602 100644 --- a/target/i386/tcg/seg_helper.c +++ b/target/i386/tcg/seg_helper.c @@ -2418,10 +2418,10 @@ void helper_verw(CPUX86State *env, target_ulong sel= ector1) } =20 /* check if Port I/O is allowed in TSS */ -static inline void check_io(CPUX86State *env, int addr, int size, - uintptr_t retaddr) +void helper_check_io(CPUX86State *env, uint32_t addr, uint32_t size) { - int io_offset, val, mask; + uintptr_t retaddr =3D GETPC(); + uint32_t io_offset, val, mask; =20 /* TSS must be a valid 32 bit one */ if (!(env->tr.flags & DESC_P_MASK) || @@ -2444,18 +2444,3 @@ static inline void check_io(CPUX86State *env, int ad= dr, int size, raise_exception_err_ra(env, EXCP0D_GPF, 0, retaddr); } } - -void helper_check_iob(CPUX86State *env, uint32_t t0) -{ - check_io(env, t0, 1, GETPC()); -} - -void helper_check_iow(CPUX86State *env, uint32_t t0) -{ - check_io(env, t0, 2, GETPC()); -} - -void helper_check_iol(CPUX86State *env, uint32_t t0) -{ - check_io(env, t0, 4, GETPC()); -} diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 94193a8e00..68ae9b0798 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -682,19 +682,7 @@ static bool gen_check_io(DisasContext *s, MemOp ot, TC= Gv_i32 port, uint32_t svm_flags) { if (PE(s) && (CPL(s) > IOPL(s) || VM86(s))) { - switch (ot) { - case MO_8: - gen_helper_check_iob(cpu_env, port); - break; - case MO_16: - gen_helper_check_iow(cpu_env, port); - break; - case MO_32: - gen_helper_check_iol(cpu_env, port); - break; - default: - tcg_abort(); - } + 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; --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621450463; cv=none; d=zohomail.com; s=zohoarc; b=L0jNZPPsXGcT4otHipjcKuSpAf3GVqwywTOeH1HmHarPuy6TqOltgNHZ9253W7zlvTKkT2X9Ju2oVm6yjFc9Tb1wmUGWSg1WgiHqMlJ0lk2bde6qTKlq7Sp7wYY91GNiewOev5mQSJJX5Ox2E43wHRY17z1/pwR3U9WzvAPvnBE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621450463; h=Content-Type:Content-Transfer-Encoding:Cc: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=xGkZKZlGCLChYg0dV/p2rUqpj5XLQrJ/JmdPF5hhyvY=; b=As4ReX77sj4gIqwLzVu1MJWXQL+Y7ecoA9/Iq8HL8fj+ww7QuKG9apnh0DYZ4x9fHrFIOvrTNnXU3i+M441fyf7InUG1IABx5J1p1aljC4S/FCQvyLXLPEH6Q3w1pH9HlsHsiHmrcaOXrTnELBF53jpftV/ST1jQWp2Jxvavgi8= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621450463558327.390265772377; Wed, 19 May 2021 11:54:23 -0700 (PDT) Received: from localhost ([::1]:48910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRKo-00021p-CT for importer@patchew.org; Wed, 19 May 2021 14:54:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53366) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1r-0003DX-5q for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:47 -0400 Received: from mail-oi1-x22b.google.com ([2607:f8b0:4864:20::22b]:46803) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1m-0007W1-HA for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:46 -0400 Received: by mail-oi1-x22b.google.com with SMTP id x15so13968184oic.13 for ; Wed, 19 May 2021 11:34:42 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xGkZKZlGCLChYg0dV/p2rUqpj5XLQrJ/JmdPF5hhyvY=; b=Wdjyj2XL/w+RwnSN/M47iLTY4ijeV6ECZpKlHCmaSPJ/ptNlr+2f47bOdCmT+nDPN4 YNazk+NxGPRx/HGveRJ1gipNnLUmBVMMs7dPVXPLhW+zlAqb+v+hiCgOkeo6CzKdS84b fohxmGIh1VpeE3TBR91R0N+EfIovhuu6lTMgLlaURbuRwf7yecHFKfhykddgUPV+I3vy 6ayuQazAVT7O7cvA3pXV/ZzDVTQKYkB4FDyJtw8jOi2nYNg8z6kDv0ANPi5wxNAx5Oy5 XFJhpCPxY7c/e5hMC/jEf1SKYHjS1Kw+wwZn5LKGrWrvW0WUzu/tW/8qeQQWc3pkSsSH SRuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xGkZKZlGCLChYg0dV/p2rUqpj5XLQrJ/JmdPF5hhyvY=; b=drFfjxCzG7Er2To3w0gL5vlISGvpcyqSir34gUsQFbUfBZigwdTh4P/lieUCUcnJL6 raai0wbMkEHcmTC7MTFw0glE/IbDJe4qcU9Fg6ptIevB8yvs5nH8AFF3McveGfZfqUQN GbXThyUiGbJ6N3Fa1VG7QHm1O+b30I+FWLbhTRZc8VbZ8byz0H7dOBz4LVf2H0A/PfqS JEp0jz5Z8huBPR8GwxtVRbonDppLKL7kyOj51WuGnfrfoPoTOZwIs95LAoABHNYuePoE 8rukX2c1bjYGBjSC2ar+JxwzQ6AyR8NIGKyCpjCJYAvgP3lswr+QEB34V6E4hEu54EfF L6fA== X-Gm-Message-State: AOAM530cHtRVEuWugA/MiyF7sKK+eK3u8Yj6+tbWtJIqY5el6fF9Yf0b O543CG08E1Kc7Qxq3tp+fY/GiTfaw0RByz9A X-Google-Smtp-Source: ABdhPJx7+j/4qnhevh4gWrXxN7l2zKH6ww98kNX/n0gxXNPN88mrrjjXdjIRYI8YdYuSQUlfkqktQg== X-Received: by 2002:aca:a98a:: with SMTP id s132mr419486oie.164.1621449281385; Wed, 19 May 2021 11:34:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 49/50] target/i386: Move helper_check_io to sysemu Date: Wed, 19 May 2021 13:30:49 -0500 Message-Id: <20210519183050.875453-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::22b; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22b.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) The we never allow i/o from user-only, and the tss check that helper_check_io does will always fail. Use an ifdef within gen_check_io and return false, indicating that an exception is known to be raised. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-50-richard.henderson@linaro.org> Signed-off-by: Richard Henderson --- target/i386/helper.h | 2 +- target/i386/tcg/seg_helper.c | 28 ---------------------------- target/i386/tcg/sysemu/seg_helper.c | 29 +++++++++++++++++++++++++++++ target/i386/tcg/translate.c | 11 ++++++++++- 4 files changed, 40 insertions(+), 30 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index 47d0d67699..3fd0253298 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -86,7 +86,6 @@ DEF_HELPER_1(rdtsc, void, env) DEF_HELPER_1(rdtscp, void, env) DEF_HELPER_FLAGS_1(rdpmc, TCG_CALL_NO_WG, noreturn, env) =20 -DEF_HELPER_FLAGS_3(check_io, TCG_CALL_NO_WG, void, env, i32, i32) DEF_HELPER_3(outb, void, env, i32, i32) DEF_HELPER_2(inb, tl, env, i32) DEF_HELPER_3(outw, void, env, i32, i32) @@ -95,6 +94,7 @@ DEF_HELPER_3(outl, void, env, i32, i32) DEF_HELPER_2(inl, tl, env, i32) =20 #ifndef CONFIG_USER_ONLY +DEF_HELPER_FLAGS_3(check_io, TCG_CALL_NO_WG, void, env, i32, i32) DEF_HELPER_FLAGS_4(bpt_io, TCG_CALL_NO_WG, void, env, i32, i32, tl) DEF_HELPER_2(svm_check_intercept, void, env, i32) DEF_HELPER_4(svm_check_io, void, env, i32, i32, i32) diff --git a/target/i386/tcg/seg_helper.c b/target/i386/tcg/seg_helper.c index 69d6e8f602..2f6cdc8239 100644 --- a/target/i386/tcg/seg_helper.c +++ b/target/i386/tcg/seg_helper.c @@ -2416,31 +2416,3 @@ void helper_verw(CPUX86State *env, target_ulong sele= ctor1) } CC_SRC =3D eflags | CC_Z; } - -/* check if Port I/O is allowed in TSS */ -void helper_check_io(CPUX86State *env, uint32_t addr, uint32_t size) -{ - uintptr_t retaddr =3D GETPC(); - uint32_t io_offset, val, mask; - - /* TSS must be a valid 32 bit one */ - if (!(env->tr.flags & DESC_P_MASK) || - ((env->tr.flags >> DESC_TYPE_SHIFT) & 0xf) !=3D 9 || - env->tr.limit < 103) { - goto fail; - } - io_offset =3D cpu_lduw_kernel_ra(env, env->tr.base + 0x66, retaddr); - io_offset +=3D (addr >> 3); - /* Note: the check needs two bytes */ - if ((io_offset + 1) > env->tr.limit) { - goto fail; - } - val =3D cpu_lduw_kernel_ra(env, env->tr.base + io_offset, retaddr); - val >>=3D (addr & 7); - mask =3D (1 << size) - 1; - /* all bits must be zero to allow the I/O */ - if ((val & mask) !=3D 0) { - fail: - raise_exception_err_ra(env, EXCP0D_GPF, 0, retaddr); - } -} diff --git a/target/i386/tcg/sysemu/seg_helper.c b/target/i386/tcg/sysemu/s= eg_helper.c index e0d7b32b82..82c0856c41 100644 --- a/target/i386/tcg/sysemu/seg_helper.c +++ b/target/i386/tcg/sysemu/seg_helper.c @@ -23,6 +23,7 @@ #include "exec/helper-proto.h" #include "exec/cpu_ldst.h" #include "tcg/helper-tcg.h" +#include "../seg_helper.h" =20 #ifdef TARGET_X86_64 void helper_syscall(CPUX86State *env, int next_eip_addend) @@ -123,3 +124,31 @@ void x86_cpu_do_interrupt(CPUState *cs) env->old_exception =3D -1; } } + +/* check if Port I/O is allowed in TSS */ +void helper_check_io(CPUX86State *env, uint32_t addr, uint32_t size) +{ + uintptr_t retaddr =3D GETPC(); + uint32_t io_offset, val, mask; + + /* TSS must be a valid 32 bit one */ + if (!(env->tr.flags & DESC_P_MASK) || + ((env->tr.flags >> DESC_TYPE_SHIFT) & 0xf) !=3D 9 || + env->tr.limit < 103) { + goto fail; + } + io_offset =3D cpu_lduw_kernel_ra(env, env->tr.base + 0x66, retaddr); + io_offset +=3D (addr >> 3); + /* Note: the check needs two bytes */ + if ((io_offset + 1) > env->tr.limit) { + goto fail; + } + val =3D cpu_lduw_kernel_ra(env, env->tr.base + io_offset, retaddr); + val >>=3D (addr & 7); + mask =3D (1 << size) - 1; + /* all bits must be zero to allow the I/O */ + if ((val & mask) !=3D 0) { + fail: + raise_exception_err_ra(env, EXCP0D_GPF, 0, retaddr); + } +} diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 68ae9b0798..86b93a010d 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -203,7 +203,6 @@ STUB_HELPER(read_crN, TCGv ret, TCGv_env env, TCGv_i32 = reg) STUB_HELPER(set_dr, TCGv_env env, TCGv_i32 reg, TCGv val) STUB_HELPER(stgi, TCGv_env env) STUB_HELPER(svm_check_intercept, TCGv_env env, TCGv_i32 type) -STUB_HELPER(svm_check_io, TCGv_env env, TCGv_i32 port, TCGv_i32 p, TCGv_i3= 2 a) STUB_HELPER(vmload, TCGv_env env, TCGv_i32 aflag) STUB_HELPER(vmmcall, TCGv_env env) STUB_HELPER(vmrun, TCGv_env env, TCGv_i32 aflag, TCGv_i32 pc_ofs) @@ -217,6 +216,7 @@ static void gen_jr(DisasContext *s, TCGv dest); 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); +static void gen_exception_gpf(DisasContext *s); =20 /* i386 arith/logic operations */ enum { @@ -681,6 +681,14 @@ static void gen_helper_out_func(MemOp ot, TCGv_i32 v, = TCGv_i32 n) static bool gen_check_io(DisasContext *s, MemOp ot, TCGv_i32 port, uint32_t svm_flags) { +#ifdef CONFIG_USER_ONLY + /* + * We do not implement the ioperm(2) syscall, so the TSS check + * will always fail. + */ + gen_exception_gpf(s); + return false; +#else if (PE(s) && (CPL(s) > IOPL(s) || VM86(s))) { gen_helper_check_io(cpu_env, port, tcg_constant_i32(1 << ot)); } @@ -699,6 +707,7 @@ static bool gen_check_io(DisasContext *s, MemOp ot, TCG= v_i32 port, tcg_constant_i32(next_eip - cur_eip)); } return true; +#endif } =20 static inline void gen_movs(DisasContext *s, MemOp ot) --=20 2.25.1 From nobody Wed May 15 12:57:24 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=1621451189; cv=none; d=zohomail.com; s=zohoarc; b=fPvtVnBhIjPIsU4cseZUlHivI38JXRFybGIrnBNEKx8P5f7RcQyEgTZh5o91nC17etvcJvA8qxopnGO53WS+iqJ1k1GvP6jtLa6n7QH/UmI6oTU+cRaDSY7eMeYrm0617VJDn1MaFYPZTicr5IkgtX4wThdYPnRdC6ZFxBa3kAc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621451189; h=Content-Type:Content-Transfer-Encoding:Cc: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=GoaUZegljsvDJfRohRECaMQH5QJK/M1GVc1IxmvKhBI=; b=SSu+L7ZMVabPRSBR2JnONjSyspil1MMXPuRgD2Iy8ldviJ9AcSueow6JO5KtvUM4h4hbN/xUbkk93ZCmvQ6PkLFP4PK6qP0Ww2XkCDowynDpLQqYXAxdQKm1fFtXb2boymZ8A7GpIfYp0a30wTfuxPhhmkr83JeHBnlqmLtNDrQ= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621451189894240.40496538277375; Wed, 19 May 2021 12:06:29 -0700 (PDT) Received: from localhost ([::1]:56048 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljRWW-0000RA-8r for importer@patchew.org; Wed, 19 May 2021 15:06:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53364) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljR1p-0003Ac-Vt for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:46 -0400 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]:42765) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljR1n-0007WG-GW for qemu-devel@nongnu.org; Wed, 19 May 2021 14:34:45 -0400 Received: by mail-ot1-x32e.google.com with SMTP id g7-20020a9d12870000b0290328b1342b73so4785188otg.9 for ; Wed, 19 May 2021 11:34:43 -0700 (PDT) Received: from localhost.localdomain ([45.235.253.15]) by smtp.gmail.com with ESMTPSA id i9sm38642oog.17.2021.05.19.11.34.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 11:34:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GoaUZegljsvDJfRohRECaMQH5QJK/M1GVc1IxmvKhBI=; b=zdMfo6By8V0AtxRbYG74VsfaRhtWl/d58Oj/kndtbdsYTnr2u8RpwK/Kk0DuMDc4aE m2LE9sf1Ljtz7CQecGMX7n3F7eSmIMuxoYhMxmWQ3afxeP/+2DzrgfBwg9hPEST6YNOV 6ubsWJqew186EsIb9G5jyl1DD+if1f6adQxGC6lgC66B8wslvpSYBEMCsx7KcCleUJgX Na/BUe9jut+Sw4cLtSVBYOgipMyvY5fcWNieOIOGRjwyadZc75p0cuTY36ziCDlqsW+N d9wbldLe6lNkpBE/pWIMkXK+DENt7SFeWmpcQsyld44u8aPEUP4pxXdZxHtVQ9Hgztfp 158w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GoaUZegljsvDJfRohRECaMQH5QJK/M1GVc1IxmvKhBI=; b=K5zU7a3i5f7Su2idSlAghuRyDssKUyd4g8VFlqtvX3fBQaj2e/nM+TD6Ev0/rvudNp QPYiLACJyTCcg/qJqwRmnm6lVD/q28n/HQjiAVXwR5mIcaMurL6JJZN3CS2zolpjPfi4 qRQdJwimyURoq/XOHQi4HzOQRr1hFr4zFx9vyDY+5m1EvX3GTk2jfUNy+wRYfm50eW/S VUmW5o2gOr4Vxq+/iFE30vdGee7/hYfYrKlZD5op7tiA3F8Mmpgg/vTHOzvITx3K/CIf 1ZNkBWN0gcVIZLbLQpIy3JnZK7czoqywQNnOPhTH0TthmdBTFMaLLCeOAhnFZep5qEZu yARA== X-Gm-Message-State: AOAM530kZWB7wS0fzDSCT9DIkesWDJYGtA2k6MSvdfr7vqZBdE0f0ExP JLLgSyY9kM8gHGBxsD5IWjNx5xY426+vTAgR X-Google-Smtp-Source: ABdhPJz+g+40/n4qD1aWInwVFPTX+mN9ue0elOtyE8rh2P+fvi5aX1raEMNy0z1qCNVJt8IB8yq71w== X-Received: by 2002:a05:6830:18fb:: with SMTP id d27mr637157otf.235.1621449282385; Wed, 19 May 2021 11:34:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 50/50] target/i386: Remove user-only i/o stubs Date: Wed, 19 May 2021 13:30:50 -0500 Message-Id: <20210519183050.875453-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210519183050.875453-1-richard.henderson@linaro.org> References: <20210519183050.875453-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32e; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32e.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) With the previous patch for check_io, we now have enough for the compiler to dead-code eliminate all of the i/o helpers. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Paolo Bonzini Message-Id: <20210514151342.384376-51-richard.henderson@linaro.org> --- target/i386/helper.h | 3 +- target/i386/tcg/translate.c | 6 ++++ target/i386/tcg/user/misc_stubs.c | 55 ------------------------------- target/i386/tcg/user/meson.build | 1 - 4 files changed, 7 insertions(+), 58 deletions(-) delete mode 100644 target/i386/tcg/user/misc_stubs.c diff --git a/target/i386/helper.h b/target/i386/helper.h index 3fd0253298..f3d8c3f949 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -86,14 +86,13 @@ DEF_HELPER_1(rdtsc, void, env) DEF_HELPER_1(rdtscp, void, env) DEF_HELPER_FLAGS_1(rdpmc, TCG_CALL_NO_WG, noreturn, env) =20 +#ifndef CONFIG_USER_ONLY DEF_HELPER_3(outb, void, env, i32, i32) DEF_HELPER_2(inb, tl, env, i32) DEF_HELPER_3(outw, void, env, i32, i32) DEF_HELPER_2(inw, tl, env, i32) DEF_HELPER_3(outl, void, env, i32, i32) DEF_HELPER_2(inl, tl, env, i32) - -#ifndef CONFIG_USER_ONLY DEF_HELPER_FLAGS_3(check_io, TCG_CALL_NO_WG, void, env, i32, i32) DEF_HELPER_FLAGS_4(bpt_io, TCG_CALL_NO_WG, void, env, i32, i32, tl) DEF_HELPER_2(svm_check_intercept, void, env, i32) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 86b93a010d..051b6dff18 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -196,8 +196,14 @@ typedef struct DisasContext { STUB_HELPER(clgi, TCGv_env env) STUB_HELPER(flush_page, TCGv_env env, TCGv addr) STUB_HELPER(hlt, TCGv_env env, TCGv_i32 pc_ofs) +STUB_HELPER(inb, TCGv ret, TCGv_env env, TCGv_i32 port) +STUB_HELPER(inw, TCGv ret, TCGv_env env, TCGv_i32 port) +STUB_HELPER(inl, TCGv ret, TCGv_env env, TCGv_i32 port) STUB_HELPER(monitor, TCGv_env env, TCGv addr) STUB_HELPER(mwait, TCGv_env env, TCGv_i32 pc_ofs) +STUB_HELPER(outb, TCGv_env env, TCGv_i32 port, TCGv_i32 val) +STUB_HELPER(outw, TCGv_env env, TCGv_i32 port, TCGv_i32 val) +STUB_HELPER(outl, TCGv_env env, TCGv_i32 port, TCGv_i32 val) STUB_HELPER(rdmsr, TCGv_env env) STUB_HELPER(read_crN, TCGv ret, TCGv_env env, TCGv_i32 reg) STUB_HELPER(set_dr, TCGv_env env, TCGv_i32 reg, TCGv val) diff --git a/target/i386/tcg/user/misc_stubs.c b/target/i386/tcg/user/misc_= stubs.c deleted file mode 100644 index df38b44d6e..0000000000 --- a/target/i386/tcg/user/misc_stubs.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * x86 misc helpers - * - * Copyright (c) 2003 Fabrice Bellard - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see . - */ - -#include "qemu/osdep.h" -#include "cpu.h" -#include "exec/helper-proto.h" - -void helper_outb(CPUX86State *env, uint32_t port, uint32_t data) -{ - g_assert_not_reached(); -} - -target_ulong helper_inb(CPUX86State *env, uint32_t port) -{ - g_assert_not_reached(); - return 0; -} - -void helper_outw(CPUX86State *env, uint32_t port, uint32_t data) -{ - g_assert_not_reached(); -} - -target_ulong helper_inw(CPUX86State *env, uint32_t port) -{ - g_assert_not_reached(); - return 0; -} - -void helper_outl(CPUX86State *env, uint32_t port, uint32_t data) -{ - g_assert_not_reached(); -} - -target_ulong helper_inl(CPUX86State *env, uint32_t port) -{ - g_assert_not_reached(); - return 0; -} diff --git a/target/i386/tcg/user/meson.build b/target/i386/tcg/user/meson.= build index 3555b15bdd..1df6bc4343 100644 --- a/target/i386/tcg/user/meson.build +++ b/target/i386/tcg/user/meson.build @@ -1,5 +1,4 @@ i386_user_ss.add(when: ['CONFIG_TCG', 'CONFIG_USER_ONLY'], if_true: files( 'excp_helper.c', - 'misc_stubs.c', 'seg_helper.c', )) --=20 2.25.1