From patchwork Sun Feb 28 23:22:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388439 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2913114jap; Sun, 28 Feb 2021 15:26:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJxLyLEZl0WGHWYW+XdYz3YUNzoVpd1QH2SVvwqTupqcW3bA5iMJYnCmlKgvYA2i9DZ6/tG8 X-Received: by 2002:a4a:d2cc:: with SMTP id j12mr10349530oos.56.1614554811010; Sun, 28 Feb 2021 15:26:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614554811; cv=none; d=google.com; s=arc-20160816; b=AnDYtd+HvZskNndt8CHusCEBII4Gva2t4h1VNaQ3++VC8EqFpgs3H8mAcjsVOsTFx6 y6f+jySZVWzTDTQsogO5eQntQxYGgXHRvZDdOfPF1APtk/ZWxuZGtM5M+XWAcN2tZCBo vuPs8UzyqKMavSd+wEf8RjeMLllMpjO6OWvN+sR8AEgKuZWdZSVq5weIilxFIL5JCaoe TzPWdsXw4l12G2nI+3gonLYgXF3xuqINivNfCKAiPwPmOWSznkSz+pcczc+5OpQevjA1 sPgOC5pYaenDujOOKlfQ8sHhUlXC78uwVrzS0YLSNu8bo6fGLBMWsPC/oTLNlDeo24s5 lKgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=4OnXiQELZimMmmln2oIwEWMyVy/CxfoTzEEpFKC8y+0=; b=mFnmIRhM2eVdspG6o52vacIRA3agpadL5nIiabUqdRXUulN509vcerxem+0rNkreNR +ssLmcMqYEhXaZPEdBhiHRReST+naztwnnQPUora4BANjpmIQ2Hyvhjt9jTZsm7dmPLo H4ZUmv4sYmIorXLbz3VNgEVpj0Q/yN/FXEQuZo8L08GtY44t/2FdhN8FLAbKg12RjV7x X8ounSwwd56VGaZgGhr0ZpS8Tk4tutZnNy9b+ZnXlCVmhLfkP3sH1FpRCqHLrqwMZY95 zCRabQwAyE0NPnjjwxYa3svqgtBmO8KrgRJ2ffCElKktX1Y9WPutjQ3ZA5/oxzk9b41d KLqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=y13v08BH; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id r26si10349124oos.55.2021.02.28.15.26.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:26:51 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=y13v08BH; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:33822 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVSc-0000Xe-Bd for patch@linaro.org; Sun, 28 Feb 2021 18:26:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43272) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPL-0005J7-NU for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:27 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]:34827) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPJ-0007dn-Gv for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:27 -0500 Received: by mail-pl1-x62a.google.com with SMTP id g20so8774857plo.2 for ; Sun, 28 Feb 2021 15:23:25 -0800 (PST) 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=4OnXiQELZimMmmln2oIwEWMyVy/CxfoTzEEpFKC8y+0=; b=y13v08BH573xQVpHEpCUJR3yuMkD4iTBC47vZ0Jto5cLZJzPfHkaZD1bxZYZmtFt+i kn5cJ2tfYlCULy4WA45sZpjsdFQr9QnuoR2OaLQcQledRi830rN7JdRhARkR9zDVk+5A /lWF04HK7eN1/bUzHbzXyUfIUyqYQy8DcxezWAJbg6o6hFloEkMJproF8htu8x2qPgkG 2o6YeA8XzXbgHzQM7Lp7JynL9TJgjd/GqviRrdYITOpbyASg0zcQQ5E5mEEIEGfV0Uop P/qBAjGUhaNXuEFSlW6OW20iaorznuO0bVcPmmafUV+X+O1kfnNKpxKqK+d/yFO0i33l 6d9w== 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=4OnXiQELZimMmmln2oIwEWMyVy/CxfoTzEEpFKC8y+0=; b=SFS5JZDE18hSOkDwgdSnJz0uxdUF59jiip1wmB902MKY0AQy1zgk+oFncc2eG+SYVe pWoY9X/xgAatTLJoR8FbsSEt85oIXcjVhZ0/mpo9zTU48xdbz9bkC4t9VexLqqA0A2XJ eE6xRbyxfbBJkIEoigheOjqpGtvSk1Jd1zqXWMd/Lu9ag8Zd8mfLxe9XT0p9xbEs70Gg zSYWMUMTDdLA6JYd4bfqGV5fj0vMX6oiErlZEvO9i9L6ZUEiPIdpF0FMDw0tPTS89+7w dMrPaBH4JFdhJBLMOmJEhUpihiszkHX61n9cISF1pDdT+qTQiW0irpPdWviLaFuIHHAp 9I6Q== X-Gm-Message-State: AOAM5325hC5Tfg9ONuj7ZBj+h5ntfxzAMArdsWp0J1NBtSvJ+PWMqBEO VYMKLiA1JOvMag54T7odyU3wiO4vimBzVA== X-Received: by 2002:a17:90b:794:: with SMTP id l20mr7163242pjz.207.1614554604077; Sun, 28 Feb 2021 15:23:24 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:23 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 01/50] target/i386: Split out gen_exception_gpf Date: Sun, 28 Feb 2021 15:22:32 -0800 Message-Id: <20210228232321.322053-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 68 ++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 31 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 6ecbbfa6c1..6af8bd219b 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); } +/* 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 == 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, CPUState *cpu) s->vex_l = 0; s->vex_v = 0; if (sigsetjmp(s->jmpbuf, 0) != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); return s->pc; } @@ -6561,7 +6567,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) set_cc_op(s, CC_OP_EFLAGS); } else if (s->vm86) { if (s->iopl != 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); @@ -6683,7 +6689,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x9c: /* pushf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_PUSHF); if (s->vm86 && s->iopl != 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); @@ -6693,7 +6699,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x9d: /* popf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_POPF); if (s->vm86 && s->iopl != 3) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { ot = gen_pop_T0(s); if (s->cpl == 0) { @@ -7055,7 +7061,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xcd: /* int N */ val = x86_ldub_code(env, s); if (s->vm86 && s->iopl != 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_base); } @@ -7078,13 +7084,13 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (s->cpl <= 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 == 3) { gen_helper_cli(cpu_env); } else { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } } break; @@ -7095,7 +7101,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 */ @@ -7188,7 +7194,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x130: /* wrmsr */ case 0x132: /* rdmsr */ if (s->cpl != 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); @@ -7220,7 +7226,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (CODE64(s) && env->cpuid_vendor1 != 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); @@ -7231,7 +7237,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (CODE64(s) && env->cpuid_vendor1 != 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); @@ -7250,7 +7256,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 */ @@ -7272,7 +7278,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xf4: /* hlt */ if (s->cpl != 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); @@ -7298,7 +7304,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (!s->pe || s->vm86) goto illegal_op; if (s->cpl != 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); @@ -7319,7 +7325,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (!s->pe || s->vm86) goto illegal_op; if (s->cpl != 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); @@ -7435,7 +7441,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if (s->cpl != 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], @@ -7452,7 +7458,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7477,7 +7483,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7490,7 +7496,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7505,7 +7511,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7519,7 +7525,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7543,7 +7549,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; } if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7553,7 +7559,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) CASE_MODRM_MEM_OP(2): /* lgdt */ if (s->cpl != 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); @@ -7570,7 +7576,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) CASE_MODRM_MEM_OP(3): /* lidt */ if (s->cpl != 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); @@ -7616,7 +7622,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; CASE_MODRM_OP(6): /* lmsw */ if (s->cpl != 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); @@ -7628,7 +7634,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) CASE_MODRM_MEM_OP(7): /* invlpg */ if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); break; } gen_update_cc_op(s); @@ -7643,7 +7649,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) #ifdef TARGET_X86_64 if (CODE64(s)) { if (s->cpl != 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, @@ -7679,7 +7685,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x108: /* invd */ case 0x109: /* wbinvd */ if (s->cpl != 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 */ @@ -8003,7 +8009,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x120: /* mov reg, crN */ case 0x122: /* mov crN, reg */ if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { modrm = x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)==0xc0). @@ -8057,7 +8063,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x121: /* mov reg, drN */ case 0x123: /* mov drN, reg */ if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception_gpf(s); } else { #ifndef CONFIG_USER_ONLY modrm = x86_ldub_code(env, s); @@ -8093,7 +8099,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0x106: /* clts */ if (s->cpl != 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); From patchwork Sun Feb 28 23:22:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388437 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2911927jap; Sun, 28 Feb 2021 15:24:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJyR1Wu7MBtd0OSGuoCYJFvAJFO7O0srBQVAoL6K1xkRQFG+a3QXw0zzcC7nJzsakCrrR8Qo X-Received: by 2002:a02:c6d0:: with SMTP id r16mr13260384jan.38.1614554646641; Sun, 28 Feb 2021 15:24:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614554646; cv=none; d=google.com; s=arc-20160816; b=Lv1mQBv8N23IWDpWyZz5wcyvrKtp9oWxhsw2k8rz1FHcjQdSukqQFaJi+DaiHfGOgF C1X6Ti866L+0VbyyYwbDoeNYMgCIoUyeUbXYJ2I1aMPtZCTZDY+D+l6CFomyY1IVm/9/ lg0JRijOoHKovlzD1uIbXNzGQ7TsxU/1VxMUJyINP3AHd9wWdftC4pqGxSMGwsWQnter iOEZkFugxP4brOQl/bt4PCsSyIatOc98e3alDFik4PCbfZ1/5AVkjeHUuGqC2R0B+q97 PKzAZD3mmKu5ui+nO6ATRAJjh+xC1MYC4esLiUBR8ZIxfKeNyGujhkyZ7aTe4/A/sqmi JhbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=b3o7BcKxUNswRMMyWGLBg72LcoS575qjgZJ5bfz0nIY=; b=XuwfPtg874wc60QO7tuIcqqEX/XulZIukLCEqI90zVlvdckaK+amz/28h39ekGhS5/ M+p/GzQakFw8Fu8db8nXMDAJpYJABGg1mrHSaa7ULw246XBwsJcfN7k66H6vo5sEnrI7 u5wkoGl0cFjuGk3TdKXeldpGKnjUar14bsl9jvYkgQp17UY77/rclcFDFJ+ezNSErysB V7qSuXk4LtAokgrY5H7b7EmgqX87s5CSReF74Mwx5lFwPpTtUICD7JWtPzK/Ea0HlH1u WaTVdFOTzrUnCzu3tq6mjLZcjPU2Iq2vYEwoIINxfOjhjFzSkwIiw7908P+BIZlBCDHR weJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pAinsol7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id i6si1285427ilq.158.2021.02.28.15.24.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:24:06 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pAinsol7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:53608 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVPy-0005MI-1N for patch@linaro.org; Sun, 28 Feb 2021 18:24:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43286) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPM-0005Jq-Gz for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:28 -0500 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]:39147) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPK-0007f5-Ip for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:28 -0500 Received: by mail-pj1-x1033.google.com with SMTP id d2so10478375pjs.4 for ; Sun, 28 Feb 2021 15:23:26 -0800 (PST) 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=b3o7BcKxUNswRMMyWGLBg72LcoS575qjgZJ5bfz0nIY=; b=pAinsol7G6Kh3BQpjUgMQ4Sicddteb+5xsn/m7+ZSILHuSqaC7Bc67oevkfUc6N/Hm pRyaEaCE9fZKVxCcide+rkz2nsqOon1YZSRqRKyvLkIlM6yjMS7h+KPvn+5/I0c6DCcr cgUQ2AmdK/22Ijejn3k+7QqQ4VvJ+mcGzxHSeKDqF3Cgbvb67QW2B9nZh8O8NztZJZP3 GRbuZi0/KQ5EiikYff8BbnlqbOQOrT3xfyZyrVZKKuhzxZKd3d0oJDMPIaJ6CgOd+0I/ vtL1EwtfkDwts1SLar9N+jb7z/+2qhnfmL1wWPdnt5d+NbjyPpbNZTSJS1XK5ISbAjCe N9DQ== 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=b3o7BcKxUNswRMMyWGLBg72LcoS575qjgZJ5bfz0nIY=; b=PXjAT50H2qOVbcELdeDtylniH0LyEVZz6n5tSakF/CoNZO6X5XwWHzWqnmhR4RdQDi UCvKaSrPrlEXKxH1DkA8HDPnhJSDvky4EL/leCXDXg0wZCaKDWR1xv+mWxjThITkkw1m GgYCZy1bCpA4tQQlJf2YzgKlMUu8/hZboXd39/xCitR7N8O/TFiUvdy5Wm1B8notidm3 BCZykg7qQufO65GjrlF1Jqmq2lVz3mVe5ISl31xToERpsvDaOMCttlPzp56Uc0Vcwrkh 5gPn8LbL2xFNtAWSw4BCwJVVdx7Jx5Lk5v/XucUk8CRf2lKo1k0m7qIzsMRRqhjoIFCV eDQQ== X-Gm-Message-State: AOAM533BiO4C8WKtWHLl/4bcuy2V9e497Z9KJD6zNZJLrZLTAquvJUxL Q35frBzx/qq8a0EQOE+h7nx4a/+NeA4JLw== X-Received: by 2002:a17:902:cecb:b029:e4:182e:a2e4 with SMTP id d11-20020a170902cecbb02900e4182ea2e4mr12822457plg.48.1614554605075; Sun, 28 Feb 2021 15:23:25 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:24 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 02/50] target/i386: Split out check_cpl0 Date: Sun, 28 Feb 2021 15:22:33 -0800 Message-Id: <20210228232321.322053-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Split out the check for CPL != 0 and the raising of #GP. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 79 ++++++++++++++----------------------- 1 file changed, 30 insertions(+), 49 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 6af8bd219b..5703b253a1 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); } +/* Check for cpl == 0; if not, raise #GP and return false. */ +static bool check_cpl0(DisasContext *s) +{ + if (s->cpl == 0) { + return true; + } + gen_exception_gpf(s); + return false; +} + /* if d == OR_TMP0, it means memory operand (address in A0) */ static void gen_op(DisasContext *s1, int op, MemOp ot, int d) { @@ -7193,9 +7203,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0x130: /* wrmsr */ case 0x132: /* rdmsr */ - if (s->cpl != 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) { @@ -7277,9 +7285,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) gen_helper_cpuid(cpu_env); break; case 0xf4: /* hlt */ - if (s->cpl != 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)); @@ -7303,9 +7309,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 2: /* lldt */ if (!s->pe || s->vm86) goto illegal_op; - if (s->cpl != 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); @@ -7324,9 +7328,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 3: /* ltr */ if (!s->pe || s->vm86) goto illegal_op; - if (s->cpl != 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); @@ -7440,8 +7442,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) | PREFIX_REPZ | PREFIX_REPNZ))) { goto illegal_op; } - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX], @@ -7457,8 +7458,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7482,8 +7482,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7495,8 +7494,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7510,8 +7508,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) || !s->pe) { goto illegal_op; } - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7524,8 +7521,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7548,8 +7544,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (!(s->flags & HF_SVME_MASK) || !s->pe) { goto illegal_op; } - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7558,8 +7553,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; CASE_MODRM_MEM_OP(2): /* lgdt */ - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_GDTR_WRITE); @@ -7575,8 +7569,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; CASE_MODRM_MEM_OP(3): /* lidt */ - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_IDTR_WRITE); @@ -7621,8 +7614,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) gen_helper_wrpkru(cpu_env, s->tmp2_i32, s->tmp1_i64); break; CASE_MODRM_OP(6): /* lmsw */ - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); @@ -7633,8 +7625,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; CASE_MODRM_MEM_OP(7): /* invlpg */ - if (s->cpl != 0) { - gen_exception_gpf(s); + if (!check_cpl0(s)) { break; } gen_update_cc_op(s); @@ -7648,9 +7639,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xf8: /* swapgs */ #ifdef TARGET_X86_64 if (CODE64(s)) { - if (s->cpl != 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)); @@ -7684,9 +7673,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x108: /* invd */ case 0x109: /* wbinvd */ - if (s->cpl != 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 */ } @@ -8008,9 +7995,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0x120: /* mov reg, crN */ case 0x122: /* mov crN, reg */ - if (s->cpl != 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { modrm = x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)==0xc0). * AMD documentation (24594.pdf) and testing of @@ -8062,9 +8047,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0x121: /* mov reg, drN */ case 0x123: /* mov drN, reg */ - if (s->cpl != 0) { - gen_exception_gpf(s); - } else { + if (check_cpl0(s)) { #ifndef CONFIG_USER_ONLY modrm = x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)==0xc0). @@ -8098,9 +8081,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) } break; case 0x106: /* clts */ - if (s->cpl != 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 */ From patchwork Sun Feb 28 23:22:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388443 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2914310jap; Sun, 28 Feb 2021 15:29:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJyxPn7oP7IxpmljjDmUgazLCvaoa5xojPUo5NJsDzLGF8kB4s5aoDf3Fl1QVoedevy6zBxh X-Received: by 2002:a6b:b447:: with SMTP id d68mr11164069iof.87.1614554973457; Sun, 28 Feb 2021 15:29:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614554973; cv=none; d=google.com; s=arc-20160816; b=suS28VYldWDD3TABATb3jyAYBN0VCYwJayQrfd28mOn6xo/Zu4vxv2uhe3+AUYZvb2 enKpvjhePo6AvXT425E7KkhHUh3+VjEDQ7AVLusX5T2myoiPVigZCtrn/as9rLlEVZQu mnS3l/cNPJJnJ7rSnOKrxMcG1w/dRRBDiyX/BuNIf7cJ28UUhynA2jVs1h0ZMxVc4nQ1 2iIwPN2ahgn0oGaAz7rqklbkA6X8d901qiva+NtGQ0KF2E8/IQ82I7NXElD7YH9SI1c3 ANZyCuDOXEVVArrR3qI+UuY+3hf/bx94PPCYAFk1zJckp+AeSEiVCKkxa+qnkA/SItyV XQxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=SbL2dW1QfQ+CyQTDJgcTi/qLjMFE5Hm5ssvxBaiakag=; b=Z7Z+MMELjxlzQzCqsivksAlTI17caIHV616kliKSGxj/JO7IqKJ2zlTuGBovneWjNC JfT3GjJS8l6bNwF5hSVAKAgtzFC1MndmJNQmcyxrxPcugTGKTM2CZGqPaJa35QfNylDA /aUxvpjLL5lk87g6qj0ue5bodNZ8XaJ0IRzo/yHYISmeH2/WBSXgVKqeqhCiQaFR8SAy KvqLgDCClkWOj8FLwG104Hf/V8D7bs77z0yqnI0/PJGy5rfJ8AXMyRVCAISWr/nl1kzx Wd9nUPe7Jz5T9gFhlqJTtx440FQ9HRq3XtIYPRhxFuDooqfTbv40OitUs9QlBJfXW6hD L5Cw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vo7vwJnO; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id p4si14517360iog.4.2021.02.28.15.29.33 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:29:33 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vo7vwJnO; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:42350 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVVE-0003zV-QR for patch@linaro.org; Sun, 28 Feb 2021 18:29:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43298) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPN-0005KD-0S for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:29 -0500 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]:34756) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPL-0007fD-AP for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:28 -0500 Received: by mail-pf1-x434.google.com with SMTP id m6so10282315pfk.1 for ; Sun, 28 Feb 2021 15:23:26 -0800 (PST) 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=SbL2dW1QfQ+CyQTDJgcTi/qLjMFE5Hm5ssvxBaiakag=; b=vo7vwJnOUBy3AXHollETtSZd5+/BQ42mggGxVn8fmG5zj0kCbooLCIMF+qKcPZ1x3N U1IOa+/2ON7stQY+I6LOcwSsI6QBCwQCQRvx/th7JnB5/KRYy42nrHyZumKjULMktzxM UdrgI88gpkqe2Tzgvg7U8D6+5ytIUkksLNLM1ZNn3OFbdVO3hEiXe4c1etufq2KNQfBF NpPzIRvSEGT6QgH8uz0oGV8FXvSQw+urxzIT9ZD2wQY6YZRLqlHuEyomTe+r/0/oyufw TtFgs/wdGGANqYBiYBkzxXCpinrRw6rc790hl+rJEkfeHJ/TjvJCz/QaoGHwsyMGbiPa upLg== 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=SbL2dW1QfQ+CyQTDJgcTi/qLjMFE5Hm5ssvxBaiakag=; b=KSXRn3UUEi4oDK4ogDxZl21u4AvPmzHbm0IENJeakIMG3hnKkjdCUV/aM5Dfdj9Ilu XZVIatU+ze9FB7rSE63PuhHbN8PiIrG8blBJxy/Dy7ctpIU0S0KMSX1ghNG8PWSfsZwu biUvZdGZ6kFbwCm9IWGuRC+hU8rRk8WAqNTA9PW80+ZNtmdqf1idWTPBT4tXlmaMjqxG W0gauoYrKPJoPTgm30IGfptxPbNpi7QeOb9QE1PUPTMolzmkcT5xgRKRTHIpMnObGWZ6 8KCx4eznM2BK8Q/x4eodOprRXTZqdgt0vRXlTE/l2YmSSvXFK7Ew0Om+tFoW6lrpT9+q PMdA== X-Gm-Message-State: AOAM530zsqLaEbELxEinw/y9OOqsp8W2hCI55e9EA120gf7OoMSi42SI GlICtUrUgySzcUc+Kkse+9gX1J0oVU1M8A== X-Received: by 2002:a63:36c4:: with SMTP id d187mr10068396pga.168.1614554605926; Sun, 28 Feb 2021 15:23:25 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:25 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 03/50] target/i386: Unify code paths for IRET Date: Sun, 28 Feb 2021 15:22:34 -0800 Message-Id: <20210228232321.322053-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 5703b253a1..59c1212625 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -6571,22 +6571,18 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 != 3) { + if (!s->pe || s->vm86) { + /* real mode or vm86 mode */ + if (s->vm86 && s->iopl != 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 */ From patchwork Sun Feb 28 23:22:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388441 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2913132jap; Sun, 28 Feb 2021 15:26:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJz9JSIHAi8XZCCJVBMe3gzuBtUg47xlvizUql9rMVmb5sci66LElx8sJwvwU10neME9tlNx X-Received: by 2002:aca:4c4d:: with SMTP id z74mr9341027oia.178.1614554814503; Sun, 28 Feb 2021 15:26:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614554814; cv=none; d=google.com; s=arc-20160816; b=vcA1Zx8Xm0ypmD4RmEurjDvaIxzeH1WY/AmqWJiiWwIru05zqaLt8HMapUw0OMjZ3E 06FnMZQ7quoGkA9NdQLTKWUPaUvWg0/tArgvd7aP9do16zBlg8Lb9RSwI4/7+5GtTxyI trJ+2aQq/Ez7PtjSfAGZdS9Vr2dIk/gjBKYHS8qY0jQHcbzXigBUBJyuTqjT523AQVY9 srGFe2/IZyOZcC6C0NLvtGQ03WMEuLoBfeFfHBlr5o2pbfoRJFG0OiVQia2AEI81r5E8 8jeI+h4Kr2Y3FihlYmXdsCloPciHKVL/YG3PjpRjlxnzfhfKyEwRGzKMr3KTNtVJn1yC 0P6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=ZE0p78tg8cxpd5a+CooQGkZB6FVAM4mBBizGWXSKr3w=; b=liwZGc5AdRY2shBZiRVFmHdwjCPjd+rLPDIIc66Lt903ApybZDSx2A3116wbpmSXdX QwO9pM/xIWMM/RIgrpHhCHBgrc5L10bnufH8PqipZvPnoFeaoYS+mQG/ytSsTXK0wwDZ YQaY9m2LjbnXJ/7wrwGrf/KqC0tCn/lclVv74gr7U5h7lHE9KKboEaEeQ67CbkQEdBWJ Fg2cJsz3TXVa38nMoN6kCKqrL39b3JKT4Dnqmqzoriuh5wQECkRCsUCs98xJhlkA9WnM hB4pd4xsaIDWossPYxH3QtAbS2GQQ9ZR0vBX8zM+exHGmZgrITdu2KMli2Zt6x4HIRwZ yB+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ofqfcp14; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x81si9755047oif.64.2021.02.28.15.26.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:26:54 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ofqfcp14; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:34212 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVSf-0000gr-U9 for patch@linaro.org; Sun, 28 Feb 2021 18:26:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43402) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPV-0005N0-Ez for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:39 -0500 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]:53176) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPL-0007fI-Rg for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:37 -0500 Received: by mail-pj1-x102c.google.com with SMTP id e9so7196681pjs.2 for ; Sun, 28 Feb 2021 15:23:27 -0800 (PST) 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=ZE0p78tg8cxpd5a+CooQGkZB6FVAM4mBBizGWXSKr3w=; b=ofqfcp149fg+tXklZk1tvv3QW/MRO1c0i5ZYWuW0YVC1ybeE9AhgrUg6Ojv0cbav+2 14JV9Gd8j5MOoE4v9KpxMlNf07L18PDJBpWkvK8Sq3efLDf6DaYXgYJU5MBuO94+GpDO A4s10xhYuMLDSQKdGA7UAu+aZuh7GcsiRshi8ftt+YQ9IOEpS6e7YSLDKt0Aq2OlDO/u ZxoLAwM1V3N8CYQ9nUhGT5t0nffZrK5DEtPpuXFzS4MfmIDH5ExG283H8tiDIzFt3Lru 5TvgtXHA4tNWm+H0aDdys9c/6uZvKVWy23RVdGLV8AuvDnjsJcS3ObPHhco/Zkl1+yoL 3IHw== 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=ZE0p78tg8cxpd5a+CooQGkZB6FVAM4mBBizGWXSKr3w=; b=TM0poSvyDWljEkOp2CcnaPVJdv/EIrgelobUXcalFJb+y+sb6zd08V8YJ2lYezEr0z y2ZtzUwaq8eDecJRKMR6eZt5aRA46fPzsaHXQxQZWcEgYEXnNJRaX7Sc4erelRJ7ulZ9 yypCEUSJim+8DFJUVaImL8baSvP4U50PqEXCjSWVYaq07zpF9HfAH30IO+D3ca9y/Q0f CVSFeXY+PriSkXf64NAz5Wi1Muh4v/2EElnc6PuWguumuX8IJGZSKQNlFStQKqtMhYQt 6l8JhNaf+IS93/l8X9DMNc/iYEOEAmoqL3mLcMAV78NVD/iOmZr4CtKoDjDk6fdJr8tU BwCw== X-Gm-Message-State: AOAM533w6ax6QiLDKmq0qd/AjRb5k2dnfIohCW2pxeWeSSDica/zpmtB I5hTYrI7w8+WYsZp8kOcnuqaX2o+f0QOFQ== X-Received: by 2002:a17:90b:253:: with SMTP id fz19mr7557602pjb.160.1614554606591; Sun, 28 Feb 2021 15:23:26 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:26 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 04/50] target/i386: Split out check_vm86_iopl Date: Sun, 28 Feb 2021 15:22:35 -0800 Message-Id: <20210228232321.322053-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 59c1212625..75ee87fe84 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; } +/* If vm86, check for iopl == 3; if not, raise #GP and return false. */ +static bool check_vm86_iopl(DisasContext *s) +{ + if (!s->vm86 || s->iopl == 3) { + return true; + } + gen_exception_gpf(s); + return false; +} + /* if d == OR_TMP0, it means memory operand (address in A0) */ static void gen_op(DisasContext *s1, int op, MemOp ot, int d) { @@ -6573,8 +6583,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 != 3) { - gen_exception_gpf(s); + if (!check_vm86_iopl(s)) { break; } gen_helper_iret_real(cpu_env, tcg_const_i32(dflag - 1)); @@ -6694,9 +6703,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) /* flags */ case 0x9c: /* pushf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_PUSHF); - if (s->vm86 && s->iopl != 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); @@ -6704,9 +6711,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0x9d: /* popf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_POPF); - if (s->vm86 && s->iopl != 3) { - gen_exception_gpf(s); - } else { + if (check_vm86_iopl(s)) { ot = gen_pop_T0(s); if (s->cpl == 0) { if (dflag != MO_16) { @@ -7066,9 +7071,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xcd: /* int N */ val = x86_ldub_code(env, s); - if (s->vm86 && s->iopl != 3) { - gen_exception_gpf(s); - } else { + if (check_vm86_iopl(s)) { gen_interrupt(s, val, pc_start - s->cs_base, s->pc - s->cs_base); } break; From patchwork Sun Feb 28 23:22:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388436 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2911929jap; Sun, 28 Feb 2021 15:24:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJyv7VBhyNPZPsayAeBIQSaWATp2kFzI3CIeQ0QywGP9NAm1afQdV9Sv9x1nKpl3d0aYSVVw X-Received: by 2002:a05:6602:2355:: with SMTP id r21mr10877245iot.62.1614554646747; Sun, 28 Feb 2021 15:24:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614554646; cv=none; d=google.com; s=arc-20160816; b=BuxJWvLg9BALBKgOcOJJJNhsmRrusX2aXoSf8TcjMBR0B1a/4eLPbihf/DTOizy0uW 23grJCjOAdLGDXW6Hc0ngirBg22+sWsWpZB5kdMLuM88r8ErcKU7q62b3C2N8otA/JQ9 4vUoku8iihN4lRBg0Zv0LHb7zIGqSAGeN2NtcLNvQyf6psD15suYCMcYJOCd90xAZU+W Gv+EKddtdnyDlZvTyJFmDp3ofRS7QZMPjfFVdQ+A3IRqHWkwmDY6G3n/dGr/vM0erDcR e9n3wclONgdv1wBqOmJbQoEahGF7vm1Ju7cZy/l3z5I+ua1g3qSjnF5qx/Qx3DoO6KRV MMlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=NEaEZZZxi9u9Mpvj5euEgFjoVxLuL6VRMYmG/p0WBKQ=; b=Tpf2d60PhEP3k2dxHVxmTJddG250Z2slEebiNF2IjIe/po5w891DYj72EbbtVKyDwP ouHeR2vcV+Jcet/bbND5xOCWBY5Og+GaIzKY9oFctLj2D/lqCZGFJxISWvOFxQ6EVmKO m8hs9XhGIfTrE0eiC+vEa/ZyjO3RimQNs77Ok/BvF+Qjy+u92wisK+wN7sYpJv1nVooG GsFvg1/DW83hmeO1GjU4HXaOzNDejhtq1x0zpK3x0SIhOl9IeL7A7PathvvVJ7SyHRnc JI3sqcga2rjGXQQBlCIeGJy0XjVL38mwlCsph4qQiZS11u1LR1kzcdqNVU9LfwwnNdes qOuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=wMvU1SFY; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f6si16100892ila.108.2021.02.28.15.24.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:24:06 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=wMvU1SFY; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:53628 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVPy-0005Mz-56 for patch@linaro.org; Sun, 28 Feb 2021 18:24:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43320) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPP-0005Lp-Lp for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:33 -0500 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]:32805) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPM-0007fX-Qv for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:31 -0500 Received: by mail-pl1-x632.google.com with SMTP id b8so5946898plh.0 for ; Sun, 28 Feb 2021 15:23:28 -0800 (PST) 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=NEaEZZZxi9u9Mpvj5euEgFjoVxLuL6VRMYmG/p0WBKQ=; b=wMvU1SFYqvML0Yvvpnz4MDtxEmy5RbGliZXWkKWWfACJC3iygiW4mJNHX8xvTdDgTn vM+gh+lRGFcGpBsQF0qWHjVDgotfip7cBc5+4dH/Uxe1jnnRhRPnrrJ8ql/yhunu/CZS 5+SH4fptblL3JBttyLlVtz8mLovQ1EgpCYnt5a+NFUPvXJ43nC2wgnfUjxRU0OCZYXRA 7LHM5LRuOmI2FfrZgweWL3YcUKW4RxrPo2B1745wULObCIaT0Ezqw3cO0YYaK+WdPyfh dXUAzZIV+LjHvCsf1prCMpHB+n5y77lqpWLN/AKV8hx1EpEuruxMHUXVSlK19G9cCbJ1 KCgg== 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=NEaEZZZxi9u9Mpvj5euEgFjoVxLuL6VRMYmG/p0WBKQ=; b=hXWMYCSf4cWCShIut4tjxSWGynA+NxBQeiI7APYrPSxgQ2f0s5TzEs1/jc8V09A6aa pEkJEN+i/qADieJRNfuEhGhs4pDRwUg+vAWMqRrxwMKuTPAjFC4nxRmEWYJr744SCfms qFhwu0N2ID6PWOkKU9FNaCnl61XCuN3XzTE2TnGwrCaOBZIcMEsiPPKVrgDvEoGWR/Ca C7PdjJJ7Lf94OGBsgk/BeX6Wz8CB9JjU3zfU1AxBHAUoed5sNZ8ybCzLal54PfuHJ+YX 6gaGtfGYi59hyq+nj7otiSZf2SuX4oM68p0wEfgS+gRNnnmB+RNMjYFiUwwnwSa0AM2G terQ== X-Gm-Message-State: AOAM533QvX9ZbUXU1CfrpIKuHYTdkOHAThGX1Fd08FfHEqtb4Wr6YbxI uN/EsTK/RGxHoLk+vWmPTr4SbW26K6b6lQ== X-Received: by 2002:a17:902:e8c4:b029:e2:b7d3:4fd7 with SMTP id v4-20020a170902e8c4b02900e2b7d34fd7mr12405476plg.73.1614554607551; Sun, 28 Feb 2021 15:23:27 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:27 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 05/50] target/i386: Split out check_iopl Date: Sun, 28 Feb 2021 15:22:36 -0800 Message-Id: <20210228232321.322053-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 75ee87fe84..176c95c02b 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; } +/* Check for iopl allowing access; if not, raise #GP and return false. */ +static bool check_iopl(DisasContext *s) +{ + if (s->vm86 ? s->iopl == 3 : s->cpl <= s->iopl) { + return true; + } + gen_exception_gpf(s); + return false; +} + /* if d == OR_TMP0, it means memory operand (address in A0) */ static void gen_op(DisasContext *s1, int op, MemOp ot, int d) { @@ -7089,28 +7099,16 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; #endif case 0xfa: /* cli */ - if (!s->vm86) { - if (s->cpl <= s->iopl) { - gen_helper_cli(cpu_env); - } else { - gen_exception_gpf(s); - } - } else { - if (s->iopl == 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 == 3 : s->cpl <= 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 */ From patchwork Sun Feb 28 23:22:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388445 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2914751jap; Sun, 28 Feb 2021 15:30:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJzAEvRXFIkL2uqZCFeuzeGAitTKSN0o+HiHdJzSk2TPKIC3TT4ywqahAtwYHLWmzMw3EBty X-Received: by 2002:aca:bc89:: with SMTP id m131mr8795532oif.128.1614555025654; Sun, 28 Feb 2021 15:30:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555025; cv=none; d=google.com; s=arc-20160816; b=AKFCTK/JSV/cRgb50L0TOre14q17+w/ksqgNlnHXCFWg/SXFo37WfkGsSGTfUY2dib Gf+0BWHgM9efkubDhb66Z2/UUvKzz4xvVJACWWNSv6wKiZHSGx3z7CddDW/zmYBAXpx7 jw8qSuYB6Uo1JXQx2+CDUwtectue0+Weef8zWoAgSMsc4gVCoeQ+CCC1KLDcSBgpxpF0 Cc9J1qANR2c/MPCR2EnlIHikgjexqyOQPHG3DPREnBo82N3J4CY30lew/PZExpAlcV5r sFCt/01DHo33hDH0ChDbLIqCdDOlFw73outNcSM6FEG+r6ok8w9ua+gAjoPV+0BAPNID hWPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=PE0gONUgFUTslg2sgwOR+ancA+fjobnB/g6thC/v3Pc=; b=rH5jnfa1c/P7wyuwKP2MaLGKfCK1ObHiBCzcAro7dhpkiap9+d1wgZvILDAfiWwHu1 Z2z0NEHJRGNyoJCrte65rEqBw1BPKa0lia+8EYWZMzrCKLEWYxxcoVEKdbl5Qwdzbdph czfzEEavd2BghgeT2LNEi8DTgDBzW7k8lsdDSoalbRqbeB5+tq7IlueoLOrqYyT7SQba 2/PCexw4XHU6TJd9i5tLdaqc/lCOnhvrxxcpumC9dfSMGQgzuByb1xbO1hiyu1UX41rK izMHu1iJHpA1KRtBlSUurUlFf9eH4nPRm8aWl2eX3e5fwfs7b3YRq5stWettbx8LgotU 4hRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="TwpxD/N2"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id c26si11405207otm.191.2021.02.28.15.30.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:30:25 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="TwpxD/N2"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:42508 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVW4-00043v-VI for patch@linaro.org; Sun, 28 Feb 2021 18:30:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43478) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPd-0005OH-5d for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:45 -0500 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:39150) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPO-0007gH-6A for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:43 -0500 Received: by mail-pj1-x1036.google.com with SMTP id d2so10478421pjs.4 for ; Sun, 28 Feb 2021 15:23:29 -0800 (PST) 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=PE0gONUgFUTslg2sgwOR+ancA+fjobnB/g6thC/v3Pc=; b=TwpxD/N2n8QZgvzAwqji763qycaXWiAjzAR/QJL38Ni/Gv2CtoCd5/dHH0CCeS/C3x ipH/nMUpEhNEP05DBYO3LQOcdxKDg5RGb2Ya89aSHka7H1+JQhrRrwbVf1bQ6zcXv68G T99aPgd00X0d6zxjtidDuVm7EGvhWQ2ikauyBJ9mzhzX2lMD5k+0EK4opyCs0+wp7ZrQ QaqzsLzKT/n60ztrbNDJxyl7UMr4wisAJJeUHzDM5no5K9kv5m89k3sHUOSwE5tsgP4/ M2YQf0pUDLOrp9G+tDiWEZfq0LXjI/FrBQYmW0jMPuPO0VDp034ZG1dW8UcUEnecLWlW 6BGA== 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=PE0gONUgFUTslg2sgwOR+ancA+fjobnB/g6thC/v3Pc=; b=e9ffMN79mojlCDMZun1EDTXjUH9j2sIsZcTqkiZ/CyxONvr/SbqrpZ4rt9MnPB0ebL ma+lgRtYNlquIM80Ysp+GXc0Kd1RVhR6ZuRD/HliiXeSt/icuq5uTTv95jM5Is9DDdER OfXoPvKNL9uxILDSteCcRfKup5t04bYcDoWbkz30wRGP0n/HgxOO1jxGr4Ghqs1CZve+ Nke5+OwOm1UVM3cA+AFzkhi5U72BZzoky2j4CmUN0Ryo5QbZTVOaG3MS3pzA0XreZpr9 Gjw2312vTJKCSebGCAGS/RhlvvL85MRxFK+jqZThEo9Klw2BrU8gt8/Ediauf6maxvzW Hyug== X-Gm-Message-State: AOAM533ruvacrdecK3ROvcGPwqp/WHkSBAdApO6U25VspGy6OJ0SrE0Q 8Iv/l13UeiX8kYhYM9PtCDyZyNkQmOqCpw== X-Received: by 2002:a17:90a:7309:: with SMTP id m9mr14266921pjk.23.1614554608592; Sun, 28 Feb 2021 15:23:28 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:28 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 06/50] target/i386: Assert PE is set for user-only Date: Sun, 28 Feb 2021 15:22:37 -0800 Message-Id: <20210228232321.322053-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 69 +++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 33 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 176c95c02b..8477797798 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -94,7 +94,6 @@ typedef struct DisasContext { target_ulong pc; /* pc = 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; +/* 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) != 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, target_ulong cur_eip, { target_ulong next_eip; - 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 == 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 @@ -5105,7 +5111,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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), @@ -5132,7 +5138,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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)); @@ -6565,7 +6571,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xca: /* lret im */ val = 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), @@ -6591,7 +6597,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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; @@ -7230,7 +7236,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) /* For Intel SYSENTER is valid on 64-bit */ if (CODE64(s) && env->cpuid_vendor1 != CPUID_VENDOR_INTEL_1) goto illegal_op; - if (!s->pe) { + if (!PE(s)) { gen_exception_gpf(s); } else { gen_helper_sysenter(cpu_env); @@ -7241,7 +7247,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) /* For Intel SYSEXIT is valid on 64-bit */ if (CODE64(s) && env->cpuid_vendor1 != 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)); @@ -7260,7 +7266,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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)); @@ -7295,7 +7301,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) op = (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, @@ -7304,7 +7310,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7314,7 +7320,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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, @@ -7323,7 +7329,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7334,7 +7340,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7452,7 +7458,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; 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)) { @@ -7476,7 +7482,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; 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)) { @@ -7488,7 +7494,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; 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)) { @@ -7502,7 +7508,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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)) { @@ -7515,7 +7521,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; 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)) { @@ -7529,7 +7535,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7538,7 +7544,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; 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)) { @@ -7705,7 +7711,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) TCGLabel *label1; TCGv t0, t1, t2, a0; - if (!s->pe || s->vm86) + if (!PE(s) || s->vm86) goto illegal_op; t0 = tcg_temp_local_new(); t1 = tcg_temp_local_new(); @@ -7753,7 +7759,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) { TCGLabel *label1; TCGv t0; - if (!s->pe || s->vm86) + if (!PE(s) || s->vm86) goto illegal_op; ot = dflag != MO_16 ? MO_32 : MO_16; modrm = x86_ldub_code(env, s); @@ -8455,9 +8461,13 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) DisasContext *dc = container_of(dcbase, DisasContext, base); CPUX86State *env = cpu->env_ptr; uint32_t flags = dc->base.tb->flags; - target_ulong cs_base = dc->base.tb->cs_base; - dc->pe = (flags >> HF_PE_SHIFT) & 1; + dc->cs_base = dc->base.tb->cs_base; + dc->flags = flags; + + /* We make some simplifying assumptions; validate they're correct. */ + g_assert(PE(dc) == ((flags & HF_PE_MASK) != 0)); + dc->code32 = (flags >> HF_CS32_SHIFT) & 1; dc->ss32 = (flags >> HF_SS32_SHIFT) & 1; dc->addseg = (flags >> HF_ADDSEG_SHIFT) & 1; @@ -8468,7 +8478,6 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) dc->tf = (flags >> TF_SHIFT) & 1; dc->cc_op = CC_OP_DYNAMIC; dc->cc_op_dirty = false; - dc->cs_base = cs_base; dc->popl_esp_hack = 0; /* select memory access functions */ dc->mem_index = 0; @@ -8485,7 +8494,6 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) dc->lma = (flags >> HF_LMA_SHIFT) & 1; dc->code64 = (flags >> HF_CS64_SHIFT) & 1; #endif - dc->flags = flags; dc->jmp_opt = !(dc->tf || dc->base.singlestep_enabled || (flags & HF_INHIBIT_IRQ_MASK)); /* Do not optimize repz jumps at all in icount mode, because @@ -8499,11 +8507,6 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) additional step for ecx=0 when icount is enabled. */ dc->repz_opt = !dc->jmp_opt && !(tb_cflags(dc->base.tb) & CF_USE_ICOUNT); -#if 0 - /* check addseg logic */ - if (!dc->addseg && (dc->vm86 || !dc->pe || !dc->code32)) - printf("ERROR addseg\n"); -#endif dc->T0 = tcg_temp_new(); dc->T1 = tcg_temp_new(); From patchwork Sun Feb 28 23:22:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388447 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2915291jap; Sun, 28 Feb 2021 15:31:31 -0800 (PST) X-Google-Smtp-Source: ABdhPJymXDfpZwZ+pTayq6DcCjlbRvMdFUi2tgrG+RX4PVKhmKwQMAy+NL85n0wyE/FoQ1ajphWY X-Received: by 2002:a02:9042:: with SMTP id y2mr13153436jaf.94.1614555091625; Sun, 28 Feb 2021 15:31:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555091; cv=none; d=google.com; s=arc-20160816; b=NhYZQPn/qYJz8xIsQ+wVZEM8GDYnzsI2VOEs5eVMF65GLAx4YTIK9o7982jc5uOf8C FpHJLQsht0jq/V41t525ITYsa6quMAjwHw4U1wEOuVloFdJ9P6HBqwooJefI3wvWGpdv OI5T5FyRsfGhmSLJ50YOZQDbQsQ2jdYSrIodj11onPaAcQDjf8O9Ru5ePHea5PzgSi/o RWSoycEiqsRQH+r+Vw0YXNrFpdsgAJf0cH9VZQ7NRrClGCo0/sZxtgOKf6HvMlmxF4tz TJ4FkACi839Yi50JeDI4CZ28tyMSiyz/NH6zKANJSUaHSFuLwHiHZQc1MIUqDV7XFEVL 6Z4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=2lVqd1cQpVS6zKY/b1lWZlDMmczfFQ2/DuAywSqLT2k=; b=vIU3Qp4b75fBeqYctATZxNqFWpJGr9Z2OnjlLXxtOjlLFnOpfPKKnn9jOJ6aV9teaG WdHecO2bBMVc8E+6MdZzN/X+BrOfc56/puCy3Cf4+xnfC9VR1VH7ElAhY4SibdYw1H0V bbY8PqBNByDd119Ne6g+YU9BlbRztIbNFZDJLAdggfEoPhJSUAv22QNcmW16tSxhCuM5 HaddncBuni8gcOy6jABfktd5kRJu/+u9cAdDhjInaB8+IcMan/Ifqh+VIHAXEt9YrB+e IhtuwhBF3UJJOdhTnC/+WaZDz7WpxHqvtYjeq5NnIPFECOJjMBK3eI/ksM0QE8045VO9 mjiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="HlJ/J49H"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x13si14285400ior.92.2021.02.28.15.31.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:31:31 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="HlJ/J49H"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:50630 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVX8-0007XB-VR for patch@linaro.org; Sun, 28 Feb 2021 18:31:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43382) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPT-0005MU-GN for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:37 -0500 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]:35874) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPP-0007gw-DN for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:33 -0500 Received: by mail-pg1-x52b.google.com with SMTP id t26so10374354pgv.3 for ; Sun, 28 Feb 2021 15:23:30 -0800 (PST) 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=2lVqd1cQpVS6zKY/b1lWZlDMmczfFQ2/DuAywSqLT2k=; b=HlJ/J49HgLTj9nLHr+z4WxdnSUIXWx/j21Y3nTp4zJqeSblqJRJ+LqhMabEVylA8EI 1dQY5XCLEEjpWc2Vbv30STY2KQVQjcBw7pUvKiYXXcvILWsagvyJ3zgOxSwDUPBwjqKm 2PDjHUOPOsnMYtiSMSGIyXmAVXlqJsrN6M+/nVj7ZWsqYym//D8xWZs6rF8dgYJumzl+ YWcXCXDJVSMZBPdOY1rl8+DSiT5K0DSPirYbnXGUzeVDraM/gHUc1LoW5OgS9yBUszpS baA1MLR+G1jeImnVh5LDFfCplUoFEPBjyOjP4D1gdVtDKvP83N8t6ZB6QCWNWXwwWk8N ynCA== 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=2lVqd1cQpVS6zKY/b1lWZlDMmczfFQ2/DuAywSqLT2k=; b=lwgw5joeDvJTb0KRvGSE+etZguUtFYh2liUO/2SnbgANDa0H7ghzwsbzVAD38ScSTw MGk5YK6JX3N+y2n79OyaNF3eGO08c90i2LIqmHjsUdaaNxGcFLUOhkKbA1JtzBYRoQ5H NcBkcdv0sQhSKd6pnvlhah0F1rFtp9aw0jAarLdzOh6MwkB4TrWtegNAVIb+eRuug1T1 RukBJwvnZUQEIbb0ehXWuUr9yH/jDQ1rtLwClmp0GTB/lkQ9DYWb+YEjDkFSmOElm6f1 seFiKFETjXA+a6bT0e3kzQOI6X80ZPKbSChyQYErSwWnSlb9jaw4hgrMW96SZEHaaynP G6zg== X-Gm-Message-State: AOAM531PvSw35y87PnD0hVBsk5DXEMTwgxbGycxBLqJyW4P5ZNq68/Ag e5otOK5jUxMGtG7ZA6IYmaA5Qb/IDR8S3w== X-Received: by 2002:a63:fa50:: with SMTP id g16mr11745645pgk.86.1614554609591; Sun, 28 Feb 2021 15:23:29 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:29 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 07/50] target/i386: Assert CPL is 3 for user-only Date: Sun, 28 Feb 2021 15:22:38 -0800 Message-Id: <20210228232321.322053-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" A user-mode executable always runs in ring 3. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 8477797798..50dc693edc 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -94,6 +94,11 @@ typedef struct DisasContext { target_ulong pc; /* pc = 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) != 0) +#define CPL(S) ((S)->cpl) #endif static void gen_eob(DisasContext *s); @@ -623,7 +629,7 @@ static void gen_check_io(DisasContext *s, MemOp ot, target_ulong cur_eip, { target_ulong next_eip; - 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 == 0; if not, raise #GP and return false. */ static bool check_cpl0(DisasContext *s) { - if (s->cpl == 0) { + if (CPL(s) == 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 == 3 : s->cpl <= s->iopl) { + if (s->vm86 ? s->iopl == 3 : CPL(s) <= s->iopl) { return true; } gen_exception_gpf(s); @@ -6729,7 +6735,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) gen_svm_check_intercept(s, pc_start, SVM_EXIT_POPF); if (check_vm86_iopl(s)) { ot = gen_pop_T0(s); - if (s->cpl == 0) { + if (CPL(s) == 0) { if (dflag != MO_16) { gen_helper_write_eflags(cpu_env, s->T0, tcg_const_i32((TF_MASK | AC_MASK | @@ -6744,7 +6750,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) & 0xffff)); } } else { - if (s->cpl <= s->iopl) { + if (CPL(s) <= s->iopl) { if (dflag != MO_16) { gen_helper_write_eflags(cpu_env, s->T0, tcg_const_i32((TF_MASK | @@ -7374,7 +7380,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xc8: /* monitor */ - if (!(s->cpuid_ext_features & CPUID_EXT_MONITOR) || s->cpl != 0) { + if (!(s->cpuid_ext_features & CPUID_EXT_MONITOR) || CPL(s) != 0) { goto illegal_op; } gen_update_cc_op(s); @@ -7386,7 +7392,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xc9: /* mwait */ - if (!(s->cpuid_ext_features & CPUID_EXT_MONITOR) || s->cpl != 0) { + if (!(s->cpuid_ext_features & CPUID_EXT_MONITOR) || CPL(s) != 0) { goto illegal_op; } gen_update_cc_op(s); @@ -7397,7 +7403,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xca: /* clac */ if (!(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_SMAP) - || s->cpl != 0) { + || CPL(s) != 0) { goto illegal_op; } gen_helper_clac(cpu_env); @@ -7407,7 +7413,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xcb: /* stac */ if (!(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_SMAP) - || s->cpl != 0) { + || CPL(s) != 0) { goto illegal_op; } gen_helper_stac(cpu_env); @@ -8461,19 +8467,23 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) DisasContext *dc = container_of(dcbase, DisasContext, base); CPUX86State *env = cpu->env_ptr; uint32_t flags = dc->base.tb->flags; + int cpl = (flags >> HF_CPL_SHIFT) & 3; dc->cs_base = dc->base.tb->cs_base; dc->flags = flags; +#ifndef CONFIG_USER_ONLY + dc->cpl = cpl; +#endif /* We make some simplifying assumptions; validate they're correct. */ g_assert(PE(dc) == ((flags & HF_PE_MASK) != 0)); + g_assert(CPL(dc) == cpl); dc->code32 = (flags >> HF_CS32_SHIFT) & 1; dc->ss32 = (flags >> HF_SS32_SHIFT) & 1; dc->addseg = (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st = 0; dc->vm86 = (flags >> VM_SHIFT) & 1; - dc->cpl = (flags >> HF_CPL_SHIFT) & 3; dc->iopl = (flags >> IOPL_SHIFT) & 3; dc->tf = (flags >> TF_SHIFT) & 1; dc->cc_op = CC_OP_DYNAMIC; From patchwork Sun Feb 28 23:22:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388442 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2913441jap; Sun, 28 Feb 2021 15:27:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJwdex3Ds9YbDPdxLqZS1aEgUeHlS2A9kRtVX6mo4H6dHV8UQ52Z1842l5y7j6wZaf75HAEj X-Received: by 2002:a6b:5112:: with SMTP id f18mr9143946iob.196.1614554859953; Sun, 28 Feb 2021 15:27:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614554859; cv=none; d=google.com; s=arc-20160816; b=qeTGC7mRkabsZOVQ5mnWymvjfBjwgcS53rT1kfDWxitKEQYPyHIXUp79S5hthI+gt0 LhQj9uLowIBeXFEK5AgSYOl4ex5aH129kZokEot603z6WxnD1Tav0z2r64wVbk4MgO/Q KIjB8/4SPohzcF40rQGokkr70rn97cxaocCvJ/PjFrami9iaxpmDONe9Z966i2+WW/RB V0F3rX1myxaBJOd7tEQA703HLHqpIo3WTKJfpK3PJBKY1uKOmDHYqNbko8alN67fcSK3 xny75hKW5KndQztEezcO0lKEy6Zsm07Td7RXYFE8Ld06BPe5mVXm60D5u/+dOjaE5937 6Plw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=NSyzwXdepOJtmog9MVMDw1s/eSNq+uZi1xq2Xphvsqo=; b=AC1IN2Aaq3cAmpPneVIWGjCAN6Y4W0NPqialk9HYNdRvkOV+JfV3fMhoUZ0BRax2rg q/batNtQWNBiWaYhYKaOxmxo2DpZZZPGvLSI0iRpriNbtJyekuOsxePmJevZe83ILs0d ifqMRbcHUi6pYW4dwvxxgnH8LUP1V+QULElTlx1GiJESd9mpYL0u+AUIF2UXU99c2GxP SzbJ9uUvT+LQxWf2xThiKjuMFqx1uQRoPeLJcA2JOjqLLCCbCYaTIb1gfO6YXQBYqIDm npIT3zSsBbDnvtW78jZKVOrrB1e7SPqb07OFXVWqTgOZKyXGo9zvOduckFZyIY7WJXTA K86Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="gHbr/9FO"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id n12si8613200ilk.3.2021.02.28.15.27.39 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:27:39 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="gHbr/9FO"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:34094 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVTP-0000e7-Bq for patch@linaro.org; Sun, 28 Feb 2021 18:27:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43436) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPZ-0005Nn-9U for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:42 -0500 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:38896) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPQ-0007h2-NK for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:41 -0500 Received: by mail-pj1-x1031.google.com with SMTP id l18so10481401pji.3 for ; Sun, 28 Feb 2021 15:23:31 -0800 (PST) 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=NSyzwXdepOJtmog9MVMDw1s/eSNq+uZi1xq2Xphvsqo=; b=gHbr/9FObM/39IcDAecbZG9XYIvp+Z8jBI7hYvQXX5Wr/YCXw7lARRTwV4iBOe+7sq KRPS4ZUVqYO1hdV+I0vRkCYg09/zXZAlWKsRIkhPRsXuM4bhYygF5fP01BiT5I1zP/EO 1QDuoKC05Y0SwPE5edi76YmYnRNC3JPS8bkjR8wIK59yGPUdBaj6SkCcLx8+ekRXbcqH QF3Z6o9pzbDj1Gba8bbyxKm8tSLaMHVjINoM6Xj+XabzpPxImYuYXWa4ESs0KRTLdfCD PuKzToH2yOg0MsN38g1SutMgJgRl8SJXYzNjJrrzKg8YXDWw6mi6OJLLbttxibMu276I 6mcQ== 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=NSyzwXdepOJtmog9MVMDw1s/eSNq+uZi1xq2Xphvsqo=; b=nBLEH8QBpxsGRQULoeVcr11btHjec/GlIy7+ufb/S86RIEYT2OnxRI+Rayeer+mdBb 3jt8GJuv1VRZ8Tyfpq2D8aZPyx1ExANDbr06QVnPNeoX0pthchghwJvlJpvBTRxySLq8 VBZ6wfYaZ1SBcQyMD/hnjoGmGVothCTUt5IVKeNQLOalFP6cCSLDlsZ5+K9YDPBWTkbc oTkNw3Zok6JumBxvT8FP/b1eGrQO8FZdpmRvMIg38tnPFj4qJZXHK8GQw7cRlSVPIZjf kG60BXoTQd1iFG7jaR0tYpNKC9l1JDy3oxcIuhTfiPRft+4CrYZ/WnnsZ7eFaT/eDLan 7V+A== X-Gm-Message-State: AOAM531QltNFE+Yt+fx1uGArTz2u/JGc3KUiPJY75PQskUMXF5vbHH3C U9kVte4nkmOJAdVm23icSQjbZd4dNrMOIQ== X-Received: by 2002:a17:902:ed94:b029:de:8844:a650 with SMTP id e20-20020a170902ed94b02900de8844a650mr12808202plj.56.1614554610604; Sun, 28 Feb 2021 15:23:30 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 08/50] target/i386: Assert IOPL is 0 for user-only Date: Sun, 28 Feb 2021 15:22:39 -0800 Message-Id: <20210228232321.322053-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 <= IOPL are false for user-only. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 50dc693edc..5f24615826 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -97,6 +97,7 @@ typedef struct DisasContext { #ifndef CONFIG_USER_ONLY uint8_t cpl; /* code priv level */ + uint8_t iopl; /* i/o priv level */ #endif 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) != 0) #define CPL(S) ((S)->cpl) +#define IOPL(S) ((S)->iopl) #endif static void gen_eob(DisasContext *s); @@ -629,7 +631,7 @@ static void gen_check_io(DisasContext *s, MemOp ot, target_ulong cur_eip, { target_ulong next_eip; - 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 == 3; if not, raise #GP and return false. */ static bool check_vm86_iopl(DisasContext *s) { - if (!s->vm86 || s->iopl == 3) { + if (!s->vm86 || IOPL(s) == 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 == 3 : CPL(s) <= s->iopl) { + if (s->vm86 ? IOPL(s) == 3 : CPL(s) <= IOPL(s)) { return true; } gen_exception_gpf(s); @@ -6750,7 +6752,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) & 0xffff)); } } else { - if (CPL(s) <= s->iopl) { + if (CPL(s) <= IOPL(s)) { if (dflag != MO_16) { gen_helper_write_eflags(cpu_env, s->T0, tcg_const_i32((TF_MASK | @@ -8468,23 +8470,25 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) CPUX86State *env = cpu->env_ptr; uint32_t flags = dc->base.tb->flags; int cpl = (flags >> HF_CPL_SHIFT) & 3; + int iopl = (flags >> IOPL_SHIFT) & 3; dc->cs_base = dc->base.tb->cs_base; dc->flags = flags; #ifndef CONFIG_USER_ONLY dc->cpl = cpl; + dc->iopl = iopl; #endif /* We make some simplifying assumptions; validate they're correct. */ g_assert(PE(dc) == ((flags & HF_PE_MASK) != 0)); g_assert(CPL(dc) == cpl); + g_assert(IOPL(dc) == iopl); dc->code32 = (flags >> HF_CS32_SHIFT) & 1; dc->ss32 = (flags >> HF_SS32_SHIFT) & 1; dc->addseg = (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st = 0; dc->vm86 = (flags >> VM_SHIFT) & 1; - dc->iopl = (flags >> IOPL_SHIFT) & 3; dc->tf = (flags >> TF_SHIFT) & 1; dc->cc_op = CC_OP_DYNAMIC; dc->cc_op_dirty = false; From patchwork Sun Feb 28 23:22:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388450 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2915569jap; Sun, 28 Feb 2021 15:32:07 -0800 (PST) X-Google-Smtp-Source: ABdhPJyVn7BCxXzsAG2sjE6cXuN9JyinpsGTtDfzcEe5d3t4dwIFiL8vlgYUxQQQzPw1PZ3Iy6Vj X-Received: by 2002:a05:6820:255:: with SMTP id b21mr10484178ooe.0.1614555127170; Sun, 28 Feb 2021 15:32:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555127; cv=none; d=google.com; s=arc-20160816; b=rJ3ztR+Yf4UrTBwkTegQr8C/BSbMlcl80v//b5QCQUPMfGhOzj47CeULi+rmLFGXPU q1aGN8+zBS4KOLm8UkI4WIX6oqbg3fAvEjlL7HhooLs0U00cZDrZBfOccMlmw7khzqAX vLm7SoztAjW8MjdHQ6ouXklX5YJ8uSLyKPAsAbmGFLlqEa6Z54J8e+ckI/HV17gSBkag vi8MdrC8a2FZhBrB3dehVgQYShfcmpNTMXtAU93zD2hAXFRqpgz6Fr7ZJmIMSbxm6Is4 k8rnjsbkovuacz+UvdMbl7JbUhBHT13hGaQQWlLUjTBdUrZmlfrdWisMYk6ustlmVk7D ZiDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=87aQkAhQ1r5VYsTamlPm4Aatahw/X8GlcsAtVHfX6hU=; b=FOiRqfvUiHlRwN94SuzLSx3tLPhtcTBVgtN0v0o9uxub7Mn40b8AyURodrzWqGz/y7 +dCnIlkJJTrfOIMKSVF80vyzXTV8j0nk9OOkvYOleCS41Y117gqkjGyi4l81lkW0I9fj E7ohXUZVDeKnoEXPZmxSKrC5U/qNdN3IFIbHsbDONlAwbrlqRe0BE52acfSKydAT4T7J V+E+eB08F2w5xSYqFwieLVOL1babjHeYYMDMf1EMK6S4HviLUgeYoPmsq+ipj7BqLmIz vw8lsdneK1GKXVZvjbFCM+wqMd8AQr00og/6ONjJM1Vey09URsMn4Qs2S+yvW/V+JBHl 2Zng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=fgeJQVQj; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id u2si13321245oth.64.2021.02.28.15.32.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:32:07 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=fgeJQVQj; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:50960 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVXi-0007fa-CI for patch@linaro.org; Sun, 28 Feb 2021 18:32:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43502) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPe-0005Ob-IV for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:48 -0500 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]:46691) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPR-0007hC-DB for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:45 -0500 Received: by mail-pl1-x62c.google.com with SMTP id u11so8744801plg.13 for ; Sun, 28 Feb 2021 15:23:32 -0800 (PST) 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=87aQkAhQ1r5VYsTamlPm4Aatahw/X8GlcsAtVHfX6hU=; b=fgeJQVQjAOGjUDxXpoJ1t2v126QVJbgIb/VY1+lbR3slO0bxnkEX5FRezfg0V838Tw pp5yIwLCuEiXplxJT5UnEinblJnV0YOaHC7YayHdB8+f6zebF9iDVtk0+ZLZnA2T2L/z KFoFT2el6ds9PBaBU55pkfAfwM1c49eYsp6zND71gZYQx/oi68yXMPHfHSEXNzj1wZC9 WcmBdMrBh2Fti8TgXytU9X9hT+/GSdRAVb4b0qu+LScmaxYK09UE52jWn8Xy3AM8qnKu dToaTKAHqgIRKsAw4imh5j4+BYziqieXfM3FDFI+YeNjQdD6Fa7puaJfTOLoN8IS8IMn 6YWg== 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=87aQkAhQ1r5VYsTamlPm4Aatahw/X8GlcsAtVHfX6hU=; b=nsXHCOfPPJKzapBe0EjVUeIb9NTyCLoN28ytFLaY1AUEz+NTLkpVxSijoxuM7PybHT mXOS85bTUOW21YNvEjrVa9O0D6uRC2ayi7eENR0fn2bh/Qmly5BGEDXgZQNQqJG/VTNq PySQKoEdpMg5SCKcwoUuFtxfuePTinIFAujf5lvHF0JMuWPO+etqWeh3d8NHzrc+TvEt DgutmJhLYtgF11Iuu/N8lGigNFxGWFvtSNV9IbIuEQ9iwDT6Iq6rVqF8eLxQQ39Jmetq zR6YJyfLwwaKH+Nuqb+hJT57b+1do5ch0Fji+cYg+RrBb+DB8+0zXOHCgFg4fe9Vj1Zx pOeQ== X-Gm-Message-State: AOAM531G4J76rEY4T81ugw/oQcSoOH16TsYPwJqld0Ezk84o1G+Rswxa rj7MSxkMbIjD5tljkCIOdxROI5K2ExabXQ== X-Received: by 2002:a17:902:b609:b029:e3:4b8d:994 with SMTP id b9-20020a170902b609b02900e34b8d0994mr12687770pls.44.1614554611662; Sun, 28 Feb 2021 15:23:31 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:31 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 09/50] target/i386: Assert !VM86 for x86_64 user-only Date: Sun, 28 Feb 2021 15:22:40 -0800 Message-Id: <20210228232321.322053-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 40 ++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 18 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 5f24615826..0e4f34f201 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) != 0) +#endif 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, target_ulong cur_eip, { target_ulong next_eip; - 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 == 3; if not, raise #GP and return false. */ static bool check_vm86_iopl(DisasContext *s) { - if (!s->vm86 || IOPL(s) == 3) { + if (!VM86(s) || IOPL(s) == 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) == 3 : CPL(s) <= IOPL(s)) { + if (VM86(s) ? IOPL(s) == 3 : CPL(s) <= 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 == 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, CPUState *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] = { 0, PREFIX_DATA, PREFIX_REPZ, PREFIX_REPNZ }; @@ -5119,7 +5123,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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), @@ -5146,7 +5150,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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)); @@ -6579,7 +6583,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xca: /* lret im */ val = 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), @@ -6605,7 +6609,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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; @@ -7309,7 +7313,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) op = (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, @@ -7318,7 +7322,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7328,7 +7332,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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, @@ -7337,7 +7341,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7348,7 +7352,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7719,7 +7723,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) TCGLabel *label1; TCGv t0, t1, t2, a0; - if (!PE(s) || s->vm86) + if (!PE(s) || VM86(s)) goto illegal_op; t0 = tcg_temp_local_new(); t1 = tcg_temp_local_new(); @@ -7767,7 +7771,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) { TCGLabel *label1; TCGv t0; - if (!PE(s) || s->vm86) + if (!PE(s) || VM86(s)) goto illegal_op; ot = dflag != MO_16 ? MO_32 : MO_16; modrm = x86_ldub_code(env, s); @@ -8483,12 +8487,12 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(PE(dc) == ((flags & HF_PE_MASK) != 0)); g_assert(CPL(dc) == cpl); g_assert(IOPL(dc) == iopl); + g_assert(VM86(dc) == ((flags & HF_VM_MASK) != 0)); dc->code32 = (flags >> HF_CS32_SHIFT) & 1; dc->ss32 = (flags >> HF_SS32_SHIFT) & 1; dc->addseg = (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st = 0; - dc->vm86 = (flags >> VM_SHIFT) & 1; dc->tf = (flags >> TF_SHIFT) & 1; dc->cc_op = CC_OP_DYNAMIC; dc->cc_op_dirty = false; From patchwork Sun Feb 28 23:22:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388444 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2914747jap; Sun, 28 Feb 2021 15:30:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJwWSql8mpDz23lDQI5lftd9H4y68/3S86KlivIi2OboN6rbxNCD6Bb1hMrYoigicJQ7HLgL X-Received: by 2002:a05:6638:38a6:: with SMTP id b38mr13251823jav.49.1614555025456; Sun, 28 Feb 2021 15:30:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555025; cv=none; d=google.com; s=arc-20160816; b=lfWF8lHgkFzF3Mr67R73Zpg+DLdgUnroov5jZDjm/e12x0OrvBOPXM+YTuzClV7QOc BgwHzFVrQzNp6iqHgrXZEuWzGjWMv8RImfYtZvkdTW5AS7b6yCAvQiHjHqfya4CKYHjG Rq5ZNVUUawRkiTl2rFUF8eTAL8WuUrqb+ps1GHibohU6Yln6qZV59PSPe1a2EtEGOxD4 U/2YKOsmrtB7nU7cmywgBiwHt0m2U2HuSAGmPMjtOYqscCXPQtDHGfq0O/99O9j3YW2c V/f9L80n43tmMt8U7zquvoOaCpxW3hamzfdNknPuqOWGIytYZxwmsBnVhXjcRy1VPNyh Rtiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=QDVFGxFwrmBHnWFNAj8HT9b7D+hlCMSrCwvbH/K9RpM=; b=Rl5liyLJlfJDIpaNVYTi4oSrvZpXVhE79nkVyr4QKdnz2GjinGrnF7Y50BGlWcO4LU ZVKn5rb2sDHaouBYbJZOKMtUrLz67Tb++aSuw0/TKZDTMJNZ7OfMSNAOaJMAXCF/MYF0 f6wwovO402qHx2SRJJpkJymxENojJxLRpS3LvIn+lhbGFPtYGo1WPmlXMvmT2k9JjWpm ctszyKHOYhZUWN2PCyGEeo8M10fR6lmoi0h7NpAIcL/ES77uxnZhE3oF7HgOVEnUTSy5 WCbsKZmdrdxs81BwACtUV8F45sIi7nAwg7PZquYFmgi5LFJJLDq5cpanmHwJbxFSsjnc 9ktA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=eTrsJ5SE; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h17si5084617jaq.104.2021.02.28.15.30.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:30:25 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=eTrsJ5SE; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:42580 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVW4-00045h-LW for patch@linaro.org; Sun, 28 Feb 2021 18:30:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43520) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPg-0005PL-Ev for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:49 -0500 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]:54396) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPT-0007hL-55 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:48 -0500 Received: by mail-pj1-x102b.google.com with SMTP id i14so8243628pjz.4 for ; Sun, 28 Feb 2021 15:23:33 -0800 (PST) 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=QDVFGxFwrmBHnWFNAj8HT9b7D+hlCMSrCwvbH/K9RpM=; b=eTrsJ5SEEQaChT2lpyshsSNqlRY7I1a33ZXbSVZnnTCJb29YbYx7IU9F7QT4t4uPk/ M10VwZR+11DGTWU9pKNMoxIcDhZ8RDktkwtst/0k8fAovKg9aQwcp9V/Y9YiSeNSUOka MBliu/BzdOBSI3Z8WM4uYTgJl8205tqSrvNIrZD8sKkBpsJL2yiTUjEAW7rIS03/MBRO ihb7pq9ILvRA/cORK59aNqBEIgwBpfa6zK5C6x8vmZFqX3Ei+mV5E7H3suHxcB56BQTE ZtTcVmNHhHLEu4T23QZxNN5zEFwnui1EzHqKrq+kPQvcHtav387RuHN/t9IIFKk3CoB9 s57A== 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=QDVFGxFwrmBHnWFNAj8HT9b7D+hlCMSrCwvbH/K9RpM=; b=L+BP5F1twExyNBzeIIDDMFaOuYwGD/WuOByBVYg6PvKKJbjNiWdhoo9sGhOXjW0xOV z8eH7LVzfYC4ialNQQdqAwfnayOrbvqw4GH0ebP+Iyh2gbbkagZjFB5RYAj8nVdFurER OynrgWnLE6SAtQGG0ihxw2aO/tz+ug9R0XOt3h3WKDDYAGx6jx4WSxzBflY00E/SuIhN 68M6bzi26gM1iRolY81KZLE4N8JEFTtAfD2Zckt78Ey7pMByLq7KvNnTmnM/B6r+K9VZ PVWcpVFjJxxjzkVxwJRuvmjGGki1cfS1U231NpG+ddSHmbzPZUmVRFOtyR1dhm0f4qtQ Kgpg== X-Gm-Message-State: AOAM531mxMbpityjhjd/bWmrFV8CJUN8OvGQAPyl11vtpZEnyX5F3r9h 610FYq6x0F0NITRoucc9XGr8+0I3yOeSbg== X-Received: by 2002:a17:902:ab8f:b029:e1:8334:c845 with SMTP id f15-20020a170902ab8fb02900e18334c845mr12859210plr.55.1614554612450; Sun, 28 Feb 2021 15:23:32 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 10/50] target/i386: Assert CODE32 for x86_64 user-only Date: Sun, 28 Feb 2021 15:22:41 -0800 Message-Id: <20210228232321.322053-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" For user-only, CODE32 == !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 --- target/i386/tcg/translate.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 0e4f34f201..d46ebc1dc2 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 - 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) != 0) +#define CODE32(S) (((S)->flags & HF_CS32_MASK) != 0) #endif static void gen_eob(DisasContext *s); @@ -2370,7 +2371,7 @@ static void gen_movl_seg_T0(DisasContext *s, X86Seg seg_reg) because ss32 may change. For R_SS, translation must always stop as a special handling must be done to disable hardware interrupts for the next instruction */ - if (seg_reg == R_SS || (s->code32 && seg_reg < R_FS)) { + if (seg_reg == R_SS || (CODE32(s) && seg_reg < R_FS)) { s->base.is_jmp = DISAS_TOO_MANY; } } else { @@ -4619,7 +4620,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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] = { 0, PREFIX_DATA, PREFIX_REPZ, PREFIX_REPNZ }; @@ -4686,13 +4687,13 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) aflag = (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) != 0)) { + if (CODE32(s) ^ ((prefixes & PREFIX_DATA) != 0)) { dflag = MO_32; } else { dflag = MO_16; } /* In 16/32-bit mode, 0x67 selects the opposite addressing. */ - if (s->code32 ^ ((prefixes & PREFIX_ADR) != 0)) { + if (CODE32(s) ^ ((prefixes & PREFIX_ADR) != 0)) { aflag = MO_32; } else { aflag = MO_16; @@ -8488,8 +8489,8 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(CPL(dc) == cpl); g_assert(IOPL(dc) == iopl); g_assert(VM86(dc) == ((flags & HF_VM_MASK) != 0)); + g_assert(CODE32(dc) == ((flags & HF_CS32_MASK) != 0)); - dc->code32 = (flags >> HF_CS32_SHIFT) & 1; dc->ss32 = (flags >> HF_SS32_SHIFT) & 1; dc->addseg = (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st = 0; From patchwork Sun Feb 28 23:22:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388438 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2911934jap; Sun, 28 Feb 2021 15:24:07 -0800 (PST) X-Google-Smtp-Source: ABdhPJz/BYup8Lm7qENEArrjl/svytk4BTXbuR5HaIRW4KZJubHMN4q+NAW5C75BQGnaGFkN1oMe X-Received: by 2002:a92:730a:: with SMTP id o10mr11004629ilc.160.1614554647557; Sun, 28 Feb 2021 15:24:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614554647; cv=none; d=google.com; s=arc-20160816; b=M+Wvy1I7JohIPDdSgaaq4EZk7w83bOYiofDLtgX0nneu9Wrc4Q+VY8Vwwor4U4AEey 6+nKZiPBQaIuPm2xeuvHNRCp708any9qALoskb1oxGYTmdLTndnDcrXonzRTXxDMA+oy ZQ4HzVhWmncUVBANdIiTjy5zCNQGlvjHFT1oJunx8CwOCcPva11ncK++iAyX9Wuqth/1 988r2UsFWNCJJwLx6WrI3ddgUzOdAsQ7rI6l2IXqBvvD/uob4IAfWyToSzsYNfAa63W8 0B+gxvET3as2bFC5wOZVxLcwXtoL93RZ1TUx6xS+68JDz+uvHGn5J4qU7XJYLvfOy9Yy CPzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=XZsGfWtTysVo81uFFzyXKZud5EEc/xMwJHVIKqPG4Tc=; b=np6cvTtQR5GM1c1XvzuLEvMhPLves9FwqEBe8PEMR/qcPF8kdr7DSXntg6qzpcbh+l sUlLcLkonSvugz9wuSV0hm9Z6tRR8XQ9k3Ogi7FhB1BZ1qShm6BQTyMyXKoVVOJGZ8ue XrfXbF4lZGR4Rhl7h7rzaQC5W2LiDWd0VzJ9Ymgk+G50/zEjL4/RL5NKdxR7VOzJKo4a cyinIpwclEabr9DxfnjRAwrjN/tWX98Rt0CNemMs/ec9lwr5EztbfeROaxUa7sbxnpRS HuCdr5arETxYcC97bjbvcq4NvbKthqia2ufl2DgtmkK6et7BvFdqMeo73KHhCY0v7NUn Bc+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="MXw/ZsZ2"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id g22si8538763iob.26.2021.02.28.15.24.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:24:07 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="MXw/ZsZ2"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:53714 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVPy-0005Ph-Uo for patch@linaro.org; Sun, 28 Feb 2021 18:24:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43480) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPd-0005OI-7N for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:45 -0500 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]:38491) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPT-0007i1-9c for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:45 -0500 Received: by mail-pf1-x42c.google.com with SMTP id 201so10276111pfw.5 for ; Sun, 28 Feb 2021 15:23:34 -0800 (PST) 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=XZsGfWtTysVo81uFFzyXKZud5EEc/xMwJHVIKqPG4Tc=; b=MXw/ZsZ2bAwnR+WKLo9j+BVs7UxHxdRNumqkPaalXdzy50zZVSd9cvc0QSipPlHh5m ez/IrigcdTWBiwzW9WowngQzRevxFMSZ9QcdyVMxmVkr45cuWkq75OQ735+d7DdwsGMB EmWomuqIPM68LxFpTSFHQXUZpWP29t6UeFferIeE+IUrL6/9p+Z1hYuKGHl734sKw0oG BT23bsQRGkoQzLyQNXc6F5s82/16lKBbzTKneLKSzW1BSUQ3uD8Xy6SeuNEOOOfidORg TEFROJEIyE3mMGrumMbhkfMuTGVZglode1uBxWKYM4HpjC2SqPLGnxdEo0mlmviF3pLo AiDg== 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=XZsGfWtTysVo81uFFzyXKZud5EEc/xMwJHVIKqPG4Tc=; b=sEm/OHoZYKlmq9K24zQn8jVo8qyfNghWatb1NSp/0FliU/Ay2WyHezGiAPTP9dCKdF L2wZfPtpb41HEeQAbMuCmx+6JRMSahj3thlJyWB2DzWPpp78x1KfNql56hmM1vWMn5xP 9BV+3eiO5SoK7ZzlC79yKLOt7LrEudmURRzkJ4JV2nhU8keD3FJA/JB356iO2asOjgV4 mBfUG8b4blO18SYHy4RTrYYdBTMDUQlL0JM6kWhE7PIuOJudi013UgRo8DQFKDyNl5DD UU1bhpbTIUnuyWAl13HpuEvmYNtTso3/6f8359dwO0l6JkC/Hx9yI5GIGmkb8fs1AARw BhIg== X-Gm-Message-State: AOAM5334cZ/0onlD7uhrcPfCVkbez6CnDQhhJ8UpZWze0RcxoX7c/GBN X/+hHm289/2EBaKZwJIz36+kFoXuII+2lQ== X-Received: by 2002:aa7:9514:0:b029:1ee:1397:701 with SMTP id b20-20020aa795140000b02901ee13970701mr12360027pfp.19.1614554613122; Sun, 28 Feb 2021 15:23:33 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 11/50] target/i386: Assert SS32 for x86_64 user-only Date: Sun, 28 Feb 2021 15:22:42 -0800 Message-Id: <20210228232321.322053-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" For user-only, SS32 == !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 --- target/i386/tcg/translate.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index d46ebc1dc2..ede6e4c5cd 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) != 0) #define CODE32(S) (((S)->flags & HF_CS32_MASK) != 0) +#define SS32(S) (((S)->flags & HF_SS32_MASK) != 0) #endif static void gen_eob(DisasContext *s); @@ -352,7 +353,7 @@ static inline MemOp mo_pushpop(DisasContext *s, MemOp ot) /* 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; } /* 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) 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); } static void gen_pusha(DisasContext *s) { - MemOp s_ot = s->ss32 ? MO_32 : MO_16; + MemOp s_ot = SS32(s) ? MO_32 : MO_16; MemOp d_ot = s->dflag; int size = 1 << d_ot; int i; @@ -2472,7 +2473,7 @@ static void gen_pusha(DisasContext *s) static void gen_popa(DisasContext *s) { - MemOp s_ot = s->ss32 ? MO_32 : MO_16; + MemOp s_ot = SS32(s) ? MO_32 : MO_16; MemOp d_ot = s->dflag; int size = 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 = mo_pushpop(s, s->dflag); - MemOp a_ot = CODE64(s) ? MO_64 : s->ss32 ? MO_32 : MO_16; + MemOp a_ot = CODE64(s) ? MO_64 : SS32(s) ? MO_32 : MO_16; int size = 1 << d_ot; /* Push BP; compute FrameTemp into T1. */ @@ -8490,8 +8491,8 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(IOPL(dc) == iopl); g_assert(VM86(dc) == ((flags & HF_VM_MASK) != 0)); g_assert(CODE32(dc) == ((flags & HF_CS32_MASK) != 0)); + g_assert(SS32(dc) == ((flags & HF_SS32_MASK) != 0)); - dc->ss32 = (flags >> HF_SS32_SHIFT) & 1; dc->addseg = (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st = 0; dc->tf = (flags >> TF_SHIFT) & 1; From patchwork Sun Feb 28 23:22:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388448 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2915343jap; Sun, 28 Feb 2021 15:31:38 -0800 (PST) X-Google-Smtp-Source: ABdhPJwMpC9HMC5TZZaqcdwr/Yi+PH7kw3iC0ga+p81i/XlSZl3Qjz0eynB87zXOZ2URJqiermLX X-Received: by 2002:a54:4899:: with SMTP id r25mr9865524oic.135.1614555098543; Sun, 28 Feb 2021 15:31:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555098; cv=none; d=google.com; s=arc-20160816; b=Wyl2L9i8H8tYXq7Vs7Sb+CHK+RGz69puNqfiIWTVqW1xKaD52pm9hlMI8sR+qoSyFR 9haBuGweCAOm8NaDrZDjW3TlqdFOoUziVHDheWxWEI1jpV8QzsiI90h29I87NIpmYlof 535OvlRYlKScy5/Q0ZRR0U2socseiNoQCefTuOk411DVT9lmOszQUF1yfUc0L/0iMFst 5Go3pwFy6ed+Gg4sK5JocrEK4sGSk32CmuN+sEn4pcZY7+PUvHzv6RNe+2A55qLjrfM1 3ftKgqnyzIItshqZ98Gqw1gmiURxib5yAq++6uOZenVztXmhl6qOxO9LVMJEKjrXTzFZ sLVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=pjuG897ecqPHqn9o+8GNgZG7OZ+sBrEQD+MOGdNWOSM=; b=qO4nI7e+j+ki0kc1qYNPgvogvob6mM4CWjUfaMwpD/OktJIKCEDbe66x1d0MSQOz7v h+TjnyI6bPXGGW9YPpHUSM3hBFLgCMWVHSLEzl63b7aq4V79zega9UXZzGtpgG/vWnM3 JM90armAJqyopmXJTCUJUpP/oeGRDBMT7o1GMJEME4Tx3dv913UxVVJLKMcUmHMy58i4 qcsuoK/PqRgFZrrNXbpV+SrDIr9q1IU8Do4467uRWYV9Mp8X6IIxWsyWaHGYqK9LglAS GYmgClCdACIejJqvvHaeS/gBDCxlpkdZ86TSBLzxphXWfaaGvYLcgy9JJnXbbGs1Wihy obBg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="Ife5a/pG"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id i12si7859597otp.7.2021.02.28.15.31.38 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:31:38 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="Ife5a/pG"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:50868 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVXF-0007dP-TX for patch@linaro.org; Sun, 28 Feb 2021 18:31:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43580) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPk-0005RQ-7y for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:54 -0500 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]:51547) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPT-0007i5-9e for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:51 -0500 Received: by mail-pj1-x1033.google.com with SMTP id jx13so6380620pjb.1 for ; Sun, 28 Feb 2021 15:23:34 -0800 (PST) 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=pjuG897ecqPHqn9o+8GNgZG7OZ+sBrEQD+MOGdNWOSM=; b=Ife5a/pGxobkc9E1YaiZhO7HeDjFqjeNL/e/lqINvKnP7JxM60vdvUebBdsuHh11pQ LIWhRGQ5/B8E/n0z36jyrI+4EyY6+qo7412l2PlwjJqxdqK25IOnNatsc+EtXvUQe6i5 T7T2GfJLRH2P8zKeSrduhTTVC+070o6TVhYK+8sM4yobwz/1RyI/PLzH41kwQi50eQjB IEUMgZ0B6d+SUpUmlxvq4C/atgxJx1Tq/E1Y2I57gwMHJOvQ/KFXs95XOCPiwUlUzYVW dgB0lwyQQbSxLpVClecc8lzvJi67qCoSxqIWlhASGLU1d49BAJad7a303E+VJIcnWqZ3 qibw== 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=pjuG897ecqPHqn9o+8GNgZG7OZ+sBrEQD+MOGdNWOSM=; b=pD3CBayX7Mnt5L7WRHtBDUJds3cFwECvoNLbKi/253t4H09rBW89bLO9vsryjo3yj/ 6rs+C77OjKq2cbTvy/LWupVNt8ZmGe7TjnoZ9NmHp8khGJJqlYiGNMkGaATSrgwuNQR4 O8ij6Vf90FNrdIgJXitdtwhFXB58zCAOTu+AIEkbq63ICEHQmDfzFwHzvKBBA39osUJU vHEj8ebD4mlJQU246bDQI/67feGgkmgZkGaIZX5ZGABZUzlG1EkOFJtUTeOuOs7fU0py 6dc66w8GHOxb90hLGFEOxba4p4Lj6US9AZsYbXASuoI9TndUb+etRkxPjNFp4QzpeAVB AEOw== X-Gm-Message-State: AOAM5335/R0BCr8X9F2Hi92mMr8N3I00Qrve+aUnwqpzelmVUPPc8rUX RRN+rET3m3XBACZFuBWDTvQ909VJ+NGOCA== X-Received: by 2002:a17:902:b206:b029:e3:f546:2f70 with SMTP id t6-20020a170902b206b02900e3f5462f70mr12815869plr.63.1614554614091; Sun, 28 Feb 2021 15:23:34 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:33 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 12/50] target/i386: Assert CODE64 for x86_64 user-only Date: Sun, 28 Feb 2021 15:22:43 -0800 Message-Id: <20210228232321.322053-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index ede6e4c5cd..e7f4392d55 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -41,11 +41,9 @@ #define PREFIX_VEX 0x20 #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 { #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) != 0) #define SS32(S) (((S)->flags & HF_SS32_MASK) != 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) != 0) +#endif static void gen_eob(DisasContext *s); static void gen_jr(DisasContext *s, TCGv dest); @@ -8491,6 +8495,7 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(IOPL(dc) == iopl); g_assert(VM86(dc) == ((flags & HF_VM_MASK) != 0)); g_assert(CODE32(dc) == ((flags & HF_CS32_MASK) != 0)); + g_assert(CODE64(dc) == ((flags & HF_CS64_MASK) != 0)); g_assert(SS32(dc) == ((flags & HF_SS32_MASK) != 0)); dc->addseg = (flags >> HF_ADDSEG_SHIFT) & 1; @@ -8512,7 +8517,6 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) dc->cpuid_xsave_features = env->features[FEAT_XSAVE]; #ifdef TARGET_X86_64 dc->lma = (flags >> HF_LMA_SHIFT) & 1; - dc->code64 = (flags >> HF_CS64_SHIFT) & 1; #endif dc->jmp_opt = !(dc->tf || dc->base.singlestep_enabled || (flags & HF_INHIBIT_IRQ_MASK)); From patchwork Sun Feb 28 23:22:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388452 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2917752jap; Sun, 28 Feb 2021 15:36:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJxR93MJK1XOiyDiZCR5Cl3/00lJP2IQk66lu+PwkQdt0joXOdHYcpjbK2pEiX1AJ6KUWiYb X-Received: by 2002:a4a:e2c6:: with SMTP id l6mr10431892oot.31.1614555387446; Sun, 28 Feb 2021 15:36:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555387; cv=none; d=google.com; s=arc-20160816; b=mGZ7c+1s1o7X5QLm1WQmRT7heTzdG7Ke0cU5NCIZ7RxNmJICrN/MKa/tUIGw5FUBDi KeSpGLiVIf8eUOCOdmCdCQaOsItAazSbrMmAW8t9IKC4SSaCJ4ZgJkv6xeu0RdYJjZ40 /ZzQBrDFsC/zteei+dOrO18MSmWbzt4w+E+jnWidd+VRGV6sLEdC+8oAtxQrEOU2mRZW dgJrUMTxvx8YDp7rxk02hvpOcaxCdvCCn/dOhQSx5IHC+V+8WzgFY6DtE/FOho1nKZLZ SHJVJDWi62pKKBfi5Rz+BNzkoclUorGWtUPYJIZe7lbV4ddhTNkiaQmwaToPDJMOQr/i bSZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=sIM3FAdXuKg0U210OJhtW2cayo77UxAtPgjDXJHCwWQ=; b=KbmPBeoYc9FZHl8MhVV8E4RQUeMUe//mnEaCyaG+YO7rUY31o/AwIxr9+0sLQmElv5 hMeAZqogx2xwWbPMWP7Tt25o4c7fQkTFgGcb9jbM0gVnOF2xBmBRcVG/fOFVT7xYFYRZ nCsVBOU6EBo8GO6l6NzIiWxBqzLzPvZ6MzbueaSGJvZucnpsEfWoLaNe41+ykEMb2WQ7 zU9BQl2FJ6SqeRcd3onPRUiW4gCurXOjnBugbE94ytC+oUEtCfsCl/gmVYAqci9m1oXK SDtWDEXI+KZfiXxQ8KxyZZz1Vw6/K3S5dlA6fyl74aa/CP1qhSnpYgzK/CQ9uB+PXG25 f4xQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Nsdy4HAD; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 68si13849697ooo.43.2021.02.28.15.36.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:36:27 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Nsdy4HAD; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:59318 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVbu-000329-SP for patch@linaro.org; Sun, 28 Feb 2021 18:36:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43546) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPi-0005Qi-By for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:52 -0500 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]:39649) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPV-0007iD-6I for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:50 -0500 Received: by mail-pf1-x434.google.com with SMTP id e3so6276883pfj.6 for ; Sun, 28 Feb 2021 15:23:35 -0800 (PST) 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=sIM3FAdXuKg0U210OJhtW2cayo77UxAtPgjDXJHCwWQ=; b=Nsdy4HADDnjXdGGbLuG0IwndMWeU4g2MsoRp6odUIs5oKuIae+d4XwdBTBBgWLw7pV eG4dNbbiu8IZKRst/3yDDdoxDsdJhYd9ZAXMWZECnPj3cvWPpows+Rc8B/z40ksiUN+d 6lFu1pfyy0dZIkgmQyFbpuulJjc8vba7QCE6DJDHoASPXvOKqGekT5MDrpfap1uSUMsl 33nPRaOxb1+dbu1vQsj2sKikRC3SIO/FK3ZyY9Fc2Vw3Vl0TTrGFbzyamLdlggnAmoIG /K9kHgdm4MXDFGRPO7TQgMv+tGnxLnpyjkayY0L5sEbOLA30wwscX+9PhsAvbsI629nZ 22oA== 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=sIM3FAdXuKg0U210OJhtW2cayo77UxAtPgjDXJHCwWQ=; b=hJr+FFa3GTJDTyzOIFqCPMzLKI61vLSrgxqVk/8dJctftrNvfIdOJeqnn+NP+AY68s 4RPgMGprel0PdRUf8/VnizwcBA2MxF660zNA3YTczU15T1rCKI5sazByveVqDcYgM9h/ dv9Tdw0//8RZN8osA2h8+v8sQ4M+CRvX2rkc9N3H3rs/lNaQcM7xITRtb/Ruwv+/o8bl jXBVOKRdnN4wWWhnW1KC0zD08N+G2xGLB28r6bUmg9ea0WlEo6Tthgdq0a7/4zrrBLlj L628LdoY5JFf0j5C2JF3oN6nZXU9j6MyNjHQD+TtdJiDub3h6H188GfDzKWzw2qFX+xr Ezow== X-Gm-Message-State: AOAM531PnV0CgjVCIRD56wrVFsFxmkR1TZr1fGyRfmij3kLhOi7b2bQN PJ8rNzKxB5XPKIoyZUqZXdvGgnKg0asxtA== X-Received: by 2002:aa7:8759:0:b029:1ed:81d4:1b88 with SMTP id g25-20020aa787590000b02901ed81d41b88mr12529693pfo.6.1614554614951; Sun, 28 Feb 2021 15:23:34 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:34 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 13/50] target/i386: Assert LMA for x86_64 user-only Date: Sun, 28 Feb 2021 15:22:44 -0800 Message-Id: <20210228232321.322053-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index e7f4392d55..c8728397d0 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -99,7 +99,6 @@ typedef struct DisasContext { #endif #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) != 0) +#define LMA(S) (((S)->flags & HF_LMA_MASK) != 0) #endif static void gen_eob(DisasContext *s); @@ -7289,7 +7291,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 @@ -8497,6 +8499,7 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(CODE32(dc) == ((flags & HF_CS32_MASK) != 0)); g_assert(CODE64(dc) == ((flags & HF_CS64_MASK) != 0)); g_assert(SS32(dc) == ((flags & HF_SS32_MASK) != 0)); + g_assert(LMA(dc) == ((flags & HF_LMA_MASK) != 0)); dc->addseg = (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st = 0; @@ -8515,9 +8518,6 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) dc->cpuid_ext3_features = env->features[FEAT_8000_0001_ECX]; dc->cpuid_7_0_ebx_features = env->features[FEAT_7_0_EBX]; dc->cpuid_xsave_features = env->features[FEAT_XSAVE]; -#ifdef TARGET_X86_64 - dc->lma = (flags >> HF_LMA_SHIFT) & 1; -#endif dc->jmp_opt = !(dc->tf || dc->base.singlestep_enabled || (flags & HF_INHIBIT_IRQ_MASK)); /* Do not optimize repz jumps at all in icount mode, because From patchwork Sun Feb 28 23:22:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388457 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2919360jap; Sun, 28 Feb 2021 15:39:43 -0800 (PST) X-Google-Smtp-Source: ABdhPJzjs1bRexPpABy8FYPI1zdfNTOVA5oPwWSq8pqI/NehqxQcAKleVi9W/ZdwAFO7Pq3gJpmF X-Received: by 2002:a5d:9641:: with SMTP id d1mr11422240ios.123.1614555583735; Sun, 28 Feb 2021 15:39:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555583; cv=none; d=google.com; s=arc-20160816; b=xXXNc5Wv1lxF9likgD1rBTuBkl1ApTrCJe+KEhPwhfKusjvh1y9gc+Ce9G03lO2qGo nS7dR3ivImoyzVNpVWRSfbAee9koT8IADySPOahq58sv2UzBXqPEEdCupX36QOfCZS0C 9hM0lZzUHf6MB2zLIM89lmcZtotvg/KCxWJTU1pNZxJ5OfhQkA3xihSibO8zfKo1nqe0 +FATZOcZAiNKHrj4ZJ/23X6mbHlsmZyxqW8tNQa0N6iIYqfDTEGEyQGXPjTMzRwMr71I DlG67LqqGbToyJz3U4+OE3UuU6O823ZKHWj13WZyNtEp3hYS4tWCY0059+1zjcd3NyAI +emA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=eWU48+PmRMax2TIUlWmTbNBZGlHPNyOmd8zQuonIrmY=; b=rBNjznjIpo58qg6U3m4UEdoaOtXDvbheHaLoMf6GM4jiF3DhSFuc4dM2GT69TFTq4w 2Mq4jkWxUC1m5LuwciW58LXMfp5w6qiA0BA90Q9OIkksvFewpVbo8tRnuiVLz/Toe4Oc QGaQvjkmOhQPjthZPXIP22hAgvsX+FVobgMz1EwR74Afoz3i2QN27wwlZs8z02PUuJEu kH3KGSNqn2aJNmSwaOz9EAEwdpzC0vzd/fUIcfxWK5Z5rZhN6D/GAxFhHS3z3E9njZEB jkxkkiuVAxHWRI/fzK6+66V0/J3AZd0JkjMhYC+z0+WkvZQga/NGzC3TbIhM4WasC9Sr RLrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=agasLxkV; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q17si14001980iow.43.2021.02.28.15.39.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:39:43 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=agasLxkV; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39778 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVf5-0006aO-70 for patch@linaro.org; Sun, 28 Feb 2021 18:39:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43624) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPn-0005To-GK for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:55 -0500 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]:39294) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPV-0007iI-6R for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:55 -0500 Received: by mail-pl1-x632.google.com with SMTP id k22so8761988pll.6 for ; Sun, 28 Feb 2021 15:23:36 -0800 (PST) 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=eWU48+PmRMax2TIUlWmTbNBZGlHPNyOmd8zQuonIrmY=; b=agasLxkVbDR2asl2wYEV9qXQy61UhPH+QOMW8JBVAz9VnXgzopRJBvuDY7l1VOVvLT 5m9n7DwQMOSg6xfUmSN+UOsl4dRHQblPw/ZZ5ktqO33ixAdu2Yvx7A9r77jzY4imslt2 +vPftpDlVud0JtGW5F0aEJL51hgGY89nULz5xUjP0pepn2zymjPkYcnZF3PsjmEsIeHC vD4kQcpcDV5doWRD9qokSm9gGVfh0ab6hRfJFdaMwUD0UM8EM5ivvDkKdt4W3b5J3gB9 K7yuByw+Y2xbwqzz2qnmZYs2D6IpBAL9j3jxR8tWj7KobvdDE/RLF7hqJWqU7/Cads63 rc1w== 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=eWU48+PmRMax2TIUlWmTbNBZGlHPNyOmd8zQuonIrmY=; b=BdOEBuusa7/jjoaSkPBfRWM/8fmx6K7mdXfdFcWSvlgYoZZrRpMRHPDBU58SUn31k4 WR8XJdV3GGd4G3ZDdfQW3ijk/yWihyEA4D1t8AXI6BjNyTCG9K7TenCUMZEm4oy7Utbw 9S9PovH3/tdXobwjizkyvnZw6P/LppxvaqUOruhRCu7nhe4Q/FNNvSpFcHBydlkKQ2zu PiTRQfc+cD7Bg+otT2EXyiJYfJllfnBq86/ZstWsZyc9hIRnD2xdohJmRrYj4RJwo7fr Q8gOH5Fn65+a/AT1v0SFdp1nFi2kYK592Q5Wc5VTvR2mJitmQL0X3pXTjcC2BdlTI00Y D7+A== X-Gm-Message-State: AOAM5329ZRqRZsWYV3+Qqe3cuczRUQuXiAr5DS58OBVGN1mzt38FS24b QN0QsSlBqLFWOti97AkmxcQ/aMWPjmhB5g== X-Received: by 2002:a17:90a:5d14:: with SMTP id s20mr6464631pji.6.1614554615721; Sun, 28 Feb 2021 15:23:35 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:35 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 14/50] target/i386: Assert !ADDSEG for x86_64 user-only Date: Sun, 28 Feb 2021 15:22:45 -0800 Message-Id: <20210228232321.322053-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index c8728397d0..33da97d0a6 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) != 0) #define CODE32(S) (((S)->flags & HF_CS32_MASK) != 0) #define SS32(S) (((S)->flags & HF_SS32_MASK) != 0) +#define ADDSEG(S) (((S)->flags & HF_ADDSEG_MASK) != 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 = 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 = s->A0; if (ovr_seg < 0) { - if (s->addseg) { + if (ADDSEG(s)) { ovr_seg = 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); if (!CODE64(s)) { - if (s->addseg) { + if (ADDSEG(s)) { new_esp = s->tmp4; tcg_gen_mov_tl(new_esp, s->A0); } @@ -8500,8 +8501,8 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(CODE64(dc) == ((flags & HF_CS64_MASK) != 0)); g_assert(SS32(dc) == ((flags & HF_SS32_MASK) != 0)); g_assert(LMA(dc) == ((flags & HF_LMA_MASK) != 0)); + g_assert(ADDSEG(dc) == ((flags & HF_ADDSEG_MASK) != 0)); - dc->addseg = (flags >> HF_ADDSEG_SHIFT) & 1; dc->f_st = 0; dc->tf = (flags >> TF_SHIFT) & 1; dc->cc_op = CC_OP_DYNAMIC; From patchwork Sun Feb 28 23:22:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388456 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2919343jap; Sun, 28 Feb 2021 15:39:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJyPWEghy4Gr3sgrCnT0+LnaskcHduvlea5eRf77+22ZVhUCUZ3U00f766gefaQkpBAxYxMu X-Received: by 2002:a05:6e02:12cc:: with SMTP id i12mr10884841ilm.113.1614555581835; Sun, 28 Feb 2021 15:39:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555581; cv=none; d=google.com; s=arc-20160816; b=gBzqCAicf2DmO67m5N509RrSHHpxD+bxvjslDqcN/apjQv9blMMS2lWX0ybU0JPD8N jkS35sIUCja8oCvw9kRwLlCU3Ds83fsp7bElj6C02OSyPk4BCkwJ8apRqA88WytFcf9E aseNlRxFLhm2l7RAD77ZbkckotsK5sGEpofj3cj4cCsPWXkMC2YYong53mjDQKicTF0m j0vqKOmUbvSvqMuwQLnD5zXwfP02ui9pxKUzAN8vOtL+KBm1nWSjSKqpR8CUbYYzZTZa 3z2IEqPtvLeQhu/CRabeE3FeQWGFFJ2IWbmpDRXrQ3ZrhKuoAHbmMaFndRd0Qd4rzNe8 14xQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=F2Soij/n72t5+4Lnb4cZ68WmnkGE/xgVzkoBmLKFKwI=; b=oTiDZGOwFT4kw1+T7UWdR8fRq1WW1RNXHDy/7sHbvGcVZoKrvqKxNuYclLQDcYGSkM qxsGAT87DlZIugA3Qfi/9QTjSbrTFex8jvXPmMxpnqbKZPnzI87yTF4v27/YQAT0KyWG izr8EPNDEGgiFakumihwmE2k9ZmFWCo9CLfMPdHI/MNUnQ1UPTINVugl0Zep3HeWvei8 RSq6xnfjQ0xQ/ghGqF1B0PbMQ40ZKCwSjsXW348VhoEWWyIHQ6xz0UsJ2aovY4Ekyoiv +jiNW6mR5FYBubPwqKbePYixGlKOeQ3gr5sxFMpXxzjehkO7yauT7fwePgpN1Eatzn0r ZQBg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=P8x2E8ta; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id g18si16394635ioo.24.2021.02.28.15.39.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:39:41 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=P8x2E8ta; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39486 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVf3-0006TV-7d for patch@linaro.org; Sun, 28 Feb 2021 18:39:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43556) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPj-0005RH-Cj for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:52 -0500 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]:38889) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPW-0007iN-Db for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:51 -0500 Received: by mail-pj1-x1029.google.com with SMTP id l18so10481498pji.3 for ; Sun, 28 Feb 2021 15:23:37 -0800 (PST) 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=F2Soij/n72t5+4Lnb4cZ68WmnkGE/xgVzkoBmLKFKwI=; b=P8x2E8tauKRddyCoYM7luWl2XmJ4L7azYPNx63yS9DYkOXBgarLlSJwV6gFqM88OC7 4Z4dhvBbvmpFF3FLe3U++P81KgKLR3y7zDImdLLwn3iy+A3vGQZ9aeD3+U6wubNvfZNI d7nl3pJXPSe0rWVtcenYUQs2HeXLQ/CjUM3L21j8WAnlXdZRWj1Xljoz7nrg7sins75L vD5SKw9hVatcwRzskCvd/2eqOxXUoJF7WREttsxBA8FCzq+u+y9SiJHAyQFLcYhh4Iin VHoayLdHZQ2fD9TCKMsZuP+rxvAODTO07bdDLddek/5oBNQ//526fcvYs1C2HgK0DThI EacQ== 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=F2Soij/n72t5+4Lnb4cZ68WmnkGE/xgVzkoBmLKFKwI=; b=TXTel131QyJAtggzJutKZP5enhWGj2ROq1kQ2DOyW3zWCsReiEazoiF6knNiC3bahM OJ2CbIaGsjQl+ehzYIuqqHK6983pUHmBuuKXg5xsGR3xPdicKSQLyC0z6jHgRpbU+EGI XvMyieRh3g8E7lNBIEMGrTbhN1U+RPacQCmsUT23NwesTAtINXBqxiO4VomFnfJtyJWq DwaOt1tfFE3+x1RPhm/iUyc3PO7jjDDPtD+sCPnm8n4noJuneQ+rc6N+JjqLrh0djPDO EBqWEE0X6+Tzu5o6CWWabX84EyQC7aZJ/oM16hYY66OvfIvttiKVe1ToNz0vHWIosVTA b1TQ== X-Gm-Message-State: AOAM53134bsoh6Q2J3a22sRlJKhNokXA/pMaIfEauVAcdTcEjnDYj20X kmjNAwpPEYUN0N2qdsYMAwEk/TnfXDUqJg== X-Received: by 2002:a17:90a:f28e:: with SMTP id fs14mr2752851pjb.100.1614554616745; Sun, 28 Feb 2021 15:23:36 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:36 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 15/50] target/i386: Introduce REX_PREFIX Date: Sun, 28 Feb 2021 15:22:46 -0800 Message-Id: <20210228232321.322053-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 >= 8 check, because bit 3 of the register number comes from the REX prefix in the first place. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 33da97d0a6..31b128d4fe 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 #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) != 0) #endif +#ifdef TARGET_X86_64 +#define REX_PREFIX(S) (((S)->prefix & PREFIX_REX) != 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 >= 8 || s->x86_64_hregs) { - return false; - } -#endif return true; } @@ -4559,7 +4559,6 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) #ifdef TARGET_X86_64 s->rex_x = 0; s->rex_b = 0; - s->x86_64_hregs = false; #endif s->rip_offset = 0; /* for relative ip address */ s->vex_l = 0; @@ -4614,12 +4613,11 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x40 ... 0x4f: if (CODE64(s)) { /* REX prefix */ + prefixes |= PREFIX_REX; rex_w = (b >> 3) & 1; rex_r = (b & 0x4) << 1; s->rex_x = (b & 0x2) << 2; REX_B(s) = (b & 0x1) << 3; - /* select uniform byte register addressing */ - s->x86_64_hregs = true; goto next_byte; } break; @@ -4643,14 +4641,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) /* 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 = (~vex2 >> 4) & 8; if (b == 0xc5) { /* 2-byte VEX prefix: RVVVVlpp, implied 0f leading opcode byte */ From patchwork Sun Feb 28 23:22:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388454 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2918110jap; Sun, 28 Feb 2021 15:37:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJxZkYwJuNMfhxBVL2/LNRVt+qh/saeNaWieirqvMva2PKUQm+QpiKSPq5lk8x3S0D5x7ByO X-Received: by 2002:a5d:8543:: with SMTP id b3mr11339060ios.137.1614555436329; Sun, 28 Feb 2021 15:37:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555436; cv=none; d=google.com; s=arc-20160816; b=hmHmul5/8DkGl8Say2Z29qgtnFa7gH5ysdGQv/7/xTxbK6JCd8fWPr2U0a4cND4NZT hGkocDqE1O4mDNbnO5XH6zBM7/QzdiG5x+rwzcpyRqOnITG8DCg95Y1B21Z43mquq9hW u4SuGEHWW1ecdBjlTAgDwwD8i7/4oJQH5nOlXJbU2v8MyWt1rQHCJqtqUlzNaT4/tFRH gbXsfeohmwOW/ZcTFIMGNvO6HqKu7efB7v930vXjDctWpQVbsYnrEu6tUp7PvfH9O+Ay FFPSVd3klO9X49v+/W06F4xYmqt5TtdPGFF9JFI/plTHIGdPkIKPeme+QxrscI/xizrd TkZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=Ukt02Bw5xkIb+TNqr2W20PaNk7VhmCkpJBFsF/4M/x0=; b=hiJYy9W8CveJ1jIFS/EmI388iLp5EuL6aJrOyQTm+64KwVvQaLUEBBrsnHI2ja8sdG Ii27SzsROby6Bskd12w2k9tYqqDsSIDaG6R4L5vx+2ekBJsWjInqWsBZZkCcFv2RBLFf IJ65lUb981Oc6R9Ch4rr+9SRyWp5A90g3MZfj2a4bjlCFPZhlgjHz43rjTZLSOowdE19 zHhA0nBFQYVD2hMZYl3WKfrCtUAdEWZO3W9qPdNQpd32q/yQrsdgOcCqd4RBSWnxkNrJ dkBJFvlxY5fhpkgpBRvN08fEw7fknhrLfNUDgipp2sIjVmclUXSTVSHwW6H/cf5W+P5F 2KlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=IJJTq2YL; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id t17si14509116iov.57.2021.02.28.15.37.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:37:16 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=IJJTq2YL; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:59444 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVch-00035f-Pg for patch@linaro.org; Sun, 28 Feb 2021 18:37:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43582) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPk-0005RY-AV for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:54 -0500 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]:36561) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPX-0007iX-5g for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:52 -0500 Received: by mail-pl1-x62f.google.com with SMTP id e9so8764857plh.3 for ; Sun, 28 Feb 2021 15:23:38 -0800 (PST) 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=Ukt02Bw5xkIb+TNqr2W20PaNk7VhmCkpJBFsF/4M/x0=; b=IJJTq2YLELoCtg9hj/ulgT/M7f32SIO9omWKm0PutT5rqa3CVbj42eJfjCxenAoheZ 0levChT5pUQ29vCF4NtyN1QZZrs5dMCCoqkGQrNO0hRx4zB87cGU1vhzpA7GcIJIxt6i 9l9lMb3uFF0HAzz614Vsf3UQMfcH7FZjjy/3F0oh7xk3MnVxJrsFLc16W3P4BEDui3Bm ZPM1dIA4wEqNjhN/N1wkisjioyP9gfoB5rvb5FkVQ7uXpYoS7p0QphML+D/VVHp31apW 7asaPncP4V/wnqKIupaXjo35AZq57D+LY0UoNh0eQacA7C5v2DhETYA1XFLn6YAmRHr2 YAlA== 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=Ukt02Bw5xkIb+TNqr2W20PaNk7VhmCkpJBFsF/4M/x0=; b=sa7IxTCjzRLuhyM7Ee2ymujCg+0sa3TzaVnlIUAKuPsASJAiVu3mpQykb9P4r89rVD qwDePfDbmP9Iqv+8A5hV0IYKKBWVF9CT3dGGD7B6AaDvfhgv67M2IyhVijaa0XcJ9WBm DGkJyFBO8X26bDd4luJeXC6mdPfffOQdKWbcEz0RxWL9Fkvq0OvAe3dzfT9zvsdKJBjm r1r4kX1i6bZ4SWNGMBqypzJ7+qFYY8QMo8SGZqZHrVDL6adETLuko/X/70vNToYm+fyn l+wR72qi8+VLgyRGLQlT39mHJyIWeHNHe0RfJpUt2qg3T8U/zwdZLQCc2kXWbGXfA+wk RRTA== X-Gm-Message-State: AOAM530BHDZJezVXBo2jL1lhqAbp5uq3TlCQpzfLwArOzayzFl+ZB1vC SiNwmpKZJKeohcibwIeNPP6NMpaAIWRLSQ== X-Received: by 2002:a17:90a:7c0c:: with SMTP id v12mr14092642pjf.63.1614554617558; Sun, 28 Feb 2021 15:23:37 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:37 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 16/50] target/i386: Tidy REX_B, REX_X definition Date: Sun, 28 Feb 2021 15:22:47 -0800 Message-Id: <20210228232321.322053-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 31b128d4fe..605b80229a 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 -#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 #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 { #ifdef TARGET_X86_64 #define REX_PREFIX(S) (((S)->prefix & PREFIX_REX) != 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 static void gen_eob(DisasContext *s); @@ -4617,7 +4614,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) rex_w = (b >> 3) & 1; rex_r = (b & 0x4) << 1; s->rex_x = (b & 0x2) << 2; - REX_B(s) = (b & 0x1) << 3; + s->rex_b = (b & 0x1) << 3; goto next_byte; } break; From patchwork Sun Feb 28 23:22:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388453 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2918094jap; Sun, 28 Feb 2021 15:37:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJwJGpqJht1MtYg215aga7ZaWKj2ZcEMdowFawWQ2kKubNx1w2KsYDGUowxl0IaH1HX0IsDK X-Received: by 2002:a9d:63ce:: with SMTP id e14mr10767048otl.347.1614555433584; Sun, 28 Feb 2021 15:37:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555433; cv=none; d=google.com; s=arc-20160816; b=c2CLyhyeO697IoDodX1oFgSkOhJC93iISw8u0nDRUxIcuH93tQs/Cjg1MTepTXQrX4 LsBSL1IQiYups31hhEMU7ZktwC7BH0sn1dfl5qfwCG8YI+f6OpozHMtDnaFSJ0LWzogX JGaPrsMnSKt+9sIALHPWp2PHU/eym04dSjyg5cXMjxfss5FVk/o1u+fN65F9TYN7xkMR 7qzKVdLEkQqMWyLQ1XlFjVcnItLnGUNXebDTxfs74HAsCZi4qUEFy6H5cx+3cyF88l37 NbpVMdrgH6qp7nh6fAueL7ex+pNPj/rrzR1zv2s4xb+jLSamKlzVL6byIXIfJjpZC6Z1 EgXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=5sMrPCvBvZcRNI0f+4NGvi10dnGYsatk73CQtS7iOqk=; b=z9aXmM0imEDL3e5NZpDYYTOoYuGT8iijWuUM0Xui9MVTbE8IoKU1wETB50cUmL0Csg 65o4AjWkl9PZcHHLFfSGkznO7jHPE4L4ps5fOzReBblbe03wB8TJ+ThQSF3ncmMHaXSJ E5PFEvWDoEokEvkl77H5AG+wv9C1KUQbAqbKy59eVbIbabtZWF2CJwPRObZTheGW9jtL puzutEOtGgE8U8aVfrw7wM0BO1gmN0jCH8Bl/rGqTwt02NMT8BzkjKiXygTcdGiE35bh KjpjZWQ2J4hKeJt88QWkM+R06rju7z8CSr8EsSgE03fwvtyKG2ihTPhZ9K23UyijfpQ3 HBFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="XviND/Lm"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h206si3466766oif.259.2021.02.28.15.37.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:37:13 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="XviND/Lm"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:59094 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVce-0002vj-SL for patch@linaro.org; Sun, 28 Feb 2021 18:37:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43666) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPp-0005Z3-Ok for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:57 -0500 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]:36925) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPZ-0007ir-0q for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:57 -0500 Received: by mail-pj1-x102d.google.com with SMTP id u12so10241318pjr.2 for ; Sun, 28 Feb 2021 15:23:39 -0800 (PST) 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=5sMrPCvBvZcRNI0f+4NGvi10dnGYsatk73CQtS7iOqk=; b=XviND/LmawhHzDOwdpfeeRqtWUdkMKvIRPzJqSSovblGu50Vzhz4TCToSwuLGapPmj hazn1ycqqVY/3+WluzsgajCZKQuZLdIyXwXgNMiKR/mLZBWGngmEk58tp1iT5IXq4o/9 p3UPrpYkfZSmy2z8AUwWqpQkwWX1qBSdaG4gdQSImhIiqTTCC98zhx14cuLhO5W+F0jc 8lfLsWBzXFAsH/k7oyc866++pGl2/suRmkQ2dXItVyG4WNX9LeLw1OpIYScfdrZBlGGn 74scrtcPglEWHdUAFactSfw9+qVc2s4F188hxwf3jfcMUV2FdgqbzyBCB5Pv1XYzdjy2 6JDg== 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=5sMrPCvBvZcRNI0f+4NGvi10dnGYsatk73CQtS7iOqk=; b=baCzIsBxmVWJQUvxsW8nnz61W8v8b8vNyUT/Y4eDgVzuCUNZKKebvlADw3hysvWqKh shB6eB6Im3An3BBQiDFFSal3+EFm0ugNuOfgbbfPA0ofgKeiANeyvMnbUgB8AJmWax8V aUFqZyg3kpafCzi21DRNcFiqc05EcVsbYeBycvzo3Tci2Mx6QcIhG322I+KspWHvbw7F gpKMJ2U87KLKQm1W8Ba/rmx+/9MoMRPxolgCm6UeA6tPNye8gt830GfPH/Cq4+Tl81eO c7VSmajTAyl4TUGCwadu66L2gB4KLWNCDMj/gkj61BQZEfCTC65S9ZPZdCSSGWjhl8L9 kaUA== X-Gm-Message-State: AOAM532hRoAXA03BhThiX5WEjHBKvSc78BxVakynN5QYsfEG7PGYywOy z6uJoSKs44Gp/Xdbn1ek18W7fnCh5cnYrg== X-Received: by 2002:a17:903:248f:b029:de:c703:9839 with SMTP id p15-20020a170903248fb02900dec7039839mr13020757plw.42.1614554618432; Sun, 28 Feb 2021 15:23:38 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:38 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 17/50] target/i386: Move rex_r into DisasContext Date: Sun, 28 Feb 2021 15:22:48 -0800 Message-Id: <20210228232321.322053-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Treat this flag exactly like we treat rex_b and rex_x. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 84 ++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 39 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 605b80229a..aa10d0ba99 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -92,6 +92,7 @@ typedef struct DisasContext { #endif #ifdef TARGET_X86_64 + uint8_t rex_r; uint8_t rex_x; uint8_t rex_b; #endif @@ -166,10 +167,12 @@ typedef struct DisasContext { #ifdef TARGET_X86_64 #define REX_PREFIX(S) (((S)->prefix & PREFIX_REX) != 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[256] = { }; 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, modrm = x86_ldub_code(env, s); reg = ((modrm >> 3) & 7); - if (is_xmm) - reg |= rex_r; + if (is_xmm) { + reg |= REX_R(s); + } mod = (modrm >> 6) & 3; if (sse_fn_epp == SSE_SPECIAL) { b |= (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 = ((modrm >> 3) & 7) | rex_r; + reg = ((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 = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); tcg_gen_extu_i32_tl(cpu_regs[reg], s->tmp2_i32); break; @@ -3755,7 +3759,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s, int b, } modrm = x86_ldub_code(env, s); rm = modrm & 7; - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; if (b1 >= 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 = modrm | (b1 << 8); modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); switch (b) { case 0x3f0: /* crc32 Gd,Eb */ @@ -4185,7 +4189,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s, int b, b = modrm; modrm = x86_ldub_code(env, s); rm = modrm & 7; - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; if (b1 >= 2) { goto unknown_op; @@ -4205,7 +4209,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s, int b, rm = (modrm & 7) | REX_B(s); if (mod != 3) gen_lea_modrm(env, s, modrm); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); val = 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 = modrm | (b1 << 8); modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); switch (b) { case 0x3f0: /* rorx Gy,Ey, Ib */ @@ -4548,12 +4552,13 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 = s->base.pc_next; s->pc_start = s->pc = pc_start; s->override = -1; #ifdef TARGET_X86_64 + s->rex_r = 0; s->rex_x = 0; s->rex_b = 0; #endif @@ -4567,7 +4572,6 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) prefixes = 0; rex_w = -1; - rex_r = 0; next_byte: b = x86_ldub_code(env, s); @@ -4612,7 +4616,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) /* REX prefix */ prefixes |= PREFIX_REX; rex_w = (b >> 3) & 1; - rex_r = (b & 0x4) << 1; + s->rex_r = (b & 0x4) << 1; s->rex_x = (b & 0x2) << 2; s->rex_b = (b & 0x1) << 3; goto next_byte; @@ -4641,7 +4645,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) | PREFIX_LOCK | PREFIX_DATA | PREFIX_REX)) { goto illegal_op; } - rex_r = (~vex2 >> 4) & 8; +#ifdef TARGET_X86_64 + s->rex_r = (~vex2 >> 4) & 8; +#endif if (b == 0xc5) { /* 2-byte VEX prefix: RVVVVlpp, implied 0f leading opcode byte */ vex3 = vex2; @@ -4731,7 +4737,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) switch(f) { case 0: /* OP Ev, Gv */ modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; rm = (modrm & 7) | REX_B(s); if (mod != 3) { @@ -4753,7 +4759,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 1: /* OP Gv, Ev */ modrm = x86_ldub_code(env, s); mod = (modrm >> 6) & 3; - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); rm = (modrm & 7) | REX_B(s); if (mod != 3) { gen_lea_modrm(env, s, modrm); @@ -5173,7 +5179,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) ot = mo_b_d(b, dflag); modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); gen_op_mov_v_reg(s, ot, s->T1, reg); @@ -5245,7 +5251,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x6b: ot = dflag; modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); if (b == 0x69) s->rip_offset = insn_const_size(ot); else if (b == 0x6b) @@ -5297,7 +5303,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x1c1: /* xadd Ev, Gv */ ot = mo_b_d(b, dflag); modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; gen_op_mov_v_reg(s, ot, s->T0, reg); if (mod == 3) { @@ -5329,7 +5335,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) ot = mo_b_d(b, dflag); modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; oldv = tcg_temp_new(); newv = tcg_temp_new(); @@ -5551,7 +5557,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x89: /* mov Gv, Ev */ ot = mo_b_d(b, dflag); modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); /* generate a generic store */ gen_ldst_modrm(env, s, modrm, ot, reg, 1); @@ -5577,7 +5583,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x8b: /* mov Ev, Gv */ ot = mo_b_d(b, dflag); modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); gen_op_mov_reg_v(s, ot, reg, s->T0); @@ -5627,7 +5633,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) s_ot = b & 8 ? MO_SIGN | ot : ot; modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; rm = (modrm & 7) | REX_B(s); @@ -5666,7 +5672,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) mod = (modrm >> 6) & 3; if (mod == 3) goto illegal_op; - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); { AddressParts a = gen_lea_modrm_0(env, s, modrm); TCGv ea = gen_lea_modrm_1(s, a); @@ -5748,7 +5754,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x87: /* xchg Ev, Gv */ ot = mo_b_d(b, dflag); modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; if (mod == 3) { rm = (modrm & 7) | REX_B(s); @@ -5785,7 +5791,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) do_lxx: ot = dflag != MO_16 ? MO_32 : MO_16; modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; if (mod == 3) goto illegal_op; @@ -5868,7 +5874,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) modrm = x86_ldub_code(env, s); mod = (modrm >> 6) & 3; rm = (modrm & 7) | REX_B(s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); if (mod != 3) { gen_lea_modrm(env, s, modrm); opreg = OR_TMP0; @@ -6722,7 +6728,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) } ot = dflag; modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); gen_cmovcc1(env, s, ot, b, modrm, reg); break; @@ -6868,7 +6874,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) do_btx: ot = dflag; modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; rm = (modrm & 7) | REX_B(s); gen_op_mov_v_reg(s, MO_32, s->T1, reg); @@ -6973,7 +6979,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x1bd: /* bsr / lzcnt */ ot = dflag; modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); gen_extu(ot, s->T0); @@ -7700,7 +7706,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) d_ot = dflag; modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); mod = (modrm >> 6) & 3; rm = (modrm & 7) | REX_B(s); @@ -7774,7 +7780,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; ot = dflag != MO_16 ? MO_32 : MO_16; modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); t0 = tcg_temp_local_new(); gen_update_cc_op(s); @@ -7815,7 +7821,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) modrm = x86_ldub_code(env, s); if (s->flags & HF_MPX_EN_MASK) { mod = (modrm >> 6) & 3; - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); if (prefixes & PREFIX_REPZ) { /* bndcl */ if (reg >= 4 @@ -7905,7 +7911,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) modrm = x86_ldub_code(env, s); if (s->flags & HF_MPX_EN_MASK) { mod = (modrm >> 6) & 3; - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); if (mod != 3 && (prefixes & PREFIX_REPZ)) { /* bndmk */ if (reg >= 4 @@ -8017,7 +8023,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) * are assumed to be 1's, regardless of actual values. */ rm = (modrm & 7) | REX_B(s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); if (CODE64(s)) ot = MO_64; else @@ -8070,7 +8076,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) * are assumed to be 1's, regardless of actual values. */ rm = (modrm & 7) | REX_B(s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); if (CODE64(s)) ot = MO_64; else @@ -8112,7 +8118,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) mod = (modrm >> 6) & 3; if (mod == 3) goto illegal_op; - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); /* generate a generic store */ gen_ldst_modrm(env, s, modrm, ot, reg, 1); break; @@ -8344,7 +8350,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) goto illegal_op; modrm = x86_ldub_code(env, s); - reg = ((modrm >> 3) & 7) | rex_r; + reg = ((modrm >> 3) & 7) | REX_R(s); if (s->prefix & PREFIX_DATA) { ot = MO_16; @@ -8372,7 +8378,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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; From patchwork Sun Feb 28 23:22:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388461 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2921278jap; Sun, 28 Feb 2021 15:43:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJysNxGFw/UWjb6wU7ThSYQwhgS/0xKLhbeL5mU/nYlorm5fM5UYXRWh4WotswtebPUxsyxF X-Received: by 2002:a05:6638:3a8:: with SMTP id z8mr1470222jap.111.1614555838712; Sun, 28 Feb 2021 15:43:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555838; cv=none; d=google.com; s=arc-20160816; b=YzDGchkRNF0EapAmBoPNMGO5QFsF8EwpvSa96G3Tvv84tcIwWmgIkY6oB4fRZBY/bH D9TEZNoGILZjIT7yaRHHRWY3rBOVZO1ZCN1yhRWBcnPv/5e60DF0DgQOB0eBX0CAyjfN cpIhHDp35ptuQEcex3rePqowIiP3JwvSMSkaYujG0b9b2cuFQlB3TDSyRHMnM3BlnMn+ BGfm4Q9426tWrqMqNXqjgVIQee3942AUvPwk9uP0dCm891xWs+5GgYc35X5hNse7CbuW 7GWdEacyUwK3efh6H18ONQug5oRAZBkBbJwEJLoeXUOFjsXdrGrBUZO/rIe6bx7lfX/t 6kyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=sfziPdMmHXMl0JUBj2FD4iN9zl8J9PwSm1EfUyjEWb0=; b=Z9W1+8Auxp3Id4F1bNCLjK2CNhMzHsF7fjfs4jOufNkQ2/YMEHaFFOX3Jpsc3rQfy5 DN0aLqzyDJewsn80TZJNhS2VytnqkSwO61uKmOSgvlAIZCgA9dBAR/0CHMzgh6VMYAcX NtNRKy+jN+rIhg+GblObm+Jl36Gqqv8BO12MK21C1/Jj6FW4AGfRWA4wCMR96B0YaLg9 bXpVLb45OF6tfIi/Hz/tOewnKqUyD9psJDzjZiuqDFPu9jpbVBSnEC0RslRoStlSfklq Mg5lp3KDLYHf9zTXLaZv7GPCYuY8ehxQSvGrZPTkAuXoZ6a4AzXy2ImNAVEwGtVsgVPW KOVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=TOec1IVh; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id r18si14424856ile.154.2021.02.28.15.43.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:43:58 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=TOec1IVh; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:48042 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVjC-0001dw-39 for patch@linaro.org; Sun, 28 Feb 2021 18:43:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPm-0005SJ-C0 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:54 -0500 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:35215) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPZ-0007jF-1P for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:54 -0500 Received: by mail-pj1-x1031.google.com with SMTP id e9so10493901pjj.0 for ; Sun, 28 Feb 2021 15:23:39 -0800 (PST) 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=sfziPdMmHXMl0JUBj2FD4iN9zl8J9PwSm1EfUyjEWb0=; b=TOec1IVh6bWEIdINJoXPLJ7y6ez4SCM9aixdp/mxKsEo4h2QE89bvd2w8TN1SirBD8 v4AnpRgWG+2u5Y/j5XJvXvNeYIApdkFL67hXQSAeIahibB7U4RTKxg5j8bTHf62ovshT lWqygS9C9YiUrzjadc1GN3k2Ny2Qh3HuQwCaZE/m4GPWa7opbi7JRkOS0pNbNxp8QOc6 BjoYZNQBBHOekA3G2sGLwNWAwphMz4N4GTtAFVQx+LAMJCbiVOKHJp3sZq4sOYVTHwZ0 NfdzwzT9rLhRky6ftlm8WsUL2J1pueu+SlawpysZ7GDiHByEMl7Sy9CrP8uL2cOJVRrf mIBw== 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=sfziPdMmHXMl0JUBj2FD4iN9zl8J9PwSm1EfUyjEWb0=; b=EF9oZWx5oruFcSRimIzra+iKfeVP3ApyiWg2CujFHP7f/AYhG1h351e3qBUXDAIZK0 K+7g2YM4wulu0H2u05qjUahYQrmmJdJnGO1K/1nGTILXMrkqk3Gf1oCa99l/Rh5iiEdB NTzsUvyaRoEqRh93n/ODlf1Yw4VpNyw/IgX98MY8ijgFT/TOex2EW+GQ3fWWgn9L4pEv ZmgmRAe1Yz/WA/qQc0vWJ1pPdmlzCFeauedsssri5HFoSXjD2zzml9BEQWJQsYWiNa3G 0IBkWNOhRyjg0xq9bXJwU5ZNw0++zmWwp4TCJF1Wq9dDZ2MDFnwiKRIeFCNFdQ+/v4pM 8QgQ== X-Gm-Message-State: AOAM532HyCuzQTo2rzALoBnAgMwaFoGecXSFt69VJHPJqVjGoevTOFAv SZBko5F727nDbcaHEdu9mhMTKI+X+obmYw== X-Received: by 2002:a17:90a:e2ca:: with SMTP id fr10mr14256102pjb.154.1614554619196; Sun, 28 Feb 2021 15:23:39 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:38 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 18/50] target/i386: Move rex_w into DisasContext Date: Sun, 28 Feb 2021 15:22:49 -0800 Message-Id: <20210228232321.322053-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Treat this flag exactly like we treat the other rex bits. The -1 initialization is unused; the two tests are > 0 and == 1, so the value can be reduced to a bool. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index aa10d0ba99..deb1e43430 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 { #ifdef TARGET_X86_64 #define REX_PREFIX(S) (((S)->prefix & PREFIX_REX) != 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, CPUState *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 = s->base.pc_next; s->pc_start = s->pc = pc_start; s->override = -1; #ifdef TARGET_X86_64 + s->rex_w = false; s->rex_r = 0; s->rex_x = 0; s->rex_b = 0; @@ -4571,7 +4574,6 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) } prefixes = 0; - rex_w = -1; next_byte: b = x86_ldub_code(env, s); @@ -4615,7 +4617,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (CODE64(s)) { /* REX prefix */ prefixes |= PREFIX_REX; - rex_w = (b >> 3) & 1; + s->rex_w = (b >> 3) & 1; s->rex_r = (b & 0x4) << 1; s->rex_x = (b & 0x2) << 2; s->rex_b = (b & 0x1) << 3; @@ -4654,12 +4656,12 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) b = x86_ldub_code(env, s) | 0x100; } else { /* 3-byte VEX prefix: RXBmmmmm wVVVVlpp */ + vex3 = x86_ldub_code(env, s); #ifdef TARGET_X86_64 s->rex_x = (~vex2 >> 3) & 8; s->rex_b = (~vex2 >> 2) & 8; + s->rex_w = (vex3 >> 7) & 1; #endif - vex3 = x86_ldub_code(env, s); - rex_w = (vex3 >> 7) & 1; switch (vex2 & 0x1f) { case 0x01: /* Implied 0f leading opcode bytes. */ b = x86_ldub_code(env, s) | 0x100; @@ -4686,7 +4688,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 precedence over 0x66 if both are present. */ - dflag = (rex_w > 0 ? MO_64 : prefixes & PREFIX_DATA ? MO_16 : MO_32); + dflag = (REX_W(s) ? MO_64 : prefixes & PREFIX_DATA ? MO_16 : MO_32); /* In 64-bit mode, 0x67 selects 32-bit addressing. */ aflag = (prefixes & PREFIX_ADR ? MO_32 : MO_64); } else { @@ -5082,7 +5084,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) /* operand size for jumps is 64 bit */ ot = MO_64; } else if (op == 3 || op == 5) { - ot = dflag != MO_16 ? MO_32 + (rex_w == 1) : MO_16; + ot = dflag != MO_16 ? MO_32 + REX_W(s) : MO_16; } else if (op == 6) { /* default push size is 64 bit */ ot = mo_pushpop(s, dflag); From patchwork Sun Feb 28 23:22:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388440 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2913124jap; Sun, 28 Feb 2021 15:26:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJw1AISMujgxxBGcjAtsPAW6oSm3rd0fH2pSpvqpF2mJYmMjneM07oLzAf7saZb687V/hk2W X-Received: by 2002:aca:ab85:: with SMTP id u127mr9977551oie.50.1614554813558; Sun, 28 Feb 2021 15:26:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614554813; cv=none; d=google.com; s=arc-20160816; b=c2xLe/twh7/k1L9Agk8duhKQUNYOuz2R3C4FYwbJfCxrhVJUKBgp5xpolRT/UpHwHa O7+uYWAk6VAz6JSarvPAMgeNQb31RdzqanJ34xTVxpYKyIlkvMLM/PKrKK6F7niG7Fvb 9JNBVp3s6XuhWKYfF6SrUNQP3QXNhB/JvB3w7AVQfd1zEkI6duIuPlEP6tbV3h+1z6jg fzs7XLVNU4jVDOK/4ZzZ+xujKZ+btlej22SY1kp5PJn0mjWbr1JPGQ3uHYLk6npzS7zK wJs4vdXw//IryUZmqkBLw2m1xQYwHIHco83uQonw+ZvMaH1gNScLtQHJP054/6lYUkH2 HJWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=zJUfAY1VyGRTYaSFMvv3X+jRgCoxyXqIhxTpwb/I4ZE=; b=J26ZyoVP6mbC+mS5yOEL6RKtZOlkVAjjon3dA+5rQoi3tqaagUFDy1ODEnKdtNMKGf UVIN3NZzhy80sbjklCR7I5Bg176s8RAeu/7KYEHVfZmKxWP037O9+aUP3PL7oo/d+Pdy doGvnl22h7E+Ykg17SSMFMB6+t13KF4RmiJapH2AqvueL9ArhWRiFzOi6RCiYLwlTjkS w8BLncUuECjItCaQfUmFnk9YisZT/ov/owzVixOAJIHuFDLchf7GveKWrjV5sY5nh+zx Is5Ep4qeuAcK31J0gWw+EJ9r/SSBsUQVOHKLpoBjiLrfNswNvEtLpghWL78hBQ9+veUb wgCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="SnP2my/S"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id m12si11145280otf.70.2021.02.28.15.26.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:26:53 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="SnP2my/S"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:34092 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVSe-0000e5-Vv for patch@linaro.org; Sun, 28 Feb 2021 18:26:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43642) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPo-0005V0-EC for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:56 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]:42628) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPa-0007jO-AU for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:56 -0500 Received: by mail-pl1-x62a.google.com with SMTP id s16so8756376plr.9 for ; Sun, 28 Feb 2021 15:23:40 -0800 (PST) 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=zJUfAY1VyGRTYaSFMvv3X+jRgCoxyXqIhxTpwb/I4ZE=; b=SnP2my/SyyHg3NsXQyEdUTKs4QJqM50Fo9IeYmtNhTIEqE0a1bh/8h5HxFEB/je+Xi sm/M9dKyBYgcLr/Ylmok4KoLGKPliatvD3yt7ECAUArfICECYy+EOu7ciZNrCWNLMS7h 3+MGpo4xpRrFu0wTolhKUk7K805O9nrlR4Fjrh6rAQz0ilqOfbexE9O0j3UqAM/PN0qZ smpqEES6cdn3HJFttA7cgo111SQACwuHcAwaD1kJNYcjuDvBNc9aSj4VKQOMuxt0VUoE BZgp4UXzQlaeVBjaVhcFi7QbkJAGTxSAF9AfnD6SbouHlY1EObIgg8Y/qR/cqTusEP5R wGVA== 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=zJUfAY1VyGRTYaSFMvv3X+jRgCoxyXqIhxTpwb/I4ZE=; b=OPE6hTRsudWpvuvIJ/IfREZw74mKDr7khugdbMCVJ/4qRPVe+m1xBBRja87bkrMfS+ mcbyPiS5J4WN60gX7q/eOdBTlfBVbYdtUmQArfda3NBvqdBcKQlxAIAe7ThSgdGtpo7b hilKv8wF/OlWyJvl34bql3WPqwjywJr1EXmPtrQL4+wtFMj9tK/5Te8We6J/e4Wm1yGR IbfPEKCB9S02Yewd7r41pnWnCjU2ncpZIEbdUhpH4SeGhJs2HBvWGZGxWSRhX9vVDhT1 9aCVq3/BnRCnRQgnHIM35Xgl6nNwOn07VA32YU5ULVzSBOr0YDjrgxzBzdi4g/aH9u95 W96A== X-Gm-Message-State: AOAM532L09L7CjzQjAR7j4ZvEnJTAUM94MBinV2P4I+aR9SnKvJWTfGy ZLK2mnx85BL4Aq8y5oMd0+o2RwXJ3WoYmg== X-Received: by 2002:a17:90a:4888:: with SMTP id b8mr14238696pjh.106.1614554620049; Sun, 28 Feb 2021 15:23:40 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:39 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 19/50] target/i386: Remove DisasContext.f_st as unused Date: Sun, 28 Feb 2021 15:22:50 -0800 Message-Id: <20210228232321.322053-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 2 -- 1 file changed, 2 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index deb1e43430..f4af92886f 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 */ @@ -8501,7 +8500,6 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(LMA(dc) == ((flags & HF_LMA_MASK) != 0)); g_assert(ADDSEG(dc) == ((flags & HF_ADDSEG_MASK) != 0)); - dc->f_st = 0; dc->tf = (flags >> TF_SHIFT) & 1; dc->cc_op = CC_OP_DYNAMIC; dc->cc_op_dirty = false; From patchwork Sun Feb 28 23:22:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388495 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2924157jap; Sun, 28 Feb 2021 15:50:31 -0800 (PST) X-Google-Smtp-Source: ABdhPJyjXHKFdH+6mRJCZ3EElASLo6VUd0FQ9GcuhXZq3EQL0hPoV3Ax999EthhxypgTpXmONmff X-Received: by 2002:a6b:c997:: with SMTP id z145mr11417807iof.36.1614556231411; Sun, 28 Feb 2021 15:50:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556231; cv=none; d=google.com; s=arc-20160816; b=m/QFSx2fHvJK7kZHHaKgl5NO2wd9SzLrYKCqLDLdDB8XGFRoNuNRMMLVauL1NVcPBV Vc/EeknRfzwXK/s+dZdufYeAwUELuMpkWOekJfJbtIt4PSFJTLt44tLbTie8/vxTaOld cwB3u2fq+ew2HfXOAmAF7mYz/s4LMjXbOQYHnxJhTZFbIHvuQRNLgLy0h7Wlz6F4ln05 bZ8LdHIqUOnyBN/P9Nls4ROd5zoxOrFrcBLCgzEqmDiqLAxCzDCsH4K/mNWFHiglB/bU N8fh+4yJUynYbp5DgV1RAfzu1qc/DJZNRh8S+gm94CDSCJCyv/JhbG2Qvj7iM//jqv3y svRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=rvmtZ0DdIylqRJGvy/9km7r4m1WC7louI5l6231nRKE=; b=d+cqqptencnZv11YTfY+L4X8FQ92n2Ql/QCDLNOdj3Hft3WJdLjLaiVBM6UqAifDL3 6RLMJMabL6o5PLd7p9/G6CIQL7fhg6SFTEA5o71L7gsrDWy5vvDbhrDcFdBjHQ54nZUp WbtzXI8NJi69eS+e0TM0s1hAchlUjUcw4VaBPm91uoht2q9OyXm8DN5XzrKA15sJJ44q AO0TaXJLrIa7lcMS/5YzjGsE9+TMk0eJ2OtMBDFV7JGjC5VnDx9PdQZMihQZZk99QIY7 Poai4Ddepd7jwtHSrDKhApA6ZhwcNIMZZGHKp6U++Z3l+Zx4d2blRvh4tslkLYIp2Pmn H4dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=nixr0SVa; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id g25si12964107ioc.83.2021.02.28.15.50.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:50:31 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=nixr0SVa; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:40036 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVpW-0001XO-PK for patch@linaro.org; Sun, 28 Feb 2021 18:50:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43660) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPp-0005Y5-E4 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:57 -0500 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]:44579) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPa-0007jV-AU for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:57 -0500 Received: by mail-pf1-x42d.google.com with SMTP id t29so10256283pfg.11 for ; Sun, 28 Feb 2021 15:23:41 -0800 (PST) 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=rvmtZ0DdIylqRJGvy/9km7r4m1WC7louI5l6231nRKE=; b=nixr0SVaFd2dQrJNJy0EQ5Isu1Mh5pEupgkEFHK0h+dpVOPdSXtzoa4rnL03NKOpEg IZZ4111C5C6g2S/NQUFVNzRL9eAX7hVuwh7cmBfD2agMqFAiUsWP1oeI3V57HTALADD1 9A7Dvj5thfUhWugVccAd7muO5rv+b0OVyXjwPJe2bsl2K0YzQU4zruXQLhmRr85gjot1 0v8+J2ZD+jVIGp4Mm1axSQxXklFD3HJF6MSpsbx4xKy7H4VH1wOB9+ibhxASIV8LVfgA VK2gFTFwW8spwU9G9caVvnGYZ4ADKH9jeevn20SNXJHXiPhhGQTbRE6K3nwY+846OCCE RQPg== 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=rvmtZ0DdIylqRJGvy/9km7r4m1WC7louI5l6231nRKE=; b=fbPF+YJAW0+PIVLW4GDSDjvL+WyZixHEnPRx1mzH9RsaW7Z3MzTUx4e1wqOFvrJ6Mx nly+Anq2sl56wG0TJP7XRaffhDxHi079RGBbY4UsCjCtmG9BXFKn61BXDUsOi4fwKudH BLFiBDdbgcUZROd/MppXhBuD5hl1l6qVwKoMQ6F9wyCLIoljZtdMkEWikKVe4R9f+EIV 4qr0ZVj2vO4un4TLtuzkQKHCJQ9uYkAJ3c8Oye5IKl5bfiFjx9u/yjR2oSREvesOxNyv suo+LjAhw3JbawzLlhNH2JG4n92cnRkv/fbUs+P1oGNboYVbcDa20Yv62KwFk9EfXYpR XwjQ== X-Gm-Message-State: AOAM5332fzaPEZPrTHrM/sjes2oiamDBQstGuelrrUbKinqCl8ur3tsT HA8vO4OH5EBFQgrDHwWxKa5Yr2BLcFrSfQ== X-Received: by 2002:a65:4083:: with SMTP id t3mr11398721pgp.150.1614554621046; Sun, 28 Feb 2021 15:23:41 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:40 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 20/50] target/i386: Reduce DisasContext.flags to uint32_t Date: Sun, 28 Feb 2021 15:22:51 -0800 Message-Id: <20210228232321.322053-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The value comes from tb->flags, which is uint32_t. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index f4af92886f..39af69585f 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; From patchwork Sun Feb 28 23:22:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388463 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2921816jap; Sun, 28 Feb 2021 15:45:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJxLpijo5gzJnekXB9Nro5xVMqDB1wsQiWdHy9bHtt+SsDEdi6k0qJAGl57aLGNgEjNaBu53 X-Received: by 2002:a05:6e02:1c2c:: with SMTP id m12mr11419020ilh.173.1614555908463; Sun, 28 Feb 2021 15:45:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555908; cv=none; d=google.com; s=arc-20160816; b=IQTfj2tuB+WxtMjU+sNx3y9Rd/EUq2EVBm0yGNvF+XQjRTRdKaNhoSbRYkDwsQsHWc 9Z1Uq4wL6Qqf1uA0zuruLedn6K+1Eapiuzwex7+AF8D7JtKMLFLH1XphVA9SZhzBioAF 2NxBZnV/FmJ9426PA6oyy1m6TcyKpIErIptjCb7qrmux0DA+1m1xoEihwHrhgCtBXjoy jmwAg2ivSkEL8lA6eosaQqj1JVcOGuA9a95vc9uOhB0AL1qBt6Y2Y5zrOcAFmX9+RzgB 2GV1z3u8Tisi+PZwm/0pGiim+GrS2MiC7t9VirVltMGCsof39gdohGaF90Db3M/e0G2W 1gIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=bk2/HEa3eVWiJHWySA58FMUKA4eJmzbnbZ4nVyAtnoo=; b=m7LutrUltn9J8BNGibTenQLLhLSHEsvprT/FBo7ibUlQDZujcCfqtiku93tmqLNSqt jYbLzjCCGK8ufD0dU0+5QemUkGYsL8Uu5BcOPbK0cnIC0ofyTc4+zRS7LByIhbxNYA60 LmdHo7MMyMG1bDvkV3uPrBTS/zBtt7DuGENUuRGY/RCbfy/s3QgUb/KF1l1v4+vMIwfG xLgk7SNl6aubWbn9bjUSSFDqiq6GaYuZrVpGccnGVRvE1Pl00qjtyobuHqzTv0cZYgHP nHshWI08s6IugJu8jkjassC0ZXD9Sf1S3KbILaPoylWh/cMIQI2w01YMtUn3MtmWFWKo TJPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=QKytV8i7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h17si5112998jaq.104.2021.02.28.15.45.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:45:08 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=QKytV8i7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:56598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVkJ-000571-T4 for patch@linaro.org; Sun, 28 Feb 2021 18:45:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43648) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPo-0005WK-R0 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:56 -0500 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:36349) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPc-0007jb-D2 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:56 -0500 Received: by mail-pj1-x1036.google.com with SMTP id s23so10488953pji.1 for ; Sun, 28 Feb 2021 15:23:42 -0800 (PST) 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=bk2/HEa3eVWiJHWySA58FMUKA4eJmzbnbZ4nVyAtnoo=; b=QKytV8i7zTEWOmiupA63yM8h7zzF7CsT8MQoFZQBv4PWJHI1ALn4AZhlAkN+7AXAKB xW/VEblDOQ+QEiriNJBDimgr7advnYf0PX2ai4UEcq1HHW5Zk5oPO5/YoMa/fcsMpZa8 pPejVjC45IrU9s0wFnLfTnlMC8SKV8n5xnLtHKRn7Tj6OT588EHyQIxbaE5Q8Q2sDdpg mg3YjY8OL2kTKWDV8gOPRWWKJy2iAAcZ/vO980myMnakikXrZpzeKmYsbDJpcVk2njwg 5KXmWy6HB24kkgCgRaegO8eLHcJadOygxBC/ARL8ea0BfdQlCGHoxrwIsA8plKox8kNN ew5Q== 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=bk2/HEa3eVWiJHWySA58FMUKA4eJmzbnbZ4nVyAtnoo=; b=j3Jve7UAXv3j4klGlB7n8yaIHooomrXGCNc9d/e2dA87zqz1V0UHMGKpu5SlyxBqYf Xg58DOyS6o1GMA6sDV+QAO33rEewyLVs4XujIT56ib1UF1ZKaFMkiqDMXKuxFv/R9Acq Xsx3SEkwbSry32gz7paDvh6nGyaRnha/kOUmS5PvDXZ/yvIDcKc7AbgluHEpQ7Eoivc6 GnO+U5gtGzIG0JywvHW5ZuP3onO+wXQ4NpQ9nE8anbF60JlLnOdqXLQHu0zIQ4/7MPX8 9p4D9/O6RyfIFiihrd9tMcJkM0sC1b3mnQ3TSgXevtSRljWnI0IueiyQZ7Kwy+s4Ehyk QaSQ== X-Gm-Message-State: AOAM530r4krrWxbwX9du7cFFnvhi6WAaND6JHelqQrLUwgrIDz/dzCC+ FljFt+2oLidKf6DhuGBb3C8enSrDdZGVhg== X-Received: by 2002:a17:902:369:b029:e4:b5f1:cfb4 with SMTP id 96-20020a1709020369b02900e4b5f1cfb4mr1184184pld.60.1614554622071; Sun, 28 Feb 2021 15:23:42 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:41 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 21/50] target/i386: Reduce DisasContext.override to int8_t Date: Sun, 28 Feb 2021 15:22:52 -0800 Message-Id: <20210228232321.322053-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The range of values is -1 (none) to 5 (R_GS). Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 39af69585f..19c2034344 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -77,7 +77,7 @@ typedef struct DisasContext { DisasContextBase base; /* 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; From patchwork Sun Feb 28 23:22:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388460 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2920887jap; Sun, 28 Feb 2021 15:43:04 -0800 (PST) X-Google-Smtp-Source: ABdhPJwW50fEtae5MJB/vXff8DRtNt8PYey3H/S3tGA3ZJVOH4pVPNl9XFbJRPL0UeZaMucecUJn X-Received: by 2002:a92:d0c3:: with SMTP id y3mr10775207ila.303.1614555784083; Sun, 28 Feb 2021 15:43:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555784; cv=none; d=google.com; s=arc-20160816; b=cfsh329nYt3cihoHuyYLzoiwP27CnpyyZtOh+LfNolRphN2PgfdjjX3sCLv9fEHSLM H+qM9WVv4ZiHBYR3W1uZTMpbYSBV8Tap2WYeIasSytOKFgRLswj6UsPFWRsnqPliO3Lt 3qd51ZI+0ZWiyaaqMEnNVdk8T7KbtFl1Wuifkde9idK8GaWJ7vTZz+Yqvu63Xg7WGs0T Qlh/oCw3MDImIkRdTUsnxdCpwb1jc3qZ4pv44s31/aQ8RE7+qxEJGFoTQvXp6DXVhQvS Ykq5w8zEgzcDaBMQlINL7Se0GQUGHAgiuCBSbVYWVYD8qkgK3iG/fbQEhHgGKx74WArc kUKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=s1JQvNSusTUc8RlPgZx0OC+J+/b+DyOZSi+hnuBILZY=; b=sHDPG0/vwppfCgIcTQz0dUIYjGWPrEZ4SV+NrXZvI5GkHRe5UtgEzFN8pGC4VvU9EB fD4Czt1d1PpbDWyWyCr0rkiYCvsmpyJz1KitAds0IIbDqD69GGUkBytIRxUmXm2mugm2 wYvTyiJMRvSG5zRZgvSMj5F3TOdRe8Jvy+0koM4d8I/mLdzvD4ISkP9IypJKTg180Qr+ xGwkUYVjEnm9aH6kPquh1PeIqpQu0qHUJkuHi36qtECBOmITJBXxYCaV8gz+0J/hv9dV VN+vOs5JQAscrh+wk/UOivq1041fGvqVYMDWzNuto6mmSKxIArUpyt7HnxfhOP+kayUU wOcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vZHpIMGm; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x13si14308528ior.92.2021.02.28.15.43.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:43:04 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vZHpIMGm; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:48232 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGViJ-0001iV-B0 for patch@linaro.org; Sun, 28 Feb 2021 18:43:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43690) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPq-0005bt-PN for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:58 -0500 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]:37159) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPc-0007kH-VQ for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:58 -0500 Received: by mail-pg1-x52c.google.com with SMTP id o10so10361881pgg.4 for ; Sun, 28 Feb 2021 15:23:43 -0800 (PST) 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=s1JQvNSusTUc8RlPgZx0OC+J+/b+DyOZSi+hnuBILZY=; b=vZHpIMGmN/SeRh7r4Y1pJYGmUo6iUtClj6aXZ888DkxIXK3hC1g/cNpHd/z26GAuKN b3BlCJkv8xZL/6pjDQq2DJIRcJU6ZgheNIQTy/pxw1OEFqBg4AfJpnlIcN2KXa+YqyRh b31kvPn3kol3u4yA5IfiyCz5XazfSNP7zxp6gRwnp8PdqiGmAXfUEwt8n6SFoL2jspOb kG43PRXEfdhQ6S7Yo18S0Sgd8Rwk3PeOssImAZ7kKQ9es5yorVlXGeKZpM/6QSDtx5Up 6q9hqS68uTubItmvKEoVLgHOluqw1H2OEaRmaLophD78e836llBD2qcMhnXvB42YoGcR iBJg== 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=s1JQvNSusTUc8RlPgZx0OC+J+/b+DyOZSi+hnuBILZY=; b=WgUqxWQVSongAruGJtKMCO3Rd/RaHwdN6tdeWgTTJqBPqxOjlixtLCK+cat8oKgMqK LwapS1T09e03ONgmccNOVXfxewWHnh+WP5VJHi6neOPa930sRb93a2i+lvreD5YlQuUJ Bhx8o0AJXIt9nA9hX/Pc1k9Vd6jUSHHUp3U+31udwTL1M17jcagIgxbAdPEemFM0Gpf9 B3ERL3VjbJUhabeLbIGOjHVSYn8G37FPuYoIatOCf2g86psLEY5FAaNgJGJMITQ42gvN rVcBF4hrpiNGftG/3HCGeR9CrklQx8Fp23E/umRaeF4Sf30Du6Pu0VLlR4VibrCL0m5u 6nPg== X-Gm-Message-State: AOAM5308gDeaIU5JJZZNvRtIqo3G/QPUBHs/4YA+qPBM4uzpWOE1G0df cEprquFIjM66D1Z2ImVUlZDKqFPoSIwY5w== X-Received: by 2002:a63:f808:: with SMTP id n8mr11330443pgh.115.1614554623109; Sun, 28 Feb 2021 15:23:43 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:42 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 22/50] target/i386: Reduce DisasContext.prefix to uint8_t Date: Sun, 28 Feb 2021 15:22:53 -0800 Message-Id: <20210228232321.322053-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The highest bit in this set is 0x40 (PREFIX_REX). Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 19c2034344..79f987b2cf 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -78,7 +78,7 @@ typedef struct DisasContext { /* 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; From patchwork Sun Feb 28 23:22:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388446 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2914757jap; Sun, 28 Feb 2021 15:30:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJwKC4np/1FaU0SyFjKvK8VIe6zsYUxr9x0ziuyZnsnNXnvT3GTmjrwlogvcav2ycnjPPGke X-Received: by 2002:aca:170f:: with SMTP id j15mr9619792oii.155.1614555026154; Sun, 28 Feb 2021 15:30:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555026; cv=none; d=google.com; s=arc-20160816; b=ew7c/xAL95XRck3wJSKVJGhIs0QuI+E/g0XU83BIPmUa431HN58RICfPZwg3863JV3 +LV7/om0laHABUhq1rwM2ZIofAt7Q03yTPr0HQv31K7nkcBeDyW8SJesMdB0VG0lM02g Tc+22zzR8ZIbFk+k0wy7b6lOXC8exin4iewAmP0/06OMpQLWFsj1PzfLi7hbqm8qKJHG nw9FiPz18jsgJXTb58+rOo7Hm3cjIcBWSl8M1m+/tAkCPTaZXnsx/Rm3nz8Gl8zD9Wm1 kfuDYpQ5fgnAM9/qtY8djByfpX7OrC5FlxwSX3Qz2foXpTVGQ6m2mKdk+Dtx0JIwVSJZ 2dOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=aU/KCKVa2SU1U8PQpzFTQgYauXXz+N+xlij7JLFYI1g=; b=x0s0yBAqV4sASv8a5M2dVYhxvcTJZ+KsLhotZD0tbhXNyZhvaFw2upZHbjWAxx/EN+ 2pta93oJRe3gzDth7hLdhus32/bRq3jfcoUlcfgsq+xYiy8VZM3gY3OnHKGa/yQqaCF4 okGVZyJoaNosvBReSDKLYgGdrHzNcWkAIDNmooRTNp4bwiNzU/B5qKC36ZMDPjfwTOB+ EjKzX7+sys0QZXKTLIeTEdHAwxAHn6AMXNaLFgOjEwleoopR31KM2epALEQDJwY5jDxk R0upo5mDlkyjiuDFUjzVanp1fCzdzK7PjzfIiy0y/jBdmaTnE9+RPayX61izO0xvz1N1 JlmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=zKgIOFah; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id b7si10274799oif.182.2021.02.28.15.30.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:30:26 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=zKgIOFah; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:42674 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVW5-00047p-Hh for patch@linaro.org; Sun, 28 Feb 2021 18:30:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43688) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPq-0005bi-NR for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:58 -0500 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]:42631) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPe-0007kN-A9 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:58 -0500 Received: by mail-pl1-x62d.google.com with SMTP id s16so8756434plr.9 for ; Sun, 28 Feb 2021 15:23:44 -0800 (PST) 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=aU/KCKVa2SU1U8PQpzFTQgYauXXz+N+xlij7JLFYI1g=; b=zKgIOFahQwgy6IOU5DDM3U2miwmiLkjx/29S+LjB0+9n1ug37B0r98e+Fq4Z73B1gE AyIUfmC8yXfW9e6aJHIE84zgQgd6TuKgalQYNkSSvfrSymb8WwfhGkar2wH35eQmIQge OorpSJaBMzvKeuC/B3+5afWmVOgzdbEeP3wxM3J/j594t8ca5Ws8KUy5nNNUY5GhGtsN UZ7T4Udt4raHNjAQH2UCwlnBCkX5NBzCE9vuwnduVcYy+Dl3pU8kQ8qNEGxaoPYFOhNg DTroNQly/ACL2Q6HuNF1MJX6Tvm72yH+/RtFshiZJ8W6CYnJP8Up+Lpq2F1Ih59IsyF+ AJ5w== 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=aU/KCKVa2SU1U8PQpzFTQgYauXXz+N+xlij7JLFYI1g=; b=gLs0S9Jep0RMgl2A7npA+fOWWgQfb0Z54BYEwpe08eSY8LqbhytvfpXh+88rtgM8Rj 6PB8Z0Ql/UD8VOEcnE7JYloNvmwvYi+QLahJ8rLrw6MteTRIggPvs84CWYtWio/d6Y5V pZbkXzinBIfocKkkCvym2RfQ6xDMrcT3NK3lnEoEUHTfj7bbrnljJYTPITXxG0r/pi/o d4Gw/TYoJDqyZ+z4WlunJjenRQ1ZAk3C51/WKjndwArgJ5jVer6prbQtUGrtocGLnxZV u5sCJNZ1mrxTJdTOFNp+gYLjywogFDVioQkL1BfFfiWUGqNMveK0jav76eXH28k7bGel valg== X-Gm-Message-State: AOAM5329GrYxQvWWMxjLBHL23PaeONupDly9fYKv99siZGDg2lZL7EtG YvoViJIwcEpciDYrPmcyfOo0DMM3TRZImg== X-Received: by 2002:a17:902:bd96:b029:e3:73aa:e14f with SMTP id q22-20020a170902bd96b02900e373aae14fmr12957571pls.9.1614554624117; Sun, 28 Feb 2021 15:23:44 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:43 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 23/50] target/i386: Reduce DisasContext.vex_[lv] to uint8_t Date: Sun, 28 Feb 2021 15:22:54 -0800 Message-Id: <20210228232321.322053-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.25.1 Reviewed-by: Philippe Mathieu-Daudé diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 79f987b2cf..3b7660a019 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 */ From patchwork Sun Feb 28 23:22:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388513 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2925067jap; Sun, 28 Feb 2021 15:53:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJwQuHVlJK6jJpg2BcnxYe9YnpLFgsaAs1fOhF9iccqOae5KhLdKL+vP9LX14vJlx5mQjEh+ X-Received: by 2002:aca:ba83:: with SMTP id k125mr428895oif.49.1614556385893; Sun, 28 Feb 2021 15:53:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556385; cv=none; d=google.com; s=arc-20160816; b=lPkBNB6z/+Ida5Q6qKaboPz1eX8mBOMsswuy8h1JstjXnqBxTF+hBvkKQukVFP4Ne1 /eUylFNWYNlfN+FW6I421jxi36EbDLDOezze6Jl00MCP/fKmsz/CloaPQZlgGhL1Hrat ojiDPmSy5uMR5hJdFqJ07daeUwfju0Jr4lKNKVijrg0sRxZra70Cm757ShnWLxEs95RC aWRNF6yEkzU4O1BxqyTvYo/9ito/UmSOXs7ywvRWu2hyBO4Vo7FdlgUpSI+P+dgG+LML dxpjFwLgpLUlXmUAIhQlILTokfkE7fp9nGNwWkEG6DPE8MKY2GUllJFm/20i7C6vZ6hJ //Lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=Jp1oxTR2VzQtOn8Dm1XpEq+MbBttOBriYtfiWssZL7A=; b=EHFSOAoHlBhKNvI6fp4eWqac0B4QOiAGf0HJWtUUAQWtca+OmuAtfB5ZPHjn6fF6sd q+7DGOxnKutU5fDtjLUi+m9lFTlCEE78pm+fDFccqHyyN24L+Z/kZQ6ip8juiR6lTFGb WPVQeaGlWyYInG0I6n4TE9XguE7hmy+RWx1r7qws6crxYTOTPI8E3AHsUgI9jefpIPRd eFu5L9jx+qaGGco1WptIl33P6E40k81nv7xXz+ZUNTAdTZCdPmc3Jy2e6kffCILgT7rR pWaf76ZyZ0LujiNMjIqq2a/7SWlv4YD7a3UKJVZFUjt7OaCkIjYCis8AKC7NsXAzlaVQ 0BKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="rf0/9ezE"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h66si12311874oob.12.2021.02.28.15.53.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:53:05 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="rf0/9ezE"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:48596 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVs1-00056N-8o for patch@linaro.org; Sun, 28 Feb 2021 18:53:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43678) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPq-0005a7-4t for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:58 -0500 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]:38892) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPe-0007kX-Ak for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:57 -0500 Received: by mail-pj1-x102c.google.com with SMTP id l18so10481623pji.3 for ; Sun, 28 Feb 2021 15:23:45 -0800 (PST) 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=Jp1oxTR2VzQtOn8Dm1XpEq+MbBttOBriYtfiWssZL7A=; b=rf0/9ezECXmoPiHX5kVLdBBVzD2E9xwLtlRNcb0qVJE3Dbsz/XaS/yTwEQ+hwi/t8m vmKnQFGJ+euKvNQUofZjQSxDTx3pWXgxj3VPTxBgoeQbgVozd+K+dsy6+MO5mZTCGA3a Yp6aX9/yrRwYs1aN6hX+w3t3ccF6LVVYO6K9p/1BeSpy2Nz2vwAlHghTfQoU1yTGTn4G Pm1AD2LSkF4J9nxxj9VfBMujam+n7D0kUsnyJq0haQWtxdTWnLuY4t7glNnpnfFuCzGG eo9hlzPsfyDTicXisG0kCz4U4/cgMogx69WtTBn8KmK9a9WBD8pFHoQ38vsRsp/jXTQk NaJQ== 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=Jp1oxTR2VzQtOn8Dm1XpEq+MbBttOBriYtfiWssZL7A=; b=deF8If7+Opl7EuapU1BMwgpINSlYvEQkZgKsAnJF934jZD64IVLlS2VPFPkK6k3ywS gMELiKspqvrMW3JCIPYEcftMgogj+Iq+Is5jVW1bsgGiyq8lfXuWhgeqBgR/NBCUE7vX +OmWZ2oN0Q6SZnP4u3Va/m3Tl24tB9ZDv5zZbYqvhpkxeCfncMDXC/QKDsCP1cRYk6Ue Rs1W0GUA9+So9hHpbpq939/iPk48V0ltft4Hfwv9AWnh/yZk6Kzfik5TI4LFpWmS5fWC BNJHGKhfg32YAw8DOcXwKDenh3iHJMTxQTWC2MwX58DTWfhvuuLbjcdncqEqyxFv0YIZ uOYg== X-Gm-Message-State: AOAM533oPbqo5U0uomUXB8+GN042Ab+yYV3xJfEXtVGRZnhnZW/fU7nG QKxxE4VMjRAfyjFS2jj9SakgED8V5i2tXA== X-Received: by 2002:a17:902:eb11:b029:e4:a5c3:42e8 with SMTP id l17-20020a170902eb11b02900e4a5c342e8mr3857985plb.26.1614554624942; Sun, 28 Feb 2021 15:23:44 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:44 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 24/50] target/i386: Reduce DisasContext popl_esp_hack and rip_offset to uint8_t Date: Sun, 28 Feb 2021 15:22:55 -0800 Message-Id: <20210228232321.322053-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 3b7660a019..9004f83c52 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; From patchwork Sun Feb 28 23:22:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388459 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2920881jap; Sun, 28 Feb 2021 15:43:02 -0800 (PST) X-Google-Smtp-Source: ABdhPJzTmbrM3ZHL3z5tII+/Ne+2BMRm3QjaJ820qEH+kCZN/B32uudL7ELgy/zLlxxqNdCQf5PE X-Received: by 2002:a5d:93ce:: with SMTP id j14mr3105725ioo.172.1614555782876; Sun, 28 Feb 2021 15:43:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555782; cv=none; d=google.com; s=arc-20160816; b=NFUkgpZ08inl3kvFy1izzjT0YkRkzs/nuFxZZn4AGNYe0LcpT+o0t+NM7mPhoWuP07 ILkGA1EgwtKF3L/gJYS86jEI6L5zGQNWeyhNvKkwrZHgk1yRz49mj8p/wvSu6HPbcXKC W+6twvI3SqXm0vhoDWrGRYZMaSq/m/C+zvWTA2FX0BrEL+4jFZKdOrOVvtXbnYfspHal Jp3u8IaGuLirDb7h5rR3bu8lmp0P9gE5SdlnGaPsEnarWisZ6oKa6xPPlGvwLZgDfbnU ZOUi7WzwUL8T4VMx6IVnHrjoRk+LzfuWh1/qMQYO0fzUz8Sy/LIpJvkXcEHXE5YtB/6i DNOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=4uX9QPl9X+aFdcuNr9JmvACrJ855sGkXtJeh0OS686U=; b=ftrmgdtu9fhiBwq/+1oJuIi06DnMFzhNgSMXU3qDWUgMquOVua7ctAlNw1A3EKWezO K9Lswe/HLv5+AtGaMk8tnfv70mUXxviv8tmKYDT9ZM3yWuRHsba7to0CuO2+Y6UAwBWf j3Dfq5amdR9tMocn7V1RpxRuEepokitT3aqO53e1wPMDE0gPHdZ7UUgRYlZ0a7joQcur H+NgdgvXnZss0B+rSSd6gMwD1qmrKHHQqnYl2+Pn2AWt+SxP+IEHD3tiVK7IT0A/XM0Q V79kKI/rHDhOAMOBcK8Xe7PzhuM/bTcLH6TgVQYXKcH+C6gn9v+j34oBB+VZCyGrDyuJ AKAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=mwRcCD0G; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id w14si14397861ilu.77.2021.02.28.15.43.02 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:43:02 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=mwRcCD0G; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:48122 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGViI-0001ft-9R for patch@linaro.org; Sun, 28 Feb 2021 18:43:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43718) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPr-0005f3-TC for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:59 -0500 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]:37207) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPg-0007ke-6w for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:59 -0500 Received: by mail-pl1-x62b.google.com with SMTP id p5so8770754plo.4 for ; Sun, 28 Feb 2021 15:23:46 -0800 (PST) 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=4uX9QPl9X+aFdcuNr9JmvACrJ855sGkXtJeh0OS686U=; b=mwRcCD0GtXiR+UlHBamF9ejU1dExxzLTl+TeQZ/tqyFxumc7e8dKwgan3tbPpiziCH QfMrAO5yJu/AK36SRyErnKhEVCchw0zf+DUKJwcrtzzmKYlEi8WbA+1cyeOIqb0govku MxjU0QHGCKjkGGFdRQHefekfGhy8AGplxULNhV1CswCtis9haAmJbOdRsbQqhqwfobI4 ozlBy31pQWuRnIH8o8NROr31luF900E8XZnT7Oq5GbU0n0+FZu3itCb21jPCzXuRClDp Ssbz0MIwzffvMcpAluxlgdouE90lsYJQGzdn+P4kdXjLbvR1MvnlEh9QlJtBwaFLHOET 4zuw== 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=4uX9QPl9X+aFdcuNr9JmvACrJ855sGkXtJeh0OS686U=; b=eR47mGjrZs9NvHH8ubx8s45d5md33WCHaMM1I3j1otrUEG0t+oer1QgIfmpV2OX2m1 lU/v2v2GARjM0oAnIO4NIj4g4Ap51FpUWFFGsp56lpbKwqK1i/XM2nIvipIEKXIEkjlR ylOrxF5aFKo54LICn2jBcMCSzDoH8PQF906AzeD2i2yP9gddhSZ58kcj9LrOp6kJRmf0 Zl0w/Gu7dHbBET4TMF22DkF06JmtCpn7uqg/zwpI391aMFhXIUDmosnV4LIWiTCCNlo2 /ssJwB6QWCogNfN3VdsqQPylGZ0vClGfHsxJm1VEFBrea4ELmw1ZXKSv7Mi1yowB/G4u PHcg== X-Gm-Message-State: AOAM5318ttfe+usfLmjsdKeSZjtSyLoutOrCoQUpSwEfsuhsk3XKc/NS qd26jK+Xab9HdefE0ZUdmf/ttuZNwKyajw== X-Received: by 2002:a17:90b:1045:: with SMTP id gq5mr14615356pjb.101.1614554625595; Sun, 28 Feb 2021 15:23:45 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:45 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 25/50] target/i386: Leave TF in DisasContext.flags Date: Sun, 28 Feb 2021 15:22:56 -0800 Message-Id: <20210228232321.322053-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 9004f83c52..92669bc142 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(); @@ -5534,7 +5533,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (s->base.is_jmp) { gen_jmp_im(s, s->pc - s->cs_base); if (reg == R_SS) { - s->tf = 0; + s->flags &= ~HF_TF_MASK; gen_eob_inhibit_irq(s, true); } else { gen_eob(s); @@ -5600,7 +5599,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) if (s->base.is_jmp) { gen_jmp_im(s, s->pc - s->cs_base); if (reg == R_SS) { - s->tf = 0; + s->flags &= ~HF_TF_MASK; gen_eob_inhibit_irq(s, true); } else { gen_eob(s); @@ -8500,7 +8499,6 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(LMA(dc) == ((flags & HF_LMA_MASK) != 0)); g_assert(ADDSEG(dc) == ((flags & HF_ADDSEG_MASK) != 0)); - dc->tf = (flags >> TF_SHIFT) & 1; dc->cc_op = CC_OP_DYNAMIC; dc->cc_op_dirty = false; dc->popl_esp_hack = 0; @@ -8515,8 +8513,8 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) dc->cpuid_ext3_features = env->features[FEAT_8000_0001_ECX]; dc->cpuid_7_0_ebx_features = env->features[FEAT_7_0_EBX]; dc->cpuid_xsave_features = env->features[FEAT_XSAVE]; - dc->jmp_opt = !(dc->tf || dc->base.singlestep_enabled || - (flags & HF_INHIBIT_IRQ_MASK)); + dc->jmp_opt = !(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 @@ -8591,7 +8589,7 @@ static void i386_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu) pc_next = disas_insn(dc, cpu); - 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 From patchwork Sun Feb 28 23:22:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388458 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2919596jap; Sun, 28 Feb 2021 15:40:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJzw2gl1HYsG3InWsMl9M1d6WqJxYNjwJHRVA/KPXVY3QU2SwhJkj6+yf01FsN/oT9KLAeZE X-Received: by 2002:a25:5042:: with SMTP id e63mr19900718ybb.263.1614555618131; Sun, 28 Feb 2021 15:40:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555618; cv=none; d=google.com; s=arc-20160816; b=WjboAjMziHOGLpKBfrmemdG4MiXYuKMDxTu5PbcI0nTNWEw0oJkrhtujfqOO+D2jNX y9BcYCY5d5sQEDP/nLahiu+Qvg5QS9Q11gK2vsmoc3vw4OvtXe0/AECjSzT5H8jcjRLI AQ6MhxsTf8SrNfLyJSagko5azLlUFallBqhXqRp2DBXZbn8VC3LFrwvJXE6Wf9BUjCpL UYbT+z6YUn5cgCjKqzFOh4TO+b3L7km3QeUa/hk8KqP8LBBAvNwddjO0W3pokBUto3li frEnw2oyH06wP+olDI3XOJA0W+qiKpTgmDButk8dL+CNs4lSB+Pn+wYykgBvEvuybkYk g4zA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=b7j9ch8PyL7hMB8yDFIrEz2hIViL6J2USSPBmhNlSXg=; b=hVUzs5DCHQyA519U0ep0OmHIvvSZKzI0ljZv4Tcrbwu6yZJzWqW+/GTO4S8GGEeuYT UIesNpA/WaHKy00mEpMJJhoABI1dYdaz4BXTFrN0JV1ulcWO1906WWuApga0Jo1Q2/OF F5Cl9Vy6m+m5OhPgs5drwzDHpYbeyHxx68PeV5zjO0hbb/igOw9mvhQVxQOm0bBrwBgv RwQRKhERWglJoqa9JmKKuFqPIF6/C/4FZNSxh/4yu2RnE83ay7beecXLchvG3Lc0Euw9 KR55WcWiRBN/Ns0Xq8W13yMU1BAQ2/C0cMSk1lzaqU3Cip5XjrFGpgCnWUCF4L+WeBDN +U3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=XZKBH8AK; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v186si16952207ybb.315.2021.02.28.15.40.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:40:18 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=XZKBH8AK; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39490 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVfd-0006Te-Cq for patch@linaro.org; Sun, 28 Feb 2021 18:40:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43706) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPr-0005d1-7k for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:59 -0500 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]:42515) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPg-0007ko-6x for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:58 -0500 Received: by mail-pf1-x42a.google.com with SMTP id w18so10270080pfu.9 for ; Sun, 28 Feb 2021 15:23:47 -0800 (PST) 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=b7j9ch8PyL7hMB8yDFIrEz2hIViL6J2USSPBmhNlSXg=; b=XZKBH8AKwbjJOjaFxM4SDPh9/MCElHqUa2/NTqpZEySoAFoDv9PzxjDD1rZuI18viB 8N4UkAjWGXgR2gJPvYdUG0/ZnKACEvJXfa3aii0FAyMJSD5cmWRBW0UgwODZeR8qvsF+ KOzGMlPzmrMMUOz2q2gMgiNIXheDkvHyZ11aXVZtxKULtWAfuhIU/PaAeqAUG1DtY+EV NitwgPTjhL4KLqveEeiVg9pey9AC9yxQ9FRVYsaA6NFmpYF6eA2XEHjm7CyPZ9XKHjm7 tQKYBo80dczJ4wqIcyCi/43MiCq6DNlbCY2gchAUpHfSxeJfAOF3UXAG5k7br9xmt3z+ LEBg== 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=b7j9ch8PyL7hMB8yDFIrEz2hIViL6J2USSPBmhNlSXg=; b=n5hZn0jexNfPZLFtsfB2K+Ii3dNZX/fWHdtSVmdxdGboDOvroOA0ELkJcJZXgIWMmb 918BmjEiWP/0NxhTgvsJ4vUvCzYHOL4scjN9xcfQ4HzKP7pR4guNJXkKu0O1CXNjCoUN /ke4MPVs1QJ2rAtP97J6zepq4rd20LBdYPZUHg+Jb49khehCVp9W4pSDlsJNJJzt76jL cDH9xMvHvyYJSGiTUAQ/oDcy+Q3Oi+ZzpPj/GpG30NyjKXDjZpOFHYw+rWxjw34MvEB2 SIUvKARLDTFnqn7pjx535wLHHFyZyU8kt726aYsNCUdG3JIf1zr3QR1tMVIOSQpOT+1t fW6A== X-Gm-Message-State: AOAM533+YRepJ2uZUip6M+LmwUDGbk9VZzG1Wy5o1H6jEhcjZRr9lzzh k0MShNBlJiEuxNBrJrjpbZE2sb7fc/3ODg== X-Received: by 2002:a62:bd05:0:b029:1ab:6d2:5edf with SMTP id a5-20020a62bd050000b02901ab06d25edfmr12208904pff.32.1614554626271; Sun, 28 Feb 2021 15:23:46 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:45 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 26/50] target/i386: Reduce DisasContext jmp_opt, repz_opt to bool Date: Sun, 28 Feb 2021 15:22:57 -0800 Message-Id: <20210228232321.322053-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 92669bc142..6877873bee 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 */ From patchwork Sun Feb 28 23:22:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388520 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2925679jap; Sun, 28 Feb 2021 15:54:56 -0800 (PST) X-Google-Smtp-Source: ABdhPJxTomxr8V8rfSn06TGs8S+oxW4QqeLK4KQ9uMYzoGTgR3zN0Kf9WOTH1kb/5NuPAav81GrX X-Received: by 2002:a05:6e02:1069:: with SMTP id q9mr10891992ilj.97.1614556496525; Sun, 28 Feb 2021 15:54:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556496; cv=none; d=google.com; s=arc-20160816; b=jevQ0vY6zMkVPUmAEZ90XAMwBtlYctu2EOcKdEdmOzYIriwmziBooh+rjuWIftUXL1 5c11SddTrvatuoGJPBS4LB8CXFCQdl4rsRnfecUgScZNanTnHCmjopJ7Q7xyZ3V/z/s3 kX52uxrvn2cb3odQSNW4r1EYDApUnxvyh6FvXuopuFXmrEaQC01125tDPQnGVslHGr4g a+dsgxzyK3eStWFptcNytS0D4X8ol9VKVLXZ0xBWzlma+J9H3QXA3GjUypL13HZFGZpe 5fcMu6NUcoT2naOkaO/bQ7brxoi9BLp9doP8Zv0JM1UyN/zPGtgxmhpK7XsjUcmYwTTM U9Aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=U1XiVtYWvYMkkEWgKciMDe6IrloK2SNAwvVZLpof23Y=; b=BswfRiwD2Ea6/ZjcVmpo/0xFS0StbCWgyO8mXSe6911wf05UDA/UleDy3nRExFkI3P djaEzG9POjZU90n20lZ9k4g6DYHzixFHYH58yl1yMKZ+ppogIXH+6iB+Rr3e1egP29kI FfF0Qor9W7K26g1fpKKHq7H6gZkW5qLHXGU8jf/nGreNtutt/z1DAcTpCsHzy/OHtE2D vCebupwBZqD+ByJ173CYWkGDX45kFBJiCPzO4h6kI6NlixyKgI80b6ZoVeFOd2JRL0Dq n02hu6Xu30LXapp1oocvrVEW+j+dtR4KIXqbDyA4kSU6vr8XZfS4N/73NQ3UCszD7GlW lnlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=qtGgVQDP; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 9si13831837iog.68.2021.02.28.15.54.56 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:54:56 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=qtGgVQDP; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:57234 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVtm-0000Be-8G for patch@linaro.org; Sun, 28 Feb 2021 18:54:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43724) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPs-0005fV-2m for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:00 -0500 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]:37365) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPg-0007lU-72 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:23:59 -0500 Received: by mail-pf1-x430.google.com with SMTP id i10so1101226pfk.4 for ; Sun, 28 Feb 2021 15:23:47 -0800 (PST) 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=U1XiVtYWvYMkkEWgKciMDe6IrloK2SNAwvVZLpof23Y=; b=qtGgVQDPWGYx0rb+orSlBir1h0GtP34+RnbJ1uqjprms5xsmn3IkoPX4stkvSysUwy 0aFmXP0lOmmoMi2vmyWo6jH1fZE6ttHB9IBObdLvb1yebDUGffvxvJ/PZOmYoFb7vK/x vqJO03Y6VIouu3/C5914J3BNXqcSZ0SiwW1hg3NOa8hh8pdnV3xoEBc4A1wete4Hy3De 3WFOvz8tvo8rxQie9IXDdEqUk10zPB4xdjuNdoDxlyQ3P+t7Gea/dwVe3wZOAosBFtvQ cRipWadnTBKQEfrW/060lBQdLUC68KHVUwd16u+f+WhMuMUFTiocW7bL7rjLovpIcJ2L OZMw== 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=U1XiVtYWvYMkkEWgKciMDe6IrloK2SNAwvVZLpof23Y=; b=TV0h36aA9wd/V4AW0k7DzyeB2eVRELIPnWXUukRUKPlPGjGkYW02H5cX8qNjRKbD4O wJvRf7wr3b8wDIkqFxbe7j7Dmdgr8zDRggy1YSXoCze81NOk7X7HsK1omcUy2LNYOvS4 7QJbAA7Kpj1f9Wiu8XAZDopUmhE/KDUzKE9znWNxf8x/FjSsm8Xk+1V1/LlH7ElUg90d EjCL66/QruIWph7ZzIXJ4egPUtW8pRDqFZjK/A0qWM7BuKU2VWTn3Ug/V8zSNH4FE+rc b0xrl8Kit6Lp4wns/YsrPzAuScRBPQbvW7If+PkY2VbbSmkj/+JbogX/69GKVPsTZCgb lncg== X-Gm-Message-State: AOAM532kHTsODyvKSBJamUN7IFtDrlP+fwXOtZ3HSZoWlh3YY0Kl3+km iW04qQrBQ89rKLci/9Q7EfQeB1r+KZqOjA== X-Received: by 2002:a62:7e01:0:b029:1ed:8173:40a1 with SMTP id z1-20020a627e010000b02901ed817340a1mr12491102pfc.6.1614554626931; Sun, 28 Feb 2021 15:23:46 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:46 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 27/50] target/i386: Fix the comment for repz_opt Date: Sun, 28 Feb 2021 15:22:58 -0800 Message-Id: <20210228232321.322053-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" After fixing a typo in the comment, fixup for CODING_STYLE. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 6877873bee..36dee5c0c7 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -8515,15 +8515,16 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) dc->cpuid_xsave_features = env->features[FEAT_XSAVE]; dc->jmp_opt = !(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=0 when icount is enabled. + /* + * Do not optimize repz jumps at all in icount mode, because + * rep movsS instructions are executed 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=0 when icount is enabled. */ dc->repz_opt = !dc->jmp_opt && !(tb_cflags(dc->base.tb) & CF_USE_ICOUNT); From patchwork Sun Feb 28 23:22:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388523 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2927396jap; Sun, 28 Feb 2021 15:59:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJy+JLwcgEv8MEf9/UW9YgV6d1rbGPIPQVTUoCVnx7nKvHrFaj/H4KfGWjISbDxjthQm7bjS X-Received: by 2002:a02:7086:: with SMTP id f128mr13108492jac.104.1614556751992; Sun, 28 Feb 2021 15:59:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556751; cv=none; d=google.com; s=arc-20160816; b=fBLwaPV5HYGfqokyM4lw/dkhBDC6CzPHQ1o1LOWR8iBRGPHDt+cA1Em93vjhQ5wqfR /bRh97Ifvcd6D4OPadQiOMIlAYNP54lYhzIAuV6jc88sflvVBOgfU90HGi94VoYIqSDe p8ag+hn3CB1Xo9M3g+hg4nEjvC0TugY2SxXNLwxDRVTs98pgR052E1LVU7RuKkvpGzsb +RetdweLlwL63PMSYNDC/8fCuEpTYCWZT1WXLA3x4ik5RXDY7yvmMHCNe3j2S1gFoXEf 0CuHKDvz9WpyeKYBhaVvlwKmhwqifJ8sDHbzRpMCGFnDL67KoMDTfvt3JRPXhp9ykZxc 1JQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=LaK3xHS/fvHJ2f1smHUqdXOOyUpc8PJcLS6WrecJURU=; b=EE7OPq2yCu5Gr2FapM5pnon1pHV8OJd+6CsD2Aul94hjUBy8wMDsaFSfL0MFcE7fE4 ABQukSSgBq0+SWHJQc+p1cmq+c0Ep8mSgNJMhLPJxwwaD3ShUra/w1guRIZjlxT3brVF tuGSb6SsOWG3uivhm1C17KJkEBAjfzaP7j4dZc8K/5RxpT0gYWGa1KSYM1ANFN2WfmVS ONQN+jlSRsYnEa7MsFKzOJ65ayiPzHb4uubkSWn1iThUEL25YqOIX3i1/6yZLhl/6H3P DloLKkiu0lzaZQZJPokwecGwnS0hadzRr5zcsaKKpVKcCVRI+aZ9quouCTmxAbdkhSPe TzZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Dm5Nkehu; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id y6si13681769ill.138.2021.02.28.15.59.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:59:11 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Dm5Nkehu; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:35664 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVxv-00033q-Cq for patch@linaro.org; Sun, 28 Feb 2021 18:59:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43758) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPs-0005ij-Tr for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:00 -0500 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]:35878) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPi-0007lc-37 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:00 -0500 Received: by mail-pg1-x52e.google.com with SMTP id t26so10374621pgv.3 for ; Sun, 28 Feb 2021 15:23:48 -0800 (PST) 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=LaK3xHS/fvHJ2f1smHUqdXOOyUpc8PJcLS6WrecJURU=; b=Dm5NkehuYLOzmdU35O0j/RlAwZGbXA3HZbrc2uDP37KDD59aaKRSxGpsRJH+1B50Zv 5/r7FZl5v0/eYA+hW3zCqYEd/kfpSjtUcAvMN9ak7ds+WtzS8EKe/hr0fMN2fKUgqUiP XZoNh4qEeNDUzT0FQm3i5Lit7eEvQS1sbojm764jvFf4CBeAOgP5wuDsY1nld50A56c2 APBn0j3dDoIzhuJiSHuOQ4HX8lNo+feoHbozfFkRdEdnhBR/9zG5dg71T6W0Svj+fEgp YM2nrg5v2CjjYpnhuZigK6yMsztrjSOGWNzIAgKDkIGTJQjfM3zHEeS8w5Q3eUZdvlIA PiGQ== 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=LaK3xHS/fvHJ2f1smHUqdXOOyUpc8PJcLS6WrecJURU=; b=bqJnkd+NsToL3zLdxaRAtaMrrj3v8IRKwlRjt8Khy4ZW7d1PGImm4LOevIpDiLmPX/ KsqnhSMgnTEGHj88XomaeHSxzD1NibfBYleKBGdsxcRgv33UVBmWBc9QbEhc9TzGDwod AXLftsxXRwC4rPQHBDTa5pkcXUD0Zp6wkFxu9dinsbAXXF3P4h90oIdtJVM76hnU5Pyq MlvWtCTDvG2Sx9WDG+yHpXtPfqO9YLc2tuknZI/b1b5Ulq2kIv+CzUUcq48DDg+XdgUk jApwBxlW7u7dfflSjyRMGhARCE9LDGDTcHPEajg+tjDinNLBk9GhN8mPAYH6gIe+ya0Q bK+w== X-Gm-Message-State: AOAM531atkIJ7UVcqwzT1RUf/nESK57OBTCDXJuDZSmjt/dEmVM1Lxvx 8Bp0gaIZVPxJGFsG3n42KrbQMNa5F5BBnQ== X-Received: by 2002:a65:4088:: with SMTP id t8mr11463969pgp.296.1614554627590; Sun, 28 Feb 2021 15:23:47 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:47 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 28/50] target/i386: Reorder DisasContext members Date: Sun, 28 Feb 2021 15:22:59 -0800 Message-Id: <20210228232321.322053-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Sort all of the single-byte members to the same area of the structure, eliminating 8 bytes of padding. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 36dee5c0c7..f0bc2df98c 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; - /* current insn context */ - int8_t override; /* -1 if no override, else R_CS, R_DS, etc */ - uint8_t prefix; + target_ulong pc; /* pc = 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 = 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; #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 */ #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; From patchwork Sun Feb 28 23:23:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388465 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2922316jap; Sun, 28 Feb 2021 15:46:07 -0800 (PST) X-Google-Smtp-Source: ABdhPJy0sw5H4BLBw8llyLOAHxQ8YeQr5SP6S46JCEm4a6fn3hcGiWBjzt+QaZMLbXs9Jtj7jSmg X-Received: by 2002:a05:6e02:1a0c:: with SMTP id s12mr11185146ild.177.1614555967486; Sun, 28 Feb 2021 15:46:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555967; cv=none; d=google.com; s=arc-20160816; b=ObGvz5kgsE264mkXO80zkfjEs6JE5i80u9bEbMTx53IgN+1S1z6/tSTCMnQPO4KUnZ nZmH8pLfigVzBJIsEr6qciIKsAqFWqi4yHzDWcqFEV4J/eySrq3bVGRGtFvpeE4W6/iK 2PjyE6k/+T1J70I7EcieWwCRA+Z107YnhsH0e7ixG3xu1rGb3Pq0glCl0kfqDRwJGTqH BjEUCWq9FrfCCEaQFjyaeoF2zrlZ4RcF6zCw29Dx1qCdmBj1k6rVVkZmowL/btecnjfJ ucx0pssMkMPSyJqPsWuC5HBwOtLYWuVDz/xy7SOy+Rzba9dnOkbACipkXcI03sT1WTAy T5lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=czdE06JLRHpOqF9jSyw++HZIOzTZNz7lm/9aBoir1rI=; b=JzPYMgIxUUvp7TsY1DbxgWkBdOQwYAOoopoXIb9zovJ1WxO2Gn8RGySAHaTNV9Zse0 CoqoFVeq+APysfxsrFtdu/KnQwq/rJJFByisfp/oiLfpz+01diWBGgi7NxtXlvc83VQD v4UOb7WuEl81a9XWDJx0rbspZ83GLnqA9aIjJhr9yqIGoETfQr7qu00mnrIhz0GF8ba4 tcLx7oaQLVETxRXeFe5yMh9C+bgsA3kOrADtUP1pYc20bYjtEdCub1yrndA9ZcEDvavI NvGKMXGar+NySg/MaxEE2WbFyLTKsX9Jb8Sfwf0uRf3+6yl06n8BuRqBVOwjge0Rls/8 DiZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=u+B0cgxX; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id b13si14471997ils.23.2021.02.28.15.46.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:46:07 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=u+B0cgxX; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:56638 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVlG-00057j-RN for patch@linaro.org; Sun, 28 Feb 2021 18:46:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43760) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPt-0005kC-6P for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:01 -0500 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]:41373) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPi-0007lj-3H for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:00 -0500 Received: by mail-pg1-x536.google.com with SMTP id a23so548434pga.8 for ; Sun, 28 Feb 2021 15:23:49 -0800 (PST) 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=czdE06JLRHpOqF9jSyw++HZIOzTZNz7lm/9aBoir1rI=; b=u+B0cgxXDQeTsumcfKSqWViZC3djhMfcbhpfuj9aVUDCArt5BvRFtRaogR17aCaMMp qq7oWvwzgGm2LOJtyb5wrj9RMfaLGUdkWjQTWFvPJzeSA5iI6cHIg3W2kdwAUB0tOUeJ bdfmzMUbnCEClZR1aLRjJG4FjghhqPxgCemrw+WAFkmtkk1Czu+Nr8QyU/7U68Fgspgw lo5lqrOBAmJCcp8ffsigbNe6EOMPg6RUx/kp7c39eYwDXP0Csp0p/q4j47IIljdcRbgh 4t92E4QBqYu7C+YVRw/yxS/JAxJ8RUtdfYHWzCk+ijt0mMeuwHp9vfpLO0vWFO06DjxQ aYug== 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=czdE06JLRHpOqF9jSyw++HZIOzTZNz7lm/9aBoir1rI=; b=UxzKefgVSVlZU3AeQEjK7Vv8y/xbnbTHiIHhmWT3Irr2FXbgRMLLyZpzQEbp+OOwez 2YccApaOd2u7EUE/FB5qdXjaK3mHzVQYTTRSIH+zuoqZ5kcmY7ZLriOwvyJ895XAhOtS FQP4Ciby4aCtdnAZjfVgTR8sEJ1GD2TdajG16QtZLzNKoy5+FO5z5Uyhhn2z4bGoH78P uBseawG7KbxRIrsXCVBWzX9ukTM9o6I2nxU2/AV7IoI+e4A2SpJMg7Cz8Xvna0lgIJan KYaNN2n2Z9WGcYXKzkCD50V9092sZPtVkyFAo/CKzKWZpjk/fvSWI562KwSeKXLO0gx2 vPyg== X-Gm-Message-State: AOAM533Yo33s8i9qTWY2s1vpfe4tVUi8KDDQFx6hCqgTpsX0nIySrr46 03enXvLn6X8KnBxB4w8JQ9U5+yesvmQEyA== X-Received: by 2002:a63:d752:: with SMTP id w18mr9293504pgi.343.1614554628212; Sun, 28 Feb 2021 15:23:48 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:47 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 29/50] target/i386: Add stub generator for helper_set_dr Date: Sun, 28 Feb 2021 15:23:00 -0800 Message-Id: <20210228232321.322053-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This removes an ifdef from the middle of disas_insn, and ensures that the branch is not reachable. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index f0bc2df98c..42b96a2669 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 +/* + * 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); @@ -8069,7 +8082,6 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x121: /* mov reg, drN */ case 0x123: /* mov drN, reg */ if (check_cpl0(s)) { -#ifndef CONFIG_USER_ONLY modrm = x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)==0xc0). * AMD documentation (24594.pdf) and testing of @@ -8098,7 +8110,6 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 */ From patchwork Sun Feb 28 23:23:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388525 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2928503jap; Sun, 28 Feb 2021 16:01:04 -0800 (PST) X-Google-Smtp-Source: ABdhPJy3sGXZbfnSO/uojFjmde232419KZQ1pc0114Dt3EhHYhIQH8nS80lxvLmVDxK+HRUS7hr3 X-Received: by 2002:a6b:3c1a:: with SMTP id k26mr6371795iob.113.1614556864340; Sun, 28 Feb 2021 16:01:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556864; cv=none; d=google.com; s=arc-20160816; b=iI52cSMHPUhpFGVwHp6rsYizeCAn+G6wJzTpwQsd5VMctpnfNIFfO+3HzASRGnF8Kv FozEM5/TeU96pY528c5/+y/gvypIO8fM7VQuaCjDthMiE60847wGdQnq93uXG7/YD8Kl rAGFq/zjGneDKc+3IK8l0sFFzY9tCQ2cFo2lxJ6x6kXQe5H9tvZk4h9uybG+CJWt0MDB xfgp3ivRaBmh5Z1pXqYgm6q1ASOGKaqFNMa41DU/ZW+eEFpMtznZZf0BXjQX+aoahYBj yf8tGoiNCpZ+qLuS9NXgimA7WE4qXpKaO9Rab+ELrLFAI/Ak4MGWYc1/t7WFmXjrZYqm Cxvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=N1nE08dhMaE5XVBv3v7IRuYZmIZeZZ0rBWSjMoXgkIQ=; b=EmxRXlrXQZDtXCMPoXZnUciYpaUZ8B6urhqGI0TdgZtNHAA1TWoB4JgiS3Q2KS0iIc Mufu0Bm3VzGDNvFyPBON+whgniJT5LxemmGgqvKMrYbWsvgtYucm5Z2zTDFkrhJLXezr M9cI4PoaIvWViMvBgrYRH/SK+JViVLigSMoNaVpDrmMW1yWsxa0LHir1JOiU2KhziBpV /61UnD1jrR51Pl6xGCMphsqe+CuNFulLPLzfsDDKcXNpNsLLnpJ7EUsJ5ragH73c6b4h 6Wp8TORs2L4K4IDrZeQ0H5Xh2ALIQ9UY+1M32FhLhexSoGgx4nrfO/rp9uq6QIu0fnfs wR8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rP7XhgRg; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x7si11100334jan.84.2021.02.28.16.01.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 16:01:04 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rP7XhgRg; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38958 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVzj-0004fK-Hd for patch@linaro.org; Sun, 28 Feb 2021 19:01:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43768) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPt-0005kx-Ft for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:01 -0500 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]:45413) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPi-0007lo-3V for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:01 -0500 Received: by mail-pg1-x533.google.com with SMTP id p21so10339005pgl.12 for ; Sun, 28 Feb 2021 15:23:49 -0800 (PST) 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=N1nE08dhMaE5XVBv3v7IRuYZmIZeZZ0rBWSjMoXgkIQ=; b=rP7XhgRgkA4+uZZcM8FeE04eXJkln/OiJufdc1c6+i+RwZVXyaF34XA97NuYnlJMpY 5AQ9TTce/daVaJkQz6LjaW+7ewqVHqSHPbXPx9UA+PTDHGOgWKc0/yPC3S7UPA0AZOg1 euR9dE+0E+jYcB7+oBIVZk9fPbmlcVVuyKKp8ROFB//bBM/HOhEQ0vinLJ7J84Mio2q1 mcavoGT2jSzJwC48a/ZolgFRDloZQNZHyhIE9jFdkzy4eb5UoxASCwQoyaITmnU4vNbq sp+q16/ERJ2HqvAy1dgVbibvObnJncKDSroherex3nJXJStkz51udhD7bjOIFs9RM+qa +7NQ== 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=N1nE08dhMaE5XVBv3v7IRuYZmIZeZZ0rBWSjMoXgkIQ=; b=Rn8Weq0ATBwNQlRRjfGfxxYUKD0EN+zgRku+L+mJ1ggPXdNLh/X8uHiJq7LVY/sXul xfoyb7BifxxXiUX57vl/TZX/mRsqdcKlSJBCkDlq0Fjo1RBEaxS/7dx4+whykxvf70sj z9k+avn9+VRSgLlFMte5qGUCxgbbYUQqfSRRoUDrnmX5O/biAtTmosFspqJ1xHljYX6m w9ENvZzqFWDfgS4Uds2MQGqM7CyAYeiBABr2tc4ytc8cRHhn0NEsiaZxLwR1T+w0RQ0X 5D2DWdhdVbomOML1XMoVW1yuTNPfBIuFOT6kgw0DDP6DcfwyvL/1mRKrGj+GkPrgK/PX hXow== X-Gm-Message-State: AOAM530UI6+uQ+hAN9hfRY6X+Qi88maqKNHGNtE7DdFXgVkh+xF02Pf6 +SLBdJDv8agtRIqBOzY6zIvtbS47ff2Sjg== X-Received: by 2002:a62:2c58:0:b029:1ee:1afa:432b with SMTP id s85-20020a622c580000b02901ee1afa432bmr12718906pfs.42.1614554628826; Sun, 28 Feb 2021 15:23:48 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:48 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 30/50] target/i386: Assert !SVME for user-only Date: Sun, 28 Feb 2021 15:23:01 -0800 Message-Id: <20210228232321.322053-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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, linux does not do so; VMMCALL is illegal. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 42b96a2669..3779da9042 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) != 0) #define CPL(S) ((S)->cpl) #define IOPL(S) ((S)->iopl) +#define SVME(S) (((S)->flags & HF_SVME_MASK) != 0) #endif #if defined(CONFIG_USER_ONLY) && defined(TARGET_X86_64) #define VM86(S) false @@ -7489,7 +7491,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xd8: /* VMRUN */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7504,7 +7506,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xd9: /* VMMCALL */ - if (!(s->flags & HF_SVME_MASK)) { + if (!SVME(s)) { goto illegal_op; } gen_update_cc_op(s); @@ -7513,7 +7515,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xda: /* VMLOAD */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7525,7 +7527,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xdb: /* VMSAVE */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7537,8 +7539,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; 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; } @@ -7552,7 +7553,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xdd: /* CLGI */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -7564,8 +7565,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; 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; } @@ -7575,7 +7575,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; case 0xdf: /* INVLPGA */ - if (!(s->flags & HF_SVME_MASK) || !PE(s)) { + if (!SVME(s) || !PE(s)) { goto illegal_op; } if (!check_cpl0(s)) { @@ -8510,6 +8510,7 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(SS32(dc) == ((flags & HF_SS32_MASK) != 0)); g_assert(LMA(dc) == ((flags & HF_LMA_MASK) != 0)); g_assert(ADDSEG(dc) == ((flags & HF_ADDSEG_MASK) != 0)); + g_assert(SVME(dc) == ((flags & HF_SVME_MASK) != 0)); dc->cc_op = CC_OP_DYNAMIC; dc->cc_op_dirty = false; From patchwork Sun Feb 28 23:23:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388449 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2915353jap; Sun, 28 Feb 2021 15:31:39 -0800 (PST) X-Google-Smtp-Source: ABdhPJwdJkQzeUBSG3+9epL6090IBSWeq8/mp36yZDFZKzdjOpiVcPREt7D+R2WYwryEHa7XL7yb X-Received: by 2002:a9d:7591:: with SMTP id s17mr10940538otk.144.1614555099565; Sun, 28 Feb 2021 15:31:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555099; cv=none; d=google.com; s=arc-20160816; b=GFvy/JB4y7q2B/rMfdh3GMWMzxM14TpqZCdVFl51nZHWMY97AYaRTg8SRfcP43kuIh phKAwjRgYNrmmfq3DS0QTsuc9Fi8MUvyC/PEm2uumDbx9gOP9rnmLUYMfmp+eZ4UOMTB vlQEV3MVfiqQw6UegCm8KxyWVVRie5dSH/ozO0nCR/iWHW+Xr0LGxLDHAoS5MPdGQWCu lwqNJBHBohrwa96WohhWRuSLwWQh9TH2NyCQ8cKnIwH+0N88JTuBiLfBSAsfvguX7fkD 262XLx1Wn4YEJ2yqIGp2gEQ0qLMV11l8bHm2rYqxzZwkMP/MeOwGVbtqIM0Ty06mk3il v8ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=N0oZwSek+9kdlYWcTKW/6zdB8jdhgx5Lh7Rb5VgVPYQ=; b=NjeI4sK6HRFI75sv2dk9GYmk2eBfLRZGcWRZKM0JpPpDRsKs8UAqtZu+N+/k6oTU5p Z87r5OMUQ0ZZlwUmQ40qBmZluXIi7DOorrhy5fT5uUe8NsddFsK0CyA4VIJxBF0iTT4i yIJAshiN+HqyolUwD1qnJQvx2tGB0EoMnkXDQWxTa4DD3AgaMY4bFZNVfjts1R/n5Q3t XlCp3sx0pUgyUYkI3mnUyVsb/NyAH4FlJIQqvHzPTuxhGEZB5iOkhfDvAryoB80zckG6 FtWf2unDtzQXnpPzdmYAbc/kLl401Xt2uHsILbk0DcoKUyp92ZuwA5lsxp/pQvrewFpz dFmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=R5Zl+aKW; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q13si13213452otg.18.2021.02.28.15.31.39 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:31:39 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=R5Zl+aKW; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:50976 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVXG-0007fn-Ul for patch@linaro.org; Sun, 28 Feb 2021 18:31:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43794) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPu-0005my-8I for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:02 -0500 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]:42519) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPj-0007ls-5Q for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:01 -0500 Received: by mail-pf1-x42e.google.com with SMTP id w18so10270141pfu.9 for ; Sun, 28 Feb 2021 15:23:50 -0800 (PST) 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=N0oZwSek+9kdlYWcTKW/6zdB8jdhgx5Lh7Rb5VgVPYQ=; b=R5Zl+aKWQv/P+q5JdaEiZW9Jo8cK2e0t71UkLR6CftRtbDfpy9nnDnUhn/b3m3rAHL kg9ATIjQBY5jBZ7TCGXE1oIXDVENlWdcG2WovgfRu4WiZULt494nPWZf/48PXkZO4X7d K9qOI9VtWIutOAS8Zt0cRmk0GrADszFbLfkJY4+ZTVUXNrz1vGitfM1M2/KVm5j36UwF MHM6yhjf3Mda61+5EJSagoHa3Wastoz59aoQahjJLLJDKvYOSZgTJFMaMMzxdtMicqhC VrhqD9JiE3urJfMm1GIkl8ZMVevhC2luXijx3lURcvV3CaOz8Pit5AXy4HlVR6kU0c+Y c4vQ== 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=N0oZwSek+9kdlYWcTKW/6zdB8jdhgx5Lh7Rb5VgVPYQ=; b=ohvFypfhG1jNkAALrEgBtqEAhHCtzU1eavbQYAB8ceCw30M3oXvYu4lqM1tZpL/C63 8LDhh++Cq43QSEIsIsmdmMJ71SEywVkTfAlI4gfgbCkuU5031irQT4eUjprOVhEzeLEy w2evQXn/Cg4bQ0hhnCgRO0js8rynKFIDck5QRLzeeWQyALX0sYMdWjW3uJiKvJpFz1nQ d2vuPNTBDiEp0HRzdglEUTvaA/oT3sT7It0mYjj5/BaYAYZcZV00HnmgscUkpKB7E4mP hv5XcNt3IsqnnH/D8860NYeDXe//fAvCvWWcEsaG23GGXwnCS0k8uqrxYWnjbGvAd0Ta 35Sg== X-Gm-Message-State: AOAM531GsR5TxP7eV4GaCrLGSsHz8o9LsuTvSIQls84/n1VQYaMMCE2l V0hRvDcj7MgOFj9aus5M8d0B682/wQRrHw== X-Received: by 2002:a63:c343:: with SMTP id e3mr11522199pgd.8.1614554629460; Sun, 28 Feb 2021 15:23:49 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:49 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 31/50] target/i386: Assert !GUEST for user-only Date: Sun, 28 Feb 2021 15:23:02 -0800 Message-Id: <20210228232321.322053-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" For user-only, we do not need to check for VMM intercept. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 3779da9042..cd376a2c07 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) != 0) #define CPL(S) ((S)->cpl) #define IOPL(S) ((S)->iopl) #define SVME(S) (((S)->flags & HF_SVME_MASK) != 0) +#define GUEST(S) (((S)->flags & HF_GUEST_MASK) != 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, target_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 |= (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), @@ -8511,6 +8514,7 @@ static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu) g_assert(LMA(dc) == ((flags & HF_LMA_MASK) != 0)); g_assert(ADDSEG(dc) == ((flags & HF_ADDSEG_MASK) != 0)); g_assert(SVME(dc) == ((flags & HF_SVME_MASK) != 0)); + g_assert(GUEST(dc) == ((flags & HF_GUEST_MASK) != 0)); dc->cc_op = CC_OP_DYNAMIC; dc->cc_op_dirty = false; From patchwork Sun Feb 28 23:23:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388451 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2917746jap; Sun, 28 Feb 2021 15:36:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJzZB5HOsOEX6gIHR9F8isncw41cxt8NvdRyYpcEFENJ9Or8pbIMITMyLTrLAbyh9edofI89 X-Received: by 2002:aca:ed12:: with SMTP id l18mr9669896oih.13.1614555386987; Sun, 28 Feb 2021 15:36:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555386; cv=none; d=google.com; s=arc-20160816; b=t6eRTEj8xvVuxXMaYFxT25wRk/xcPnTRvM6IRvgPXgTVCAlB+eKOHOdJnKQmWcNmmz XFd7QpS6H7C6wc04pzbnE6ULDiFqfaHbJEklpzP48j1FK0lRPiNwgqWN6oi8u2WBjeUp EOLxa/495rlz4WuFzwpfI4zz+S3i2VFq2PsfB6I4iHvvND4qbcHwAAz6BoClvZqBmj/C bjuzf8I99GNu1oSJYYj46zXHj4w0Isu/sJThqFGPd7gz5zV+GQMGJHnOlXlZFexDo6S+ YNYuVYlkwG88hnKVd+sPnq3HZX5Vuc9kQPKXDWEGqz2RSwjpKJnF1++yvhKoFuNNyv8L WR/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=3nFp54OBUJIrmpxOTOb02gXaUeZK7B8DrZUFxLsO4wY=; b=VGIGyMddeURgRQ95qU538Amfjn5BCChtSoOZJBsWEEOq3HOCzfxUsX4knly5s1yoPn VQ/dh+Q6weqbkJ+hwERtePtfAY/fjth7AMBQpwiFRDYR5qvU929KrORGWq+dYw/exL12 FuNOyw64IacJbLxhvTZEcRFGiFs+8Iv34OyLGxHMoV9RVEPAoveWCEiWAO2eL3xgjtv4 Z+yvYKyrpcmDijo2U6pXHVqfyXHbr7/dEipPGRvvH6bc0AbOWyxivKY5MyOYMUZ3u45r wWzDZx+zAYb7Z7G4/onYklJXlsWJFp1skL9KSu9xdQUzN7O+zzFd1SPGDCWSC+5TKWSP WOkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ndpYWws2; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x8si12119890otk.306.2021.02.28.15.36.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:36:26 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ndpYWws2; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:59308 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVbu-00031v-Dd for patch@linaro.org; Sun, 28 Feb 2021 18:36:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43798) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPu-0005nG-Bc for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:02 -0500 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]:46258) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPk-0007lz-22 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:02 -0500 Received: by mail-pg1-x52a.google.com with SMTP id h4so10317287pgf.13 for ; Sun, 28 Feb 2021 15:23:50 -0800 (PST) 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=3nFp54OBUJIrmpxOTOb02gXaUeZK7B8DrZUFxLsO4wY=; b=ndpYWws2Gl34I+wC+/jeufSTd8ERkOwtkotvW3i3XySSHOmASLZzOKTaanGdPH0fLr sMqgZSHw1EF2HdDAeksKQXpcmYtDmIf4379qPkLjiYfZRQog6tCroKpMdNsNJ2bDH7zG QYe7ag4PsyNVa4pcMoKKjo8kRqJVOYedF1wbt08jawgmSkqJQp2eHp7yBFjl2HS7wERf LFCsDseUMYdaci/Iwm1cCPpEahMRNH5vMsWrTRysjclag60zKUO87t3kkooMGuUcnMNO KMn2sZUwxRkgyG/NctV/uVaWe/2b41L0dehf91sxXwkPwkd+Key9rFTOJCIZ2Z4fW4+R cx8Q== 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=3nFp54OBUJIrmpxOTOb02gXaUeZK7B8DrZUFxLsO4wY=; b=KMg/Q41pc1Zqp1orvir7DFNu5o833kM2vkE/tddAn3/Z8gaEBgz37kDGkk3N75up80 Ay4R4BnFC3bR1B1ZfnojG2g+obt62voIbtFCTlagE48CaInZmF6v6tLFg2Kzk0WX7zFp T5JGxJpFcnNLbvJETgtVDMx9y7jMjonFgvYrhcDO6hxRUS2vWf2guKD3lg3B3B9IFQTX EyL70bccuwyl59ePXrMS0vgE6SEtkqbRbLN4azAzhMg09V1+R06VeUqnSLqYAjV5b7P1 XDD4jUqW49L/tkyXNAh0RY14KmtWAhKnLnmMtn2S9sW4DYZ/hQRMyOZ5MESWdjOZCVRj nK7A== X-Gm-Message-State: AOAM530XBzlVR313Q6p8Qm3V6i0n++hc5mZUALC+4B1OF13UcG1VQ5jS wPlFGQbB4+8tR7Ouk4iWMsEJ0DV6fVY8aA== X-Received: by 2002:a05:6a00:22d1:b029:1b4:9bb5:724c with SMTP id f17-20020a056a0022d1b02901b49bb5724cmr12644812pfj.63.1614554630113; Sun, 28 Feb 2021 15:23:50 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:49 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 32/50] target/i386: Implement skinit in translate.c Date: Sun, 28 Feb 2021 15:23:03 -0800 Message-Id: <20210228232321.322053-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Our sysemu implementation is a stub. We can already intercept instructions for vmexit, and raising #UD is trivial. Signed-off-by: Richard Henderson --- 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(-) -- 2.25.1 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) /* x86 FPU */ diff --git a/target/i386/tcg/sysemu/svm_helper.c b/target/i386/tcg/sysemu/svm_helper.c index 5b9c6f18be..ca5a781a7e 100644 --- a/target/i386/tcg/sysemu/svm_helper.c +++ b/target/i386/tcg/sysemu/svm_helper.c @@ -423,13 +423,6 @@ void helper_clgi(CPUX86State *env) env->hflags2 &= ~HF2_GIF_MASK; } -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 = env_archcpu(env); diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index cd376a2c07..92e85e1872 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -7572,10 +7572,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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; case 0xdf: /* INVLPGA */ if (!SVME(s) || !PE(s)) { diff --git a/target/i386/tcg/user/svm_stubs.c b/target/i386/tcg/user/svm_stubs.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) { } -void helper_skinit(CPUX86State *env) -{ -} - void helper_invlpga(CPUX86State *env, int aflag) { } From patchwork Sun Feb 28 23:23:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388466 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2922335jap; Sun, 28 Feb 2021 15:46:09 -0800 (PST) X-Google-Smtp-Source: ABdhPJwf6hUN0LsOwNOenJRTYhcoiUe7nNE+j+mBhCgxsaxAUUQ4Hiut/D9jLEhnf9ooFfSI9+fQ X-Received: by 2002:a02:4c8:: with SMTP id 191mr12982916jab.27.1614555969448; Sun, 28 Feb 2021 15:46:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555969; cv=none; d=google.com; s=arc-20160816; b=fWBvyR8PdN6C9xqV79TWTab2aAtLZ8hUkB1bJK9ad3fQlKbiAoqbHMyhpQxS40DIOK 1cB9qe8E6AOxCVFXIz0mGsekVDOpPu/X/4WbK7xR5ewHaulUhwluJbR79xOF8TaEcbud DoOsTm2NDWv2sJZRGWJYS+ruv8TEobkRWGo08Xz+KAYidI+vSWJh9lpwtMP0JBBAnLkz A6i/5zlGP3IyysL7RcAZRjGC2L896kOxuyjiOKKMw8DIgnbNFTKCXnwlz9orHcRxsgUz +m6/Cj/qZZVONFEht1Yrzjs2ajl6e0LJ7d+pdFxiqIolBI3Orm/Z3Z/yUGq6J/Wp3MFg d4PQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=A+PcN8cdTkjWxRnwHsXZMZGYR2o7apRl4p1FGWLV554=; b=u2AwyRtwYNfUnGbOfX676jS1gq6ZnO/m8KSIVDiQfwDReyaoVKtyLTENT/MyOeH1jk PLrNOXnleNWIyDCUNhgVfipNhh9J/vubWMy1jNWILpyXRnk6XXXY1hB7p/x7TLTEY3MU 7KAAmnvxUqVb11sg8fUS+rMyxTQP5d1ju+TwhJDzWHQXCSMmMbSTyAZpPsgXF0KqtvdQ 7jEYAV1WdsS6q9dy9r5hHmoaNBuRLEqeT1NibXxDRAPM7JHDUKuE4mjTrsoONvHny7FP onrY0wCQzC8iNreKbaSrC0OGH85zcaOc5TpRO5nyeicgeEk7H92fNjWx96s7cHn3NMYz Kl9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Q6uroxug; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id e203si13459760iof.59.2021.02.28.15.46.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:46:09 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Q6uroxug; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:56780 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVlI-0005B4-Qt for patch@linaro.org; Sun, 28 Feb 2021 18:46:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43806) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPu-0005oW-OR for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:02 -0500 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]:44600) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPk-0007m3-2C for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:02 -0500 Received: by mail-pl1-x62e.google.com with SMTP id a24so8747890plm.11 for ; Sun, 28 Feb 2021 15:23:51 -0800 (PST) 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=A+PcN8cdTkjWxRnwHsXZMZGYR2o7apRl4p1FGWLV554=; b=Q6uroxugfl8k0NiFOcn0MB23gjoHM7N30Z/aMfyUHb76YX7/45glmwmD+ghKlC5lM9 2zqhybij4Z3Z8CW/hPQvLOSbgQKABKtqm9nZbdA0OyH2zYLorObjDGkLLm1OgCU8wZIT VAgNyaRfoKGwPVL2PJbYhqLU3qHZDq9qwMVaqzCHGZTss1dx2maDRjA3jNPRZ89uGGFE I9lNH/aI6N5X6CjOgN6XQ2fvg2N6DIvCtUoOw2St3LaVORgJmaRXLCSTQxD+qpYMwcad awe/CaLwqNsqIi3pPr866o7puM6FZ3K8tu9Ad3rn+9VLGkLEo4cSxH2uoXrVHk9j0MGX 20dg== 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=A+PcN8cdTkjWxRnwHsXZMZGYR2o7apRl4p1FGWLV554=; b=AjDFX7GVZf7+rjZf0xXVaotWty9pMwb7kZgROs0O/OcjT0px7wzRFjjt6jgJfzCiOw hUbXYGwSJk5Tiy3Nd9foqKoWd5dsfqoT6CsZDE2jHGm3o/psU1apR9gl3YlWt3YOmNtB srl2YgTZdb4QZVPkWuwt0s8gRKBiawlvEtT3HDz1xRiq+wXxL2Qp39Nftrrrg3b6/mTp fS71sGHJN7RyqQ2Y0jvYQ+3V2jxMhCDrLc2WsqbYK34tpqg8N8w2VQnlKy/k+BiHMEzl hF9PviXptJ7U1Xh2lKj9hsBrFkeesYovLnwI+GZZpuygl+6NnXnVQk/D4KRQ1+41deA6 PmRg== X-Gm-Message-State: AOAM531wGZGK7k2nNZsUxo6a9GNPkczr/vkLkMPWykEBJQf48u84rLlF WXOExJJqg37X56eDk/JU5XKOCcyhlkJ0nA== X-Received: by 2002:a17:902:a714:b029:e3:1cd:a033 with SMTP id w20-20020a170902a714b02900e301cda033mr12420258plq.27.1614554630777; Sun, 28 Feb 2021 15:23:50 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:50 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 33/50] target/i386: Eliminate SVM helpers for user-only Date: Sun, 28 Feb 2021 15:23:04 -0800 Message-Id: <20210228232321.322053-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Use STUB_HELPER to ensure that such calls are always eliminated. Signed-off-by: Richard Henderson --- 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(-) -- 2.25.1 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) #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 */ /* x86 FPU */ diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 92e85e1872..8c77c9cbe6 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -193,7 +193,16 @@ typedef struct DisasContext { { qemu_build_not_reached(); } #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_i32 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 static void gen_eob(DisasContext *s); diff --git a/target/i386/tcg/user/svm_stubs.c b/target/i386/tcg/user/svm_stubs.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" -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); } -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) -{ -} From patchwork Sun Feb 28 23:23:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388565 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2930292jap; Sun, 28 Feb 2021 16:03:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJx91bkyec1kZIkDu1Nkenq39Mr2d6vzui01fgoEfRPirZJvg6goQDuerV6KwJVHozRxV8wg X-Received: by 2002:a05:6830:30bb:: with SMTP id g27mr11253103ots.278.1614557028384; Sun, 28 Feb 2021 16:03:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614557028; cv=none; d=google.com; s=arc-20160816; b=eaZK9/y2oDtZegzeq4kbKZcls0dgUvtL3uN+tUVemh4VNU6vWGDIcp2yvE46Mv3Y3O XEesgFPZ+72XyF6BFGPJBfeSdmLEtRkPc9TXv9i1yusFsa6jB3Q1HOnngU7LsKnOV3GV cQ8LjPPpclK1AH/K6tU87RiD8H/sBN6KCA43HOBR6EpuHhYIlAQBgSSNHNw4LWIPAzRt 2ANtkzA+Tr8FCt6y8+T5Qlm30rxQYsC9AC3hw9MkL9oqpZjugVHKuj98C88quKu9dnzr Hf00YWn+4BO2yfFWzDfGHaHyV6WFvhlKuzRyxNe/nyAJEGt8NumQf9brnIyfP8K9Ayau wCug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=IuseSFh6k9FJFcRfB/IONyFWdR+2//oyjUHwp8Nqzys=; b=srt/g8K67OLdFG3BRv1QMnsE8D0WIGJIo72h90dvCmE+l2IlK6+Bcl6DCJZ0uWhC0d subtuBQfSd1KkOTRUw41AbLsSKtfOSyOCS5asSoo7SczLhtjDAciD8HaECP0A/ZrSfOV LphGa2Gy81hWCtP4l1MjLWZFzTMvgGMx7PDdvDj5IwyBfuV59NzDaoko2y8f+zmObvt7 u1OsQDbCw90T5sn6LhB58ipj6wkdRTgcpGH/F5Pk0816ErE2VEoQaqrFy8VsgUBuL2QY wPqwvVO2/wtW3jwqzf8QnQexaWGBKPmeASd6kSTn34yCH7V1Ju3+dJh6SST33Ftt5wa1 RiWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=LoOpO9qh; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q13si13284662otg.18.2021.02.28.16.03.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 16:03:48 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=LoOpO9qh; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:41454 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGW2N-0005ps-Pu for patch@linaro.org; Sun, 28 Feb 2021 19:03:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43824) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPv-0005pt-8c for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:03 -0500 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]:44224) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPl-0007mC-39 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:02 -0500 Received: by mail-pg1-x536.google.com with SMTP id a4so10328273pgc.11 for ; Sun, 28 Feb 2021 15:23:52 -0800 (PST) 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=IuseSFh6k9FJFcRfB/IONyFWdR+2//oyjUHwp8Nqzys=; b=LoOpO9qhtU3Ce5qeUkO7/o2xcPoyKOi+dN9P/FBlOAp/53ofXgTvhIEME2H31TBtNC Y69DrmWgJUDp6vhKCaYOBDooKW7HG0PT7whkiuXVcvvKSDna29vgQgtwB8gk9fr0E9hz OGoQihLliItIOMH4TwsZYzt2npNKHjJAxbQXAdZS0I4OisAdWIBmg2tIbjnEz47YaKc5 YqSZyNTooBF/MHrnURKLYE0kRJnb9Cwyh1QjHkSbeW7kvvXCAkyxSsUeEYowiJD+tKPG 5XGRBE8yu/MVuSS3zYB5uoY4VWeTWPHjJQDkULJHxDymase6o+FTksdwE0MsK/DuRLBK Fz5w== 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=IuseSFh6k9FJFcRfB/IONyFWdR+2//oyjUHwp8Nqzys=; b=PnnH822G1MSdTdht0rrFFTEfPV+qduivOmDaVP3lVbQ1sKFYLZcAnq499QBBYyJ8hG 8elvB98/C+iogSxOHr5G5qdMM0K/tu6P3CyOXZCGg6tbRQzio8Y7ZAkssfA+GlSssigV rQtV0Kya0b5q3ZqnwUCRoKAeeYshXJ/TLpk55/F9iziVNsovR0uUFzBKbysMMum7+ljO phZtzx0IjWp+081VI24KMpH/Mo9iuT4mtEVrT0a7jg/aZzMNRuxKG/a0oq+HrMp4GWBT IEzafnxd+LnKK7SkXqubS9YCyBwcO4YM3lmOgl0jcbB/ESP1EdfjnM+XYl9b2COHF0jr NfsA== X-Gm-Message-State: AOAM530Ni2oGCE/KdApgFEd5SPIDMayY5aGS7TmqZG++UvNGcxPrSCqr KDsklyfvePNJDFCnnRLpeY3bpw/b5l6Zew== X-Received: by 2002:a63:2321:: with SMTP id j33mr11370821pgj.120.1614554631439; Sun, 28 Feb 2021 15:23:51 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:51 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 34/50] target/i386: Mark some helpers as noreturn Date: Sun, 28 Feb 2021 15:23:05 -0800 Message-Id: <20210228232321.322053-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- 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(-) -- 2.25.1 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, int) +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) 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" -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" -void helper_raise_interrupt(CPUX86State *env, int intno, int next_eip_addend) +void QEMU_NORETURN helper_raise_interrupt(CPUX86State *env, int intno, + int next_eip_addend) { raise_interrupt(env, intno, 1, 0, next_eip_addend); } -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); } -void raise_exception_err(CPUX86State *env, int exception_index, - int error_code) +void QEMU_NORETURN raise_exception_err(CPUX86State *env, int exception_index, + int error_code) { raise_interrupt2(env, exception_index, 0, error_code, 0, 0); } -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 retaddr) { raise_interrupt2(env, exception_index, 0, error_code, 0, retaddr); } -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); } -void raise_exception_ra(CPUX86State *env, int exception_index, uintptr_t retaddr) +void QEMU_NORETURN raise_exception_ra(CPUX86State *env, int exception_index, + 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 82fb7037ac..1ca9ace3dc 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] = (uint32_t)(env->tsc_aux); } -void helper_rdpmc(CPUX86State *env) +void QEMU_NORETURN helper_rdpmc(CPUX86State *env) { if ((env->cr[4] & CR4_PCE_MASK) && ((env->hflags & HF_CPL_MASK) != 0)) { raise_exception_ra(env, EXCP0D_GPF, GETPC()); @@ -108,7 +108,7 @@ void helper_rdpmc(CPUX86State *env) raise_exception_err(env, EXCP06_ILLOP, 0); } -static void do_pause(X86CPU *cpu) +static QEMU_NORETURN void do_pause(X86CPU *cpu) { CPUState *cs = CPU(cpu); @@ -117,7 +117,7 @@ static void do_pause(X86CPU *cpu) cpu_loop_exit(cs); } -static void do_hlt(X86CPU *cpu) +static QEMU_NORETURN void do_hlt(X86CPU *cpu) { CPUState *cs = CPU(cpu); CPUX86State *env = &cpu->env; @@ -128,7 +128,7 @@ static void do_hlt(X86CPU *cpu) cpu_loop_exit(cs); } -void helper_hlt(CPUX86State *env, int next_eip_addend) +void QEMU_NORETURN helper_hlt(CPUX86State *env, int next_eip_addend) { X86CPU *cpu = env_archcpu(env); @@ -147,7 +147,7 @@ void helper_monitor(CPUX86State *env, target_ulong ptr) cpu_svm_check_intercept_param(env, SVM_EXIT_MONITOR, 0, GETPC()); } -void helper_mwait(CPUX86State *env, int next_eip_addend) +void QEMU_NORETURN helper_mwait(CPUX86State *env, int next_eip_addend) { CPUState *cs = env_cpu(env); X86CPU *cpu = env_archcpu(env); @@ -166,7 +166,7 @@ void helper_mwait(CPUX86State *env, int next_eip_addend) } } -void helper_pause(CPUX86State *env, int next_eip_addend) +void QEMU_NORETURN helper_pause(CPUX86State *env, int next_eip_addend) { X86CPU *cpu = env_archcpu(env); @@ -176,7 +176,7 @@ void helper_pause(CPUX86State *env, int next_eip_addend) do_pause(cpu); } -void helper_debug(CPUX86State *env) +void QEMU_NORETURN helper_debug(CPUX86State *env) { CPUState *cs = env_cpu(env); diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 8c77c9cbe6..c2bc3c4b22 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -7276,6 +7276,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); gen_helper_rdpmc(cpu_env); + s->base.is_jmp = DISAS_NORETURN; break; case 0x134: /* sysenter */ /* For Intel SYSENTER is valid on 64-bit */ @@ -7437,7 +7438,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 = DISAS_NORETURN; break; case 0xca: /* clac */ From patchwork Sun Feb 28 23:23:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388467 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2923775jap; Sun, 28 Feb 2021 15:49:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJy2vxzyWiC1BWeB550z/UGcv8f41n1usdV1Vk2RSULAQznMH1OLHkfur2c3cD++R1D4EqUZ X-Received: by 2002:a5d:9e03:: with SMTP id h3mr11713512ioh.94.1614556169538; Sun, 28 Feb 2021 15:49:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556169; cv=none; d=google.com; s=arc-20160816; b=LsCvwUeZJowEzfVxM8EyWa2m4O5V0ExRDVVtfEV1uK+XYz86Q6iy1S5CI6yHP5rXpF M/VIVzc6uyGE/sA80y7zQK+jkrAmCJvqaDEIPpXbmU47C0sckic+K2zOQfbndLcqVOSi 4XBiqALVm0MhQoK1sL85cD0XaGlbD2lsR7OzG7T25klVdc2bAnyibuvjUsZsA09T+Cmc PRoCxsnzvLJ30qeuugdfyd2AYbf047t1leXSTJ2fVJhZQ4mS237jTYh1c03OBnKYaZur kqRwleTK+gNtgq8p/y9amLOCtJsmsyFbKtgMQnMmWddMrLFyA247FNZW8troPwBOFxpF yPIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=p/OP6oNpVxEQgtZxEWk9B6FS4WV2bejSngGyOnOktPA=; b=v/QhgHRgFTneayiKRMAz+dlfrFYZoGE+5pv/fFy3vcnCzNaHPbOGYnlWpyAUhQICNX TjEWV5kZnH+dLAO0fLMMLVNSlBdiQchjSgoD78ta4GLMlycKYOhq3YXihUoxSJPSWqBx P6GmJwOQgasAkFHBw9fQPknPYX0ivADjC/pP5dooGo3rLdLJogDetkvEjg+w0VfhVoYI bOJiRd/XN9r17E37A6O/DvLz1aujVH8ll+u5krADOxjIl4vJftvaqh1Ta4Ho77PHbteO wRfl5edA7TheGBG++ZcXAqnYPK89nLkYXXjPdw71RJlIx4c8kIMLkIOrFuq3OUkITG3v v+9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xNvpwiuV; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id z15si13091076iob.21.2021.02.28.15.49.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:49:29 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xNvpwiuV; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:37184 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVoW-0000NZ-Vb for patch@linaro.org; Sun, 28 Feb 2021 18:49:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43810) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPu-0005ow-SP for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:02 -0500 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]:34830) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPm-0007mN-2M for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:02 -0500 Received: by mail-pl1-x62c.google.com with SMTP id g20so8775244plo.2 for ; Sun, 28 Feb 2021 15:23:52 -0800 (PST) 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=p/OP6oNpVxEQgtZxEWk9B6FS4WV2bejSngGyOnOktPA=; b=xNvpwiuVyg5fAWXSnb7jROYrw0SXPwoWqFW7h9+E4Ff4wWQLDwvxwpAsbKaWhGgumD oeQzFPXWYJii76omoHVQdTQZXKQiFuQ66ARVtEQ0++4CjKmpOFcMM+DzExLeAlUjaBlv kUTugoMrrKEi6XaMBH3cSw9QDiH+sQUAj0fbles+HYhubEX1YqHrS5k4YtaTiUj7RtlW 4/IcgnS+vhK6VmuPhvIdBd6soCTIDUguDRwADuaVc2oTOlylqRCDycVR8ruT58dhaEkp FJ9Dw7/eWBh7qZqrEvKKMy6rSfHh2HvxqSsggSRCLWpIsCOXTGQwkQB9yC+iGcSBVPsY DenA== 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=p/OP6oNpVxEQgtZxEWk9B6FS4WV2bejSngGyOnOktPA=; b=PAv9Zblyi3SZ3oh23MKmhELMlWRuJqBe2PjBNHWJfmguZpkz95bgbfI2BtGfz6XQC8 XvLYnxQ59BTa2KKam5IAc61rOfGaEcM/by7Iv8MIgNA5bPm1dA7XIaI+q2LeP/GIDlze dnakGmiKvFW2Vq8rzd90bEsk7cH+lWXjCiT2R/2EmlKaLO9/ulutqI6W7//66rjbeNq2 UdslRTOrxJrj7UUt3AE6wW74d79psg41xiD5AJbc072ETuXNCdHmYGjFx6v2LDMHmhfp 2cD11pfUy1z5nK51yyMQCG+i007Vou4KzyxG1ssvXPrNEiyj6SN1IjZFETn8aj7tBsMW FZTQ== X-Gm-Message-State: AOAM531Hj6NmkptYJSCUQf+6hmofDDfZZHr1MQaO9Jkg75+nXhCbI7pP SXxbYwwhslKwX5h2j/vg2rfPOg0rDbMGWg== X-Received: by 2002:a17:902:cece:b029:e4:89af:adf with SMTP id d14-20020a170902ceceb02900e489af0adfmr7567994plg.53.1614554632140; Sun, 28 Feb 2021 15:23:52 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:51 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 35/50] target/i386: Simplify gen_debug usage Date: Sun, 28 Feb 2021 15:23:06 -0800 Message-Id: <20210228232321.322053-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index c2bc3c4b22..c135be9063 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2614,10 +2614,10 @@ static void gen_interrupt(DisasContext *s, int intno, s->base.is_jmp = DISAS_NORETURN; } -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 = DISAS_NORETURN; } @@ -7146,7 +7146,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 = 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 = 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 From patchwork Sun Feb 28 23:23:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388612 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2934085jap; Sun, 28 Feb 2021 16:11:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJz4KHTBpz7pNis1iOtIm1DP+5qxRyCQwchlwSdPmawv+htMo0Gath0ChJGO+J1XdQUZuxVB X-Received: by 2002:a05:6e02:1ca2:: with SMTP id x2mr11692552ill.243.1614557487182; Sun, 28 Feb 2021 16:11:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614557487; cv=none; d=google.com; s=arc-20160816; b=jjAJQsfonZxNzVWc2Z/SabuAd++hY6asXNgMMw20nkukTSb1zqWCJTWWMGeqRpmqIR 3yqLfArVNKs7reNvxjlgXd5QB+RHUgnUkyvxFfbD21qB4dZKJu+Pgsa4wEj4m1SyBlzA s2/zminRl4Gn4utgbsf7Jl9jbX20EISXEq7XM1UOrqdA7tceIuAg1/HQ7F24E4fnWnl3 EE6AqNaq05faL/1YGhLIufG8V0src3Vn8XiZsh4JLdvVqRXmWLbvYpHn0fJVdSzCkT4x mJNR9J2TiBgNmZOYbvnHGL5aQPAnim7viJEjXyldzI1b1VNWFE6YOQrnKSi3+kH7Ah7Z jCCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=49Cd1j1K/38NZkLjnlIs6/b9Bf5vlKLKhEhBcwBUlbI=; b=tFBSNzgbHOb143r1bY/hAwo01d+sAR27zy4qkBirZDy/B/cti9W7dEG2EKPlwr2F7I 5YZwfiroTxqdh5PvOznuxxvcf0mjKVtVPsMs8bzwKzoAmLVLzy4lGYLNBnW9rrivVugk 5ha8nl1xh56Edd07ro8VW3bp1paOue526TS9UxZHYWRHK1vSuWtPyPgMTGQDCPcNf/OT 4lqmyQDaXpa83S185wzSQ6kinesWFjxPFtM2ybepiac465C20URUdAgnxCHl2cjKTCXL jBN2xnG6jh7apzz7HmsVhLG0yiQ7b0aHmCuT59JqysS/r/OUAwmvW2ago/AKx1jYNR1s 5iBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=G8KiXVnV; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id e16si11137154jam.51.2021.02.28.16.11.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 16:11:27 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=G8KiXVnV; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:49440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGW9m-0000xb-Ly for patch@linaro.org; Sun, 28 Feb 2021 19:11:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43854) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPw-0005tB-HD for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:04 -0500 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:54016) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPm-0007mT-35 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:04 -0500 Received: by mail-pj1-x1031.google.com with SMTP id c19so9855786pjq.3 for ; Sun, 28 Feb 2021 15:23:53 -0800 (PST) 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=49Cd1j1K/38NZkLjnlIs6/b9Bf5vlKLKhEhBcwBUlbI=; b=G8KiXVnVwc3anNnMfOFv0bZwkZzyOaS1MmlWqccK/HmJz+/A4QBsDQVzwqoH9y9lON lLds6AOv4XJvqZWQ/fdCT3oquu+bgPHuyEATk7bXwteC4g4awRpy9HibgqyCF+c2ipY5 PgDRW7CWZ+mqA9/Ez/exNu2wd+DB29tBFv2aAK/Gz2b5qt0KRkOVEi3fYtPvlKgikBYd tpeVBSPhIHo7nGajUfye7DdXBddIeU51yHZiskz8w6Li2b8O6Lq1z3897Knx4wNvs8KQ XxhqWLfoAqpH8F7ZceagK91CEM6I0e8mF7CqvJYTUvdXFBYgtpXtSbR44gvMY/usM/Yr 9hBA== 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=49Cd1j1K/38NZkLjnlIs6/b9Bf5vlKLKhEhBcwBUlbI=; b=Zu42kCsIYdHRHWdCXmYgkLnuconpGTkkpYmdnBMWoTP+YkOnPGLSIvd1+8I/pXi5KX yQctwQ3VMx4nLbgLZ412UlMCyqJem/GBTa0HgI2O/A0tIjA8A9aw+GKLDZnCgI3MeqfD QYHwW/tZxoJLOG+nU7swBk3hNJunYL/CYeZBAFCBzluUCRNSe2Udv5bZGmQ36Dwvt2ST Hoqnuhk4TmYS6aJW73B4JjqN6bTjVx2K9Vfg5tih2NGTI2TsAMRZg+lAgyvvcQk9S3E1 M94utAiLVUtDB24EJglQJXnOCrTT/DUYL7GCDpqfYirjTS/JfRplqnNeN+fZglLeaki+ pvIQ== X-Gm-Message-State: AOAM530zr+fR+rFwx5xX0wZXn2aI/KbF3lF74MuiqseL+OVRPJl+kLHB qrFQ/WsYeL4fF4egjLM0n3fgi/YuFTufxg== X-Received: by 2002:a17:90a:ce0c:: with SMTP id f12mr3133064pju.11.1614554632778; Sun, 28 Feb 2021 15:23:52 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:52 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 36/50] target/i386: Tidy svm_check_intercept from tcg Date: Sun, 28 Feb 2021 15:23:07 -0800 Message-Id: <20210228232321.322053-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The param argument to helper_svm_check_intercept_param is always 0; eliminate it and rename to helper_svm_check_intercept. Fold gen_sve_check_intercept_param into gen_svm_check_intercept. Signed-off-by: Richard Henderson --- 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(-) -- 2.25.1 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) #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/svm_helper.c index ca5a781a7e..86a0b3c4be 100644 --- a/target/i386/tcg/sysemu/svm_helper.c +++ b/target/i386/tcg/sysemu/svm_helper.c @@ -517,10 +517,9 @@ void cpu_svm_check_intercept_param(CPUX86State *env, uint32_t type, } } -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()); } 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 c135be9063..cbc0cc3ccc 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_i32 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); } -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, target_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 type) -{ - gen_svm_check_intercept_param(s, pc_start, type, 0); + gen_helper_svm_check_intercept(cpu_env, tcg_constant_i32(type)); } static inline void gen_stack_update(DisasContext *s, int addend) From patchwork Sun Feb 28 23:23:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388568 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2933327jap; Sun, 28 Feb 2021 16:09:42 -0800 (PST) X-Google-Smtp-Source: ABdhPJxCKa4BlTU9UNSJ81a0GZXrfmBXtlZKqFY7ZhHxDmsKB9M6sGiNtWz9A0IGs/d1UMwHv8IW X-Received: by 2002:a92:60a:: with SMTP id x10mr11057606ilg.262.1614557382647; Sun, 28 Feb 2021 16:09:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614557382; cv=none; d=google.com; s=arc-20160816; b=JoiC1F8dyzBPlIylXD1CwbIM59AeGkaYF84yfQcPAXO58CEbKkOxANHdOWPWd4xdoT LG6vT5P9exX3+dFZ8I14bxdANIQWFLS8yj5jU9D/n5QcbE3G9mX1aPmV8CDIIWjMSqov enYRpUrB9svNWEZ1eZYR6/YrCAZ/lFrjfW2yTAWbU7ByU2Dg1GvthsjX5YyIsqirYpLn EAN+JertlgT0brIRNNuQG1SjklKHr4QJgvYyS9MT14XodQVDziAoK3EWhkACKH7hmV4i OljAJiofZIbUdmdTb1+7/peiH3f8Jk2HBUzioqObnugXJraCXHZNY8e3odH2bActRxSn qAWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=jOmn4vLtGuk+9owXg8+vXu4xydwRiHW7SfVMSLAig3M=; b=XNkomWG3Xv3DMyLtM6+DfInO0C+fj3zqQDmdgrIu9Qyv5fFxdO05+66d3oCOiXvVsj 8NYdZs5Cme5RgcPe90E89LCMK2ImQS5m6azKjXJO++EEIM9uaNC8psDdspHJQmWaDv4u tpvR+OgXmYYcQT72SjhXvEGdpmsM4D77spWNqDFg9cuXt1Cn0qLpAW3iK+whGmZiBSuT X5oDrQiGhSHDPSnR2OqOUwZ9CSoUjNA3l8ERHKaopuSAyid8pRoIbDsIKn3HG/u0pYC5 Cih38teATLmrqFUro8k2lKRahXcysavt3UfINakK6IlisGPR8JUicF1x8wHVMqMO+zmC igVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ZYejGaGN; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id z7si13401353ilp.129.2021.02.28.16.09.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 16:09:42 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ZYejGaGN; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:46800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGW86-0008DX-2g for patch@linaro.org; Sun, 28 Feb 2021 19:09:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43850) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPw-0005sY-8x for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:04 -0500 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]:44602) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPn-0007mY-8o for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:04 -0500 Received: by mail-pl1-x630.google.com with SMTP id a24so8747929plm.11 for ; Sun, 28 Feb 2021 15:23:54 -0800 (PST) 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=jOmn4vLtGuk+9owXg8+vXu4xydwRiHW7SfVMSLAig3M=; b=ZYejGaGNaC4uSzAM2cLSwVp1FhT/TByoXTAAivyX6P2Ks+z7CyDyhvZX6d0YagujFM qufJK6X3QlE7FMzGPWyBBUAMRL5G1LNTvKD89In89EBrPLcLsXtz4Oc5wffh3Rie00ED Yb300w2cVNenJYJGiHxKaLfZn9s8cfUsY7Z+MFch1MnqAuiA95yhsvhDllgWdVaGzZZ8 YqeVSrUywAvFWi+pENtGX+SFTq+qs9YgWXRLY8optW3BywG+0l9SITyPTN1vfxSMryWZ VKXYEUXmT4/sldoTDluywf9b6QQpaH2LcAMiLLn4yczXiIVNuYsc7aFdipDItqfBu/PW 7elw== 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=jOmn4vLtGuk+9owXg8+vXu4xydwRiHW7SfVMSLAig3M=; b=Oc8UCQFL/ownEmtxQmkHCrsCq8/cEaAP9kxvVRN/eXjineFAUNlWl1KGjOCJpBuEzF WTdw1B7lCjOWbrhkqoHm5anfVEfZi+1jij3mz4CfyK7/eTYFWhquSPLZ5A4cie2NxmhZ vg7Fixi8BhRUhpD2j4xvB7hqCwoWoDuIS+Tzpl4AyphZDXru3pCTsBjk0YWTkovmXoWC VGEwrugEn3qzBu+zq6SE4PvHPJ28/Yv0yVhyGEDm5C41g34k1kc6ltODiEEyc5HcpieY MxusUnarGHzvV/zZl9NRMWe5dxofrC8PniSeF0LXb6pRI6pMFSC2zOGL5iJUaA2pGz3U LNMQ== X-Gm-Message-State: AOAM531yemc92712gS7F5mboZLUTwKG8KWIeRI+oWY8mggU/MAg+fxhr 8XZwKeXU58cKLk4wEhyLaFm8L8b0ZqVuXA== X-Received: by 2002:a17:902:768b:b029:e3:fb85:1113 with SMTP id m11-20020a170902768bb02900e3fb851113mr13115655pll.3.1614554633433; Sun, 28 Feb 2021 15:23:53 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:53 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 37/50] target/i386: Remove pc_start argument to gen_svm_check_intercept Date: Sun, 28 Feb 2021 15:23:08 -0800 Message-Id: <20210228232321.322053-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 45 +++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 24 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index cbc0cc3ccc..33faffe00f 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); } -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)); } @@ -6633,7 +6630,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) val = 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)) { @@ -6755,7 +6752,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -6763,7 +6760,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 = gen_pop_T0(s); if (CPL(s) == 0) { @@ -7137,7 +7134,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 @@ -7341,7 +7338,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 = mod == 3 ? dflag : MO_16; @@ -7351,7 +7348,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7360,7 +7357,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 = mod == 3 ? dflag : MO_16; @@ -7370,7 +7367,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7398,7 +7395,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) modrm = 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)); @@ -7454,7 +7451,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; 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.limit)); gen_op_st_v(s, MO_16, s->T0, s->A0); @@ -7574,7 +7571,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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; @@ -7594,7 +7591,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7610,7 +7607,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7623,7 +7620,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) break; 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 @@ -7655,7 +7652,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -7712,7 +7709,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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; @@ -8102,14 +8099,14 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 + reg); + 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); @@ -8118,7 +8115,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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); @@ -8345,7 +8342,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 From patchwork Sun Feb 28 23:23:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388566 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2932589jap; Sun, 28 Feb 2021 16:08:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJy2g1HxUckDo57pBKiJawh9lH7JEJaLMTu1DJxueX+q4LBM5D2PbFIgDjzWN3JJm1eBl+Rg X-Received: by 2002:a25:c708:: with SMTP id w8mr20015528ybe.410.1614557297607; Sun, 28 Feb 2021 16:08:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614557297; cv=none; d=google.com; s=arc-20160816; b=HJ24/Qcx+VKK2spz9BtYXGEDBzuiv7Hzm7Z/MOywBv8Tk2Kc2NSJ1yQg/65QPRxCaa IpnebrT36Ih1HLikNpH7bXmCD0gztYgckQkIrhZGynUhmienjot5nfVRbUv7SgYjfV6d HrHCOVghno7IMk4A2A7o64g299IjGYdW1dPVky3tDe+6UDr5DBCLbJMpPt01dWdkx5qp y5V75mndXYd7HJwjPyC3HzqxHi7T8jGHcKxz6HJULZqX/E4DqepsYu9N3+A6syyTB+tn mxiAwpoiQsKCNippwjsyB7qGyVA1FUdEBY5AveZkuhSbybTgeb6/lU/D+HKbmyC9pM01 W+Uw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=lNlZW0IHz764sQsnKZvud5t74gVw8oF3THem8nh74y4=; b=Cv/XjUAKkTiiL9CqaPxQF/L5+BoylsXQtzE5rEWlbu+cdRPKSkdFebKIvXzGR4BJLW Wmv+OLOPwUAvvstndgP6SlLmVgF3kD5EHo7bohJkqmx2rsIpW5Xr//oWZBxFcf7N5KOj +JiG32kHAPAp2BgTytISHMIpT8qzTQnFKOJ2z5gPlUbu7YCP0uPvNqCP0/WazVAWk6L5 ndow6h7FrAglSLl7UDLDTdtD4RlDC6BFsjd20TxUQYcNcnHVLk6a5Z6AAW30axp15TTe Tekbfk4VQ3yCcp+E+jMMObFrFHm47xHjYDsIURfcQ8d25CxhyavWpxKfUi9JQYHY9qPD 2lLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=S13mTC+S; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id j124si15665870ybj.127.2021.02.28.16.08.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 16:08:17 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=S13mTC+S; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:44426 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGW6j-0007Ev-3I for patch@linaro.org; Sun, 28 Feb 2021 19:08:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43844) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPw-0005s5-3I for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:04 -0500 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]:38496) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPn-0007mf-EW for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:03 -0500 Received: by mail-pf1-x430.google.com with SMTP id 201so10276447pfw.5 for ; Sun, 28 Feb 2021 15:23:55 -0800 (PST) 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=lNlZW0IHz764sQsnKZvud5t74gVw8oF3THem8nh74y4=; b=S13mTC+SP4xsr5wKupFpRYuL/fh4s8qzR+iNDi7qhxm8pNLf3Y1VO+Lnljm3lSQ/Fb +FYvjUP5yzTEDPeSKHJCX/asnSnft38CLB0NgTnkm1laNYFBxYoAIikZGxBY6sMT3thp E4ru1oupGRnloK5yKENFNtc2Iokmz/FdBhVtrOWRrXvWb2D5nBAwHLVv/EzS3GKtjpPp e1hd5CU67BPLdVNBSfnLTjIRdo7jG1GswhRckgZSsUi2znW9Wkw8IOsTQ5tZTGLTEU+6 72v+gZTE+xnsvBz4Z1qp6kkHgX2v8Vzs+OmbE48vaQ72Z0n1z03p3Elgeudcm27n98I/ jNyw== 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=lNlZW0IHz764sQsnKZvud5t74gVw8oF3THem8nh74y4=; b=ml/XaXHQkcAWbZP2nM1S52I67mBT1Q51EbgQn8zZ9vc9JSQsM6eYeVDxzPYzzJ8EEn rseaQ8ZGTDtXN8+3UI1xiL4DRYJA2XQIu/BPia0jPZvLTfPVbNZ08pUl/WPKY153YY2k 4g4oVd+oIncs5bsCn92MRV7U6GtRdZDkH3QGn8e7EfGqjrdInzZoAfYpEoHTuIsEDZ4T ReWfYkhH+YvEdw9Xaxvwki+VbZpsMcHvHFaOnD0ZL38bRbDcClpmAbJ3HYVw1z310AkG hAHRVqkVvDdjEKB5DVUUS8TS8mvCxqJr83bQlBE58cVI0wHckqB9Q+5H/SSO87ZBKpnQ iqyw== X-Gm-Message-State: AOAM532DKlVokwsORCGAp5E+AA3vpzwK0V3r5NG+s36fzaCS0hoD3suN IK3pTKRsW0gbwyzVNNgAPqSmAsmYieZUXQ== X-Received: by 2002:a65:5288:: with SMTP id y8mr10558188pgp.105.1614554634087; Sun, 28 Feb 2021 15:23:54 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:53 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 38/50] target/i386: Remove user stub for cpu_vmexit Date: Sun, 28 Feb 2021 15:23:09 -0800 Message-Id: <20210228232321.322053-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This function is only called from tcg/sysemu/. There is no need for a stub in tcg/user/. Signed-off-by: Richard Henderson --- target/i386/tcg/helper-tcg.h | 4 +++- target/i386/tcg/user/svm_stubs.c | 6 ------ 2 files changed, 3 insertions(+), 7 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/helper-tcg.h b/target/i386/tcg/helper-tcg.h index 3d47cb83cd..e848c3b4b9 100644 --- a/target/i386/tcg/helper-tcg.h +++ b/target/i386/tcg/helper-tcg.h @@ -81,10 +81,12 @@ extern const uint8_t parity_table[256]; /* misc_helper.c */ void cpu_load_eflags(CPUX86State *env, int eflags, int update_mask); -/* 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, uint32_t exit_code, uint64_t exit_info_1); +#endif /* 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_stubs.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" -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) { From patchwork Sun Feb 28 23:23:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388613 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2934690jap; Sun, 28 Feb 2021 16:12:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJxAKyeBLhTwthjmNjvqRzGCVCOMGBbuvHlGNoEcfyK2iT7tdfq1JZ9fh786LWJ0CxthVMEu X-Received: by 2002:a9d:2e4:: with SMTP id 91mr11401791otl.60.1614557561772; Sun, 28 Feb 2021 16:12:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614557561; cv=none; d=google.com; s=arc-20160816; b=srvy1b0tDUcZOJOy8MwKGOPC7zi0jsS376mvLamFfIhk4xlIO65zetpFs69k3ONOaM oBrZw2NuAieREDqL07VdAg8e65Tjba+nkYPpoek504SpZP70UjczPOIwMU4GnSW6Q3lK j48K2rBjZfTiekKydAk20sfaTwpr7VSzUs+OgAtZPAjxsrFYOoe33zZKoKkppwbD/tQO lQCFiKw5gvx0CH7FMVVQ7/PI5qv6xFdkM1j32aGzTef3lAO47z7vFkT2Sz2W/yY/vl7D fL3yn0lEiKPiv3spua489xSOqFKG/KeD/ZpnBuz03rw7wgnGBWmegpZ3cGa2QWWntpz2 uqDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=aqZMZKuCD0f1nXNgNRszgNxoe0OlJvCa7ALxkvWMb0k=; b=ARqd224jSYJaK8NlsnWJhvmfXV3VTXENsCegIkseLup6Hv0qRc3oPIF+dVicksGEOn rsHRODaJzr7TpYLzOwdM7IiaB7D281DhQ8U0tsIiKlbexhl5xwSrMfiY/CiMMCTWSq3v If32lVEr5yX3r7OADpV6NPnWTA207qyISm9b3QnAp5XGVq5wNJipQDwnG4dXZB+hL2vY /59pEAKVqqmXO1s7ZxZ4aSncJajph4vbHdTzplWRro3nJKlzODcje+UCPQGG5IjmHRnL PR/HZp75Xh/WkLRMGI9iQgiYm1XjQJN7AaZXu/b6C48rK1tvoOwX43sdFLUnvoczrXUS 4qHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ZOiYeKUY; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id b5si5913805otq.256.2021.02.28.16.12.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 16:12:41 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ZOiYeKUY; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:51574 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGWAz-0001p6-68 for patch@linaro.org; Sun, 28 Feb 2021 19:12:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43858) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVPx-0005wi-OL for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:05 -0500 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]:39296) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVPo-0007mj-2Z for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:05 -0500 Received: by mail-pl1-x633.google.com with SMTP id k22so8762250pll.6 for ; Sun, 28 Feb 2021 15:23:55 -0800 (PST) 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=aqZMZKuCD0f1nXNgNRszgNxoe0OlJvCa7ALxkvWMb0k=; b=ZOiYeKUYxZ/hbs3HDy3JLBRKGPfckQydXWaFWMxKL2sBtv9jCu3fLaiYE2ctqGqA5T frkMsdM16w2EUDvBkPwAuglrY34UZvbM1LFL7OLRd/9Z1+AGUQOmkGEQU2M9IvOwmjJQ nC+BsLEUXUsDSF4zy6xsrPDRWknBcB3f6f7l0UgmM9ky07fXaBHa7yGhLZk9mes5zUgt hNaKCduezRmmjWyUh5/PPasFGox6Rb4te79Jknk+hS4sebhCFgZDVE18YvT9MAe7pVgQ 3DUANngDR1F8TrR6GUefXLW8zhdkW09gCVBwdMhfnQoneNp5TOnuSN9bPqyGqQt/fT5e JVRQ== 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=aqZMZKuCD0f1nXNgNRszgNxoe0OlJvCa7ALxkvWMb0k=; b=nt1n0cP/efRkPbUDU1UW1Pd4fgkhUrHEj2ikz1XopUnztDyyrxQadkpOBcbQRQfU8I JQzIJplhpQJCQzU6atJwYWMZOyoLK6ULHWgKJRvtJpjAMtZIsXJ7S2l4m44mivwfigQ0 JD46r0qbORoOp1nwJ+uhOCRxMqn2b3lmXGin/2UwL7eQ0Li5e+rkAWOL2SBXh9WupjEI itJ7uBahyHoaVQSdRZ/ljl9j2C9qHZHf3EqUJKP2NRMaE81FoTQ+TBo2jzYHyVX/OLyU QYW/8Qw11Wig7m81DRDKomZlb78MO9I+D/FdewWnnMxz+tkIy3nuRk1dfviFE2IgLG+x WBTQ== X-Gm-Message-State: AOAM532di0EwHDjqn3By236WctCZM9VqPfSfmnGro1wNmQmNbOhpiSpJ ppGoXIpapnEywL2BXn/QnJGfwfxgCkb3rw== X-Received: by 2002:a17:90a:114f:: with SMTP id d15mr14556061pje.1.1614554634828; Sun, 28 Feb 2021 15:23:54 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id d24sm16257400pfn.54.2021.02.28.15.23.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:23:54 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 39/50] target/i386: Cleanup read_crN, write_crN, lmsw Date: Sun, 28 Feb 2021 15:23:10 -0800 Message-Id: <20210228232321.322053-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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. Signed-off-by: Richard Henderson --- 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(-) -- 2.25.1 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) #ifndef CONFIG_USER_ONLY diff --git a/target/i386/tcg/misc_helper.c b/target/i386/tcg/misc_helper.c index 1ca9ace3dc..b0d3c61f13 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] = edx; } -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 = (env->cr[0] & ~0xe) | (t0 & 0xf); - helper_write_crN(env, 0, t0); -} - void helper_invlpg(CPUX86State *env, target_ulong addr) { X86CPU *cpu = env_archcpu(env); diff --git a/target/i386/tcg/sysemu/misc_helper.c b/target/i386/tcg/sysemu/misc_helper.c index 6a88840cf2..ebf15e3dde 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; - cpu_svm_check_intercept_param(env, SVM_EXIT_READ_CR0 + reg, 0, GETPC()); switch (reg) { default: val = env->cr[reg]; @@ -83,7 +82,6 @@ target_ulong helper_read_crN(CPUX86State *env, int reg) 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 33faffe00f..708059ac15 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -7648,13 +7648,22 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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; @@ -8028,58 +8037,56 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) modrm = 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 = x86_ldub_code(env, s); - /* Ignore the mod bits (assume (modrm&0xc0)==0xc0). - * 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 = (modrm & 7) | REX_B(s); - reg = ((modrm >> 3) & 7) | REX_R(s); - if (CODE64(s)) - ot = MO_64; - else - ot = MO_32; - if ((prefixes & PREFIX_LOCK) && (reg == 0) && + if (!check_cpl0(s)) { + break; + } + modrm = x86_ldub_code(env, s); + /* + * Ignore the mod bits (assume (modrm&0xc0)==0xc0). + * 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 = (modrm & 7) | REX_B(s); + reg = ((modrm >> 3) & 7) | REX_R(s); + switch (reg) { + case 0: + if ((prefixes & PREFIX_LOCK) && (s->cpuid_ext3_features & CPUID_EXT3_CR8LEG)) { reg = 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 = (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)) { From patchwork Sun Feb 28 23:23:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388614 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2934962jap; Sun, 28 Feb 2021 16:13:20 -0800 (PST) X-Google-Smtp-Source: ABdhPJw0J3EWswlPQTgVdc1s3nCu01JycTEBAzQhzz1s3/NAlBl0+Zr3mwoMJmfVHB746nGPwJIp X-Received: by 2002:a92:d352:: with SMTP id a18mr10815808ilh.33.1614557600101; Sun, 28 Feb 2021 16:13:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614557600; cv=none; d=google.com; s=arc-20160816; b=B4cKhpEJ1hMkwGABqM+H53yPJu5HPIuo6+XV2omuxsWDjeHl4kjy/7mVt69hcf7nTy uLwJxLFYp8klL5/mjrsPetVnaoikG8lRxW6yIvnGLLNWVx4iH2XWwNo0yOX0D/qr7Uu3 HRpVWpm+y2IZIghSIkVxjsmDK3xVE1RqRP8uG4NO5KgIJOR9Ne036aFk++0iX9oBCpIe Vj3mBuNJetENQXa0I8aj/NZSqpHMnqtCBaqJB9ZXt9tABicxiHp5QXI93G54+lvmOva0 t2exEbA0X0LorY+ZdBcfJrIxQebxAizyrO87Ps+7nmq884TeuyG+jUaiZ39+06LvYule FJEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=+JUyBjkTS0UwwOaXD6FMEo6z2JEb+NRx/8D4N91CKuI=; b=VhxQOhS4dXnKenEItuUXhR4pwuJiY9CC81sNrpH1dPUKOHfvceBIsq0o6nVRdQ+whC 5L6lXs0CrvNmAwnH3X9o5DA1twD0DQQXg2T7+iZBk6Dw99XZhsgSKuOtjnHBlbZfqipc 0FbxtSh0hbVdqw6oKjhkFCgRmHEps+lNoG2u6cz3hgG5tjU2G4uSvoWX7O/mzH9uk9ar 7mNqV8pqRbH4TV8uqsxjDQFuk89faJ2rrfmLWSA9SiZrPd9qa/Zzb3G/46INRiTmT+Bw hHmWoYdVxZR+Br3XDZpcDKL5kWq1W8aE+PKldwoUBKrzOXuX8Ec5hh+xHjh8/tOgE5W+ bvsg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=gS92BZqZ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id l13si14600341jak.47.2021.02.28.16.13.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 16:13:20 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=gS92BZqZ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:53786 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGWBb-0002iU-JI for patch@linaro.org; Sun, 28 Feb 2021 19:13:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43978) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQK-0006X1-Ps for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:28 -0500 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]:35215) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQJ-00081U-4R for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:28 -0500 Received: by mail-pj1-x102f.google.com with SMTP id e9so10494567pjj.0 for ; Sun, 28 Feb 2021 15:24:26 -0800 (PST) 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=+JUyBjkTS0UwwOaXD6FMEo6z2JEb+NRx/8D4N91CKuI=; b=gS92BZqZpv8FCTHgF945XbCi0fH2L9DoKaIJjUPceeI816AvbtlRSVGvccwDM8bwZZ j7tDFxBDJX0L9MH48GsBGUrpqPwIHqH+l9wmANk0nva4OEAKHMGH+5l3Ld0K4EXczT2r k/RxCLd8+TIT1eITiRCUX+hD2kLyFPlJL5yx1/OBmtQHYiK6sMID3QpgoR5vZSfKkxM5 1srXaXuLpSgekK7DbLC9gdog4GJf748Ci4P74uBmNOosF1RYw2xr5nMxsfIjNUbOBLYH F/lYkcfVkCTc+/p3QCboQZy66Wrq2YQlPO4XIAPFMVFvOVKrKg2uCv9ayGdDsoixHLfl ZsBw== 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=+JUyBjkTS0UwwOaXD6FMEo6z2JEb+NRx/8D4N91CKuI=; b=cDBN1+gG1Ni/wdKR6BYxEUwncLWBJ0HU2tHgXrYTuUx91u4WERwuhld/MgW7MPHS59 oGFVqqHtf5Z6gB2a9pXqu24SuaERA/Yj90RefYJAypFC8FZTZfzXddG/J25fVyaTHfQ6 lJgeRWqf4heZW3ibp0B20ZqivWc0YCiH/Agr9bwfEHgsXlsBglOUvf/58sMb7ZnG61mO l+G46okVucWeFd2HBOmqkJLoQFlLoXtp2UIAaGwBsUYr7Xhj3eER3uZfI/58nkzKHzWI DQ5alEGAZ5jwqc9gfv5II+OyFJ8PLWDncN0WBWfTB0LwqiCjYZVBVKXyHgXGI9ZG5qhq 1q8g== X-Gm-Message-State: AOAM531xitsSpnVFU3i4ASeBKVFATKAKo5SYHd5w5pgPOrLTlXHDNRbJ BUl9ryORgfZ2P+oDL0EC0eEa+Qzpa13rxA== X-Received: by 2002:a17:90a:f2d2:: with SMTP id gt18mr6469378pjb.210.1614554665846; Sun, 28 Feb 2021 15:24:25 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:25 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 40/50] target/i386: Pass env to do_pause and do_hlt Date: Sun, 28 Feb 2021 15:23:11 -0800 Message-Id: <20210228232321.322053-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/misc_helper.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/misc_helper.c b/target/i386/tcg/misc_helper.c index b0d3c61f13..20bf4771e7 100644 --- a/target/i386/tcg/misc_helper.c +++ b/target/i386/tcg/misc_helper.c @@ -100,19 +100,18 @@ void QEMU_NORETURN helper_rdpmc(CPUX86State *env) raise_exception_err(env, EXCP06_ILLOP, 0); } -static QEMU_NORETURN void do_pause(X86CPU *cpu) +static void QEMU_NORETURN do_pause(CPUX86State *env) { - CPUState *cs = CPU(cpu); + CPUState *cs = env_cpu(env); /* Just let another CPU run. */ cs->exception_index = EXCP_INTERRUPT; cpu_loop_exit(cs); } -static QEMU_NORETURN void do_hlt(X86CPU *cpu) +static void QEMU_NORETURN do_hlt(CPUX86State *env) { - CPUState *cs = CPU(cpu); - CPUX86State *env = &cpu->env; + CPUState *cs = env_cpu(env); env->hflags &= ~HF_INHIBIT_IRQ_MASK; /* needed if sti is just before */ cs->halted = 1; @@ -122,12 +121,10 @@ static QEMU_NORETURN void do_hlt(X86CPU *cpu) void QEMU_NORETURN helper_hlt(CPUX86State *env, int next_eip_addend) { - X86CPU *cpu = env_archcpu(env); - cpu_svm_check_intercept_param(env, SVM_EXIT_HLT, 0, GETPC()); env->eip += next_eip_addend; - do_hlt(cpu); + do_hlt(env); } void helper_monitor(CPUX86State *env, target_ulong ptr) @@ -142,7 +139,6 @@ void helper_monitor(CPUX86State *env, target_ulong ptr) void QEMU_NORETURN helper_mwait(CPUX86State *env, int next_eip_addend) { CPUState *cs = env_cpu(env); - X86CPU *cpu = env_archcpu(env); if ((uint32_t)env->regs[R_ECX] != 0) { raise_exception_ra(env, EXCP0D_GPF, GETPC()); @@ -152,20 +148,18 @@ void QEMU_NORETURN helper_mwait(CPUX86State *env, int next_eip_addend) /* XXX: not complete but not completely erroneous */ if (cs->cpu_index != 0 || CPU_NEXT(cs) != NULL) { - do_pause(cpu); + do_pause(env); } else { - do_hlt(cpu); + do_hlt(env); } } void QEMU_NORETURN helper_pause(CPUX86State *env, int next_eip_addend) { - X86CPU *cpu = env_archcpu(env); - cpu_svm_check_intercept_param(env, SVM_EXIT_PAUSE, 0, GETPC()); env->eip += next_eip_addend; - do_pause(cpu); + do_pause(env); } void QEMU_NORETURN helper_debug(CPUX86State *env) From patchwork Sun Feb 28 23:23:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388455 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2919339jap; Sun, 28 Feb 2021 15:39:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJzcfvVC2dQc/zTN+kjOzucSyIcd0bJ7RE6KFoD+HuJnNGPumeaUEHNSvZetbJb2qDNLNt4I X-Received: by 2002:a02:cd33:: with SMTP id h19mr3974009jaq.88.1614555581184; Sun, 28 Feb 2021 15:39:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555581; cv=none; d=google.com; s=arc-20160816; b=a5kaebDZxLlqsnsky/cYLb+PEaNLSieor7quwHeKE45J1EXZxS9p/1SlmKLn7VmfZk 42gDQaC9llaEegP02T7u9lVeegHKWU80j9K/Iyur/UberLzLI8LURsOaXBSPDcsfbwEd kjxcmXbLXQCv0Te10JAgHUUes1w5L958quCrSz9XbsplkSUQyBRAsy7MkRszMflnRbf/ 7PxqNdyhIC8yN0hvrcpoVYoiPgpg+LK5Ep6une69ZV7q6EDrQK/imiUDLC5UbK791q4r n2OBIBSfuZhljmH5nlWuJlwi3adtRQHtoy72WR7pZYiTE23mWUQ7818CISysrGS3KMAz 6lYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=XJp8k1XTBOYLX1l8DeT+YJ6pyxD0dHmmzjN3iDefNwc=; b=cyRjNx8TXfgAE543l2OsfrbI+9XM6J//GOq+JevckNVQpNrLHZ6joWwEpoXEA7N9pM fjpKwFiwPnu2Rli/63r03X5X4WrWfGsF64CmWcp/BDAqsp6D4EkqKV/lhQxmvRi8x4Ls uBpyPyuS6y3K1iZFNkO9naiT79n3hxxu2OlfngELKLl+/EY0mvQOMLwlPOY3I75dkuqG LgZS1HIACKJOKFNWjvKS+erSHOC2FE04lQHb77L5k5/Qf+zoS0LzfP7pzCMAjA+Cvr41 w/a014cHbIDkHIDfxfKn5x3A3EVbDYPVKIl4HfbhvST0H4hBDn5fNAmfkn1LwJOQPo/5 f5BA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=GBJfhVs2; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q19si612781jat.59.2021.02.28.15.39.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:39:41 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=GBJfhVs2; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39466 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVf2-0006TA-IO for patch@linaro.org; Sun, 28 Feb 2021 18:39:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43998) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQL-0006ZP-QP for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:29 -0500 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]:42525) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQJ-000828-QW for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:29 -0500 Received: by mail-pf1-x432.google.com with SMTP id w18so10270730pfu.9 for ; Sun, 28 Feb 2021 15:24:27 -0800 (PST) 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=XJp8k1XTBOYLX1l8DeT+YJ6pyxD0dHmmzjN3iDefNwc=; b=GBJfhVs2RpsHv+clSODeCgtTE/KC89v3tbW/kDsYHR4rEUUxX32ya5MAvwI2tuiF/K NQFnpkoToimHKkG8/pNQ6K5x6NCjCdofmiZ+3GVGXrU2jIj0PKTFzEC32xB2MCgBEcXQ k38Xxv/fkXZAGJwmH5SmB37n/NhOUOpiw4G81TWHlZdrlJW8ZA6ZazXr1cjaaRwynN2J a5k3MinCKxEh5Qi0bsxSlY5nrWG2KxP3fbGY9XN/DiwFqwt3ky9L4KwMW4nyQjpWKKEI e8rKU9WEAdxTkMAHUIwVBFfvj7D777myrc5Ne1TqJqF8SPKgwxyjwB8TecXwm7Ov2c1b NPow== 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=XJp8k1XTBOYLX1l8DeT+YJ6pyxD0dHmmzjN3iDefNwc=; b=FXviwg20V5Ox/K7pcioaSN7TJ4dj/Cb1t5VulZlX5o/hWLxg6D/Q9mTwESmDNOBOWy sjKnR30qjlaXz0NOGt0g98VdHqUVswODiDR0JsHmEyLpQaYf9XgRZj6YZ+/Q9/QrvrLr nHbsXGjDupRk5yhpyi/DMP1MQe2vuG2nDNr8djnR//YapSr6ZR+XOORPGT/kxz8dwPea RgkCwNnXs1KUXnHxQA7Nds+gS6o9NNMg5d93qua6eKN8NH0NiK48ogO3fp6C+j5XciGE cjFRNFiwoSzGbI760btaHY3r+9rsNqG2BWfwzqWgMyxV/yit6maon7WlZK2luKrFyztY u5wg== X-Gm-Message-State: AOAM5311bEBP8b2LMtsq97jfigjJc82nDYQ73iiLofcWXu8nJWkVlIRn TzpKZwuoSo0UDBsX25mlf01T+pW3dohdvg== X-Received: by 2002:a62:7f94:0:b029:1ee:186e:afa7 with SMTP id a142-20020a627f940000b02901ee186eafa7mr12325958pfd.33.1614554666493; Sun, 28 Feb 2021 15:24:26 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:26 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 41/50] target/i386: Move invlpg, hlt, monitor, mwait to sysemu Date: Sun, 28 Feb 2021 15:23:12 -0800 Message-Id: <20210228232321.322053-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" These instructions are all privileged. Signed-off-by: Richard Henderson --- 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(-) -- 2.25.1 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 */ DEF_HELPER_FLAGS_2(get_dr, TCG_CALL_NO_WG, tl, env, int) -DEF_HELPER_2(invlpg, void, env, tl) 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 */ /* x86 FPU */ diff --git a/target/i386/tcg/helper-tcg.h b/target/i386/tcg/helper-tcg.h index e848c3b4b9..cce350aa0b 100644 --- a/target/i386/tcg/helper-tcg.h +++ b/target/i386/tcg/helper-tcg.h @@ -80,6 +80,7 @@ extern const uint8_t parity_table[256]; /* misc_helper.c */ void cpu_load_eflags(CPUX86State *env, int eflags, int update_mask); +void do_pause(CPUX86State *env) QEMU_NORETURN; /* 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 20bf4771e7..180bed9021 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] = edx; } -void helper_invlpg(CPUX86State *env, target_ulong addr) -{ - X86CPU *cpu = 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; @@ -100,7 +92,7 @@ void QEMU_NORETURN helper_rdpmc(CPUX86State *env) raise_exception_err(env, EXCP06_ILLOP, 0); } -static void QEMU_NORETURN do_pause(CPUX86State *env) +void QEMU_NORETURN do_pause(CPUX86State *env) { CPUState *cs = env_cpu(env); @@ -109,51 +101,6 @@ static void QEMU_NORETURN do_pause(CPUX86State *env) cpu_loop_exit(cs); } -static void QEMU_NORETURN do_hlt(CPUX86State *env) -{ - CPUState *cs = env_cpu(env); - - env->hflags &= ~HF_INHIBIT_IRQ_MASK; /* needed if sti is just before */ - cs->halted = 1; - cs->exception_index = 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 += next_eip_addend; - - do_hlt(env); -} - -void helper_monitor(CPUX86State *env, target_ulong ptr) -{ - if ((uint32_t)env->regs[R_ECX] != 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 = env_cpu(env); - - if ((uint32_t)env->regs[R_ECX] != 0) { - raise_exception_ra(env, EXCP0D_GPF, GETPC()); - } - cpu_svm_check_intercept_param(env, SVM_EXIT_MWAIT, 0, GETPC()); - env->eip += next_eip_addend; - - /* XXX: not complete but not completely erroneous */ - if (cs->cpu_index != 0 || CPU_NEXT(cs) != 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 ebf15e3dde..1d8b651212 100644 --- a/target/i386/tcg/sysemu/misc_helper.c +++ b/target/i386/tcg/sysemu/misc_helper.c @@ -434,3 +434,56 @@ void helper_rdmsr(CPUX86State *env) env->regs[R_EAX] = (uint32_t)(val); env->regs[R_EDX] = (uint32_t)(val >> 32); } + +void helper_invlpg(CPUX86State *env, target_ulong addr) +{ + X86CPU *cpu = 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 = env_cpu(env); + + env->hflags &= ~HF_INHIBIT_IRQ_MASK; /* needed if sti is just before */ + cs->halted = 1; + cs->exception_index = 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 += next_eip_addend; + + do_hlt(env); +} + +void helper_monitor(CPUX86State *env, target_ulong ptr) +{ + if ((uint32_t)env->regs[R_ECX] != 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 = env_cpu(env); + + if ((uint32_t)env->regs[R_ECX] != 0) { + raise_exception_ra(env, EXCP0D_GPF, GETPC()); + } + cpu_svm_check_intercept_param(env, SVM_EXIT_MWAIT, 0, GETPC()); + env->eip += next_eip_addend; + + /* XXX: not complete but not completely erroneous */ + if (cs->cpu_index != 0 || CPU_NEXT(cs) != NULL) { + do_pause(env); + } else { + do_hlt(env); + } +} diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 708059ac15..aa6a8c4813 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -194,7 +194,11 @@ typedef struct DisasContext { #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) From patchwork Sun Feb 28 23:23:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388468 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2923823jap; Sun, 28 Feb 2021 15:49:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJyH0qAAtNK0f97gdiO2hSqvHohSzIe1yxuax+rdaAKyUgFi8lo2U0lz3xnYAd8OZDNtzD3h X-Received: by 2002:a02:781f:: with SMTP id p31mr13427671jac.14.1614556176306; Sun, 28 Feb 2021 15:49:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556176; cv=none; d=google.com; s=arc-20160816; b=QclGSEUyl74oXM5RCA4L+ETSjR+IHZLWLqRofUBRRwwMGNiD0eg50h6YtkZzOepWEL UX8tgIiF41mxnMt9PdMNwjwkJPaIr+0QZ2Hr4/elWS4TSqvXi+doNOKg+kxHm5glqlj1 K3LCk7lQbq9MgbpdJciZ/f+sf1yp00JaBGERBTJqhTvLnTh4BwwL25JAiWHko7lR2A5l cDO2x5uTz8Duy40jkjMFuvsFzRfGNesKs4367Vim+7sOavch66U/VE/5aLHpMzOcM4+k 0ULeO7EmeALnu7BfuksTrXERh0regSr8jWSarjPbrliWM2G1XIQ0io0Yy0x/UAY1wzq1 Djaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=6nFM7mvFhUXE7Fg3oMPfO4xBFJLP9Mt7B9tvDexHBR0=; b=NiwPXruIZ8ivTNiVNZoUmZKB/H6bjBvWkePRuV61jvlOjFTiCW5m9h8XpfznMn68+a QaAUPiu3AvFrOWOS5yjF3fcIFEVO8+ctSzEEkA5wcsIsh5PFyqtHaJXuoyARLC0IERVS 0XQien9zrXUQVKx1KySIPJLjlIvvtmrKEpK1r4YXthVawkevG7hr23Tg9B5Bi4d5SRxu M2bUKvMSq4pCaK36VzGwQqnKjZvKhW/oqtj906F1TNQlNci61az88ob6I/xtbXtgv59d lxsvzqKBVAnnACLdh/MPj/Ygo5164lF1E6d22ebEEZ+guIZM5eNikXU7cZFs0Oc18poE M7tQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=p6wYkpOU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id y6si13665448ill.138.2021.02.28.15.49.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:49:36 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=p6wYkpOU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39994 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVod-0001WT-Gz for patch@linaro.org; Sun, 28 Feb 2021 18:49:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44012) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQM-0006b9-He for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:30 -0500 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]:34836) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQK-00082B-Bo for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:30 -0500 Received: by mail-pl1-x631.google.com with SMTP id g20so8775706plo.2 for ; Sun, 28 Feb 2021 15:24:27 -0800 (PST) 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=6nFM7mvFhUXE7Fg3oMPfO4xBFJLP9Mt7B9tvDexHBR0=; b=p6wYkpOUEiQcwZBfLF2/Wh0H06s8bT0jSUOswYH5H9q/fshKkZDdk0nQWmHQnBUi5w CFn8MnvbiCngeGKdMScNXmdlx0S4HZThLzz6yMKrvGSfAdGS6ETEo7uw1/vf50TAQXS4 TR/c/qpszGzBzh7ChUiqwvfAqXB5JCOfSSzmb4GZeTDOS1Kj6pOaedHXXhTlrRXB6GJx Z96/bAunEzLMMcSX91b1oisyu++os2tMmv7D7Qb6eAJU3cZz/WuLvaqpBtIfaSd/7xcp v4RHCJneoKAPvuaN50FklPHuQ7KIRoPN5eJmFIpBqdLHfuCZFzPn5QqMQj2JiUB/fqe3 DQFg== 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=6nFM7mvFhUXE7Fg3oMPfO4xBFJLP9Mt7B9tvDexHBR0=; b=RuEiDzgXYlIJS26jwXYkL6PrsWyi23rGu48Sgzrlu7N5uq8IjY03LbpcwKvH8IALCz CVITqhleLKclHsLdqcfJO/lOn5L6rRb7lNoKkzncVIkyQZJAxDtzZfMl9sYPDmPrgeuR CViTucGBSXTRFXp1dgjnFJWXaEPjKV3pXRteCwu9tDvA30XXTaO4NURpkv/WC10ZDfN4 VoObqHAh7LTlxAYzRuo1yLQM3iP5JcP7Nv44d3FD6pf7k47P36F1onB9Ra/Kj4oo6KEF an+ak3L/CLQH2eoaYWIE+nYBnIzeTfapmiAmeZCZ3AD/VDB3YWtYHtAzPyK6D6YnTWht dMHw== X-Gm-Message-State: AOAM53178dVOQJG+K1DCqQ1gwabFgCbHMdBfIUkVP/maHpYdx4+OGcCB PgS/JwhJhawXjsN6U6BkvbnuP/GEjx/8aw== X-Received: by 2002:a17:90a:7c0c:: with SMTP id v12mr14095219pjf.63.1614554667155; Sun, 28 Feb 2021 15:24:27 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:26 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 42/50] target/i386: Unify invlpg, invlpga Date: Sun, 28 Feb 2021 15:23:13 -0800 Message-Id: <20210228232321.322053-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- 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(-) -- 2.25.1 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 1d8b651212..b7146092f1 100644 --- a/target/i386/tcg/sysemu/misc_helper.c +++ b/target/i386/tcg/sysemu/misc_helper.c @@ -435,12 +435,9 @@ void helper_rdmsr(CPUX86State *env) env->regs[R_EDX] = (uint32_t)(val >> 32); } -void helper_invlpg(CPUX86State *env, target_ulong addr) +void helper_flush_page(CPUX86State *env, target_ulong addr) { - X86CPU *cpu = 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); } static void QEMU_NORETURN do_hlt(CPUX86State *env) diff --git a/target/i386/tcg/sysemu/svm_helper.c b/target/i386/tcg/sysemu/svm_helper.c index 86a0b3c4be..a8a671aa33 100644 --- a/target/i386/tcg/sysemu/svm_helper.c +++ b/target/i386/tcg/sysemu/svm_helper.c @@ -423,24 +423,6 @@ void helper_clgi(CPUX86State *env) env->hflags2 &= ~HF2_GIF_MASK; } -void helper_invlpga(CPUX86State *env, int aflag) -{ - X86CPU *cpu = env_archcpu(env); - target_ulong addr; - - cpu_svm_check_intercept_param(env, SVM_EXIT_INVLPGA, 0, GETPC()); - - if (aflag == 2) { - addr = env->regs[R_EAX]; - } else { - addr = (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 aa6a8c4813..9d2171aa3a 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -194,9 +194,8 @@ typedef struct DisasContext { #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) @@ -7586,9 +7585,15 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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 == 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; CASE_MODRM_MEM_OP(2): /* lgdt */ @@ -7676,10 +7681,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *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; From patchwork Sun Feb 28 23:23:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388498 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2924496jap; Sun, 28 Feb 2021 15:51:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJzOdNsILC0rDiR24qXyu1kKLLWMdXyYt29q3LAcGT+mVf2MEH1F1NYZfxFSD9H536mDquXL X-Received: by 2002:a02:a889:: with SMTP id l9mr8390887jam.1.1614556292393; Sun, 28 Feb 2021 15:51:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556292; cv=none; d=google.com; s=arc-20160816; b=fO1KfW4BPF8qo66OjTAWyMJFW4mloKyjKhpAtCtL/1e34qxTFL1j86S9DemeKD1Iqi ZGV7gfSlVNyyU6yXrhMqXci8cKGh36hR5999CUR0bcM1tvsri4Mia8xqeTaWW6TCDZMo 77dpMz1fH9grf5bonJCeDCPzeBaJw5JJ6hXkQPHVSYWHpRro/pGv/NsJSXrWmlRpMe2v fTUTZX8jlI2etXrKaiNCJMiqKmJwyz7Gj5eXtiMXj/aZAsiZTdDIaa+oQ7TYy4C7jePq cZxnKkzcaXxJaUqdwkRKIzMbTH8xjWlq7/U5rs4dA2od6zs5V2gO8w7BH+PzJlNT9v5c v/GA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=H5E7k9OmH/UhmHw5sMuUJjf7Rg3ut1g/2JQo4GVdgNQ=; b=iCjNqo9TPsIyiTOssQvmDvByk3MNpaq0eb9gMpzhsPPZPGY6jMc/ym9El+AFjbGRNu PolqX4R5r7Q/zXAeFdK+1I3Rt367V3YSFlUD1JGXnfFOBhgJm5Yp87gw/7783XSa0jU0 UkxcCqAE2HtLIv7KO82F6tq876h+kwSVKOObkqYu9+/kcg6eWfU0sPlDyYHL8zON2gQp S8u4+Tj3X70bAo7x/S97EEHupBSaaqSJl8mAEwVgQPhvCD1hMSjdM1v0NoACrM16xsp2 Af+EcfC1RJcQo9gUZ/fDEhk43t/zF+lyo8Td1G3OhE1jNKG7bmWgaBSum0zgXBqHUjd1 MDCA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pmEGnKGx; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v3si4450745jat.33.2021.02.28.15.51.32 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:51:32 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pmEGnKGx; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:45760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVqV-0003ws-QC for patch@linaro.org; Sun, 28 Feb 2021 18:51:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44028) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQN-0006cB-12 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:31 -0500 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]:36564) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQK-00082H-VO for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:30 -0500 Received: by mail-pl1-x630.google.com with SMTP id e9so8765590plh.3 for ; Sun, 28 Feb 2021 15:24:28 -0800 (PST) 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=H5E7k9OmH/UhmHw5sMuUJjf7Rg3ut1g/2JQo4GVdgNQ=; b=pmEGnKGxowTK+UcFC+rtEK3+hvwetbkr6B1LIxkOK6F1tkGMlWnjzddqPgYVRxoMfu ngcmvS57M+5VHb/FocBUP4C7TSFWCF+umpQWXqBVd/9eA34/rm1sxJ0h+v3RHE3n02Bo nTBfq6iB07trOqfOCoI2XE+uzGBrXXPe87/LmCkg/Hn1DrMZkdnzuxBZTNQEF5vd9JX4 8ktzJxoGgp0IAxtkd542mBacp7hBdMIZRZVy0jXZdvcVhHDV4AoOHdemBPXpViz9hfOh aV6ghHbEr6knP/mP2b/PfoHSYJ1d9U4IOOHKq62PVsL57v1a225wPtOdBbv1vOyWGd9r CGgA== 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=H5E7k9OmH/UhmHw5sMuUJjf7Rg3ut1g/2JQo4GVdgNQ=; b=WhA45lAKNipB98TlLwP2viOkjMOkHcWrnlGSxfYAZWJ1JjvIjNKyGpKEtc1y+KqLgR uEdAej4tqwSewKXBPM4b8OSHXbP2gVBc3k18bDcdIojKYa02g9u4i2ALdNsd0O5tDEVu f56PSfTsWHBCwNm0sh1Yq0oV+IAhusQqZ8w7MX5CqTpnLz+0L7rDa4Yonn/fCHU3EBnp mBxzljf9pRCzPE/Rg+6Dy07QH7yMZxcyzsfg5eqSo2UMM7cg/IWiUK7drLyrmhtS/ne8 1aDrOagcc63YX9IlOvmISbesECuMHM0eWcmm4sxugXvOVSBw5vODrPdHNGno+NmaCGtd c1tA== X-Gm-Message-State: AOAM530um9qz4/GKDNn30Vkkp72jpjq2qeABWuJN1JslA3EB6MmAnd7f 3BShOlwSFpy6cYABmVi6RbQwUT2Naxv2LA== X-Received: by 2002:a17:90a:74c6:: with SMTP id p6mr13926695pjl.134.1614554667785; Sun, 28 Feb 2021 15:24:27 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:27 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 43/50] target/i386: Inline user cpu_svm_check_intercept_param Date: Sun, 28 Feb 2021 15:23:14 -0800 Message-Id: <20210228232321.322053-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The user-version is a no-op. This lets us completely remove tcg/user/svm_stubs.c. Signed-off-by: Richard Henderson --- 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 -- 2.25.1 diff --git a/target/i386/cpu.h b/target/i386/cpu.h index a1268abe9f..70b26991dd 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -2129,8 +2129,16 @@ static inline void cpu_set_fpuc(CPUX86State *env, uint16_t fpuc) void helper_lock_init(void); /* 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_stubs.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 345294c096..16a0be1ae6 100644 --- a/target/i386/tcg/user/meson.build +++ b/target/i386/tcg/user/meson.build @@ -2,6 +2,5 @@ i386_user_ss.add(when: ['CONFIG_TCG', 'CONFIG_USER_ONLY'], if_true: files( 'excp_helper.c', 'misc_stubs.c', 'fpu_helper.c', - 'svm_stubs.c', 'seg_helper.c', )) From patchwork Sun Feb 28 23:23:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388462 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2921283jap; Sun, 28 Feb 2021 15:43:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJwpNLHzS+bD0dtiLNXh/GH5xxRk2VJZ2mrnzQjaw9DDioFU8yO8xvICn5onWNaFyQxSgamD X-Received: by 2002:a92:4a07:: with SMTP id m7mr10357096ilf.51.1614555839933; Sun, 28 Feb 2021 15:43:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555839; cv=none; d=google.com; s=arc-20160816; b=LqNBumZLh15Lz/HW4814qUEcn6nY3ZqcH0QN1FUdSvcDzTERX07ulXr+0kOCtcLxSn pzHsSqj7DeMEO6L3EcCFwrE0p5FlkCguKjK1w4HIq/eEnFmYE4QreGGErtCMMpSP0Jv+ 54z8Gf3pF5qqRYjteWQT2PMQ8O7XeU3sx+6ku9wC/hHb03h9Edjh5WcTn237Yc+CuKSL zRMjgA/fsaolQh9aY2vojiGTIfaBrUNt9jeTUVLl6jrL0Saez1bxUV8zY7VeVCqx3v1O PxNeCZv5UrUfN1u+FKScGg2LDPcacrf2IqMXg1Tmba6gPfjDzCyuRLmYgnlHJR/CBZFF QgGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=LwDKrp05e40VoqkSfurI/uNTqGwd7yQc3l2JK2S828k=; b=e/R+HCKC2z6nFFnNMUNQ629ZYwrmI/Z742xtuaojLFeeIYKy4mTSpG/Dyv4A/3dTxL fKcwWNZuwTEAmUrnxADIjY4Df8IGak1gYn2o5IKeY2dILNeGQMlSv/h3JXXMygYbQXdk +Fn41IpRVJTZNKrsVtaeUBRtpVU83VHFaBFwvoSLpR+6BZqvmIgGKBbeXTOa45i1DEd2 tya6AQotybSYzIPrzuUktyHi2ipA4It9+HuvMJc7bk5vSAj561n528a3rnbDMIAoUa2i oqfwOUrgUUFANrFR//aHdDLx8nLxH6oT1nkfezSnYfEnYLVvWJEqa7SOsZkvE3EJ1nX9 R5Lg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jA3QfZNe; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h3si14096469ili.59.2021.02.28.15.43.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:43:59 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jA3QfZNe; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:48066 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVjD-0001eZ-Cz for patch@linaro.org; Sun, 28 Feb 2021 18:43:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44038) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQN-0006dh-KK for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:31 -0500 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]:37162) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQL-00082z-OS for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:31 -0500 Received: by mail-pg1-x52c.google.com with SMTP id o10so10362572pgg.4 for ; Sun, 28 Feb 2021 15:24:29 -0800 (PST) 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=LwDKrp05e40VoqkSfurI/uNTqGwd7yQc3l2JK2S828k=; b=jA3QfZNeRNP478mdVidjuVrkCYa6QeutoPFaqhpZxbtgYMmFfpccSJ3LCnXY5NG8NQ H/jSOBNXJ9WiwtFBiMrXOSJcu0IlZQcWtQZY1dqhL7X88ZXYmeFbpcy9ldcrZsBFCfCT EKcHg6lTWfDYFSDCv3E9ij9obLmXpZsmf0nDeoldPyFSmwlhtvMQ58dnXxwRowWOVlWD vbOzwjQN4inbk+GSsr7vcQmt9BAgAeXZdgryDNJcqira4skDWnHeGd5ILLA4/aVkIVhs QdFksS/ILxZrG4wy67V/mfFUElFbae3WMcI2yHK1jQe4J5DircdOLV76cmhXZ75jMsf7 3s3A== 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=LwDKrp05e40VoqkSfurI/uNTqGwd7yQc3l2JK2S828k=; b=FK7g7K+f0LmpxeXnf28OxsPqCWwEI0BYeIKplATZWT5HLswR7/ZMat7RRDZt1Clvgl B+MpUa9DcVSeQHwtB7TkQFNXpgyM6Tn8+CrMaKmkaM5WIHPIt4RiZiDnQ6GVcXmT+vok VR6VfUeDc/ffp57o8DZgrwvh2u3/L7UaSNiiLxg3zgWODqb/01VQK3g2QrgMwkokjK70 cmTlEgkcqoI3aiBvkIL9WbwWAjjHmxpkW9Nhp9ui2u+WZ+zDXr0JuwQzXoWuYxJYV7yQ HFggaDzZGMmQsI4PcSpskradJsn1wSkKD4IsXwk/CtCiTSxNV2jUa3Bv7IknH9MLUa3B sVow== X-Gm-Message-State: AOAM5312N1t7nkkaVHswKYHyS7w51PFylX4rrhF49xxPGSSJkHWZCswk KPVISDqpEw6qjZwPo31fRIKzrWtknk3T6Q== X-Received: by 2002:a62:5344:0:b029:1c7:eeea:8bad with SMTP id h65-20020a6253440000b02901c7eeea8badmr12659627pfb.1.1614554668418; Sun, 28 Feb 2021 15:24:28 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:28 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 44/50] target/i386: Eliminate user stubs for read/write_crN, rd/wrmsr Date: Sun, 28 Feb 2021 15:23:15 -0800 Message-Id: <20210228232321.322053-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- 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(-) -- 2.25.1 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) #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) 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 */ /* x86 FPU */ diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 9d2171aa3a..2493d39f0b 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 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(); -} From patchwork Sun Feb 28 23:23:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388615 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2935848jap; Sun, 28 Feb 2021 16:15:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJyO0b0CyGapmDA8wolZD6P+9sFxBFPIpRs56ZiOObbNodfQjxHngT/j2GcHGAi/AurGz08S X-Received: by 2002:a92:ce05:: with SMTP id b5mr2485680ilo.170.1614557719522; Sun, 28 Feb 2021 16:15:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614557719; cv=none; d=google.com; s=arc-20160816; b=gv82wwzbbMQO/3uOg4NbAaH4BCTJnsVGq8n+kTVM8dvOeG16agQOFJ4WJMdgUPGaRO 7AebLpnE58pPBAQM4or0iOyNz0psqOwsPsXjeGX/LBTtOBVnyBGYL9OR+d8sM3aegvoQ hpU8kLzBNBIH90MlcwDV7wDhk6vtJx+paOfQ176zmYovHQhq36mPI+TZuI2mrH/Cpkus AsP0Ot39PDWpUHOAB9YZ/OTJJqQa064S0ikl4veC8DLXNWpP1Jt9aHF3QC7Xv1wi3AOA EmTT3q1dPcwcuK3eEFORiXi5lFv6+QJfdXjMY3wbMwrsTs4EAH15pcMjrLZQ4WaMxiL/ 4xdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=Pz+HX3XRxUJQOaoxsHJ2o7c5UPGEgbHAIRNFXsVNOMQ=; b=N/ZzukUE2SpPk9r0OBQD7/OGEimju3CTHSt4uOAFsUxSvaECWhaqkzkLM2j3CpZ5d+ 8LIJV4qoR0PVvbP7btTmu1FnvSj02Rs1gxU0Ofggb/mgZoKCuPH6KP7+TlKsWOe0hun5 65GqFaoav7nID/eluqVC9KLd5Af1h+uJl3T0lFMSju7Aw4xIKR0fHs6Vvi6FT0DQGQIV NT0GuGe/ICH2cOT4kJGLr1pTZ4ct/glbwZOyY7U/jVIt02/3XAWiY1OtaIrOKh0U7a+S NIJgy37CQuaF/Cnr7c9JBiN15tpOLUa1g5nrxVE9Yd3RUN/0YTwyDJmDCtFLBpBJrnQT QKAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ED8jxEKr; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id e16si11144136jam.51.2021.02.28.16.15.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 16:15:19 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ED8jxEKr; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:56004 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGWDW-0003eC-VE for patch@linaro.org; Sun, 28 Feb 2021 19:15:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44042) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQN-0006eX-Ub for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:31 -0500 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:50760) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQM-00083L-Dv for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:31 -0500 Received: by mail-pj1-x1036.google.com with SMTP id b15so9869538pjb.0 for ; Sun, 28 Feb 2021 15:24:29 -0800 (PST) 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=Pz+HX3XRxUJQOaoxsHJ2o7c5UPGEgbHAIRNFXsVNOMQ=; b=ED8jxEKrKHxj7yAc5NsmgMIhWhBaTnFziuCrHRpSRu9iWRrl66QddPi9lPjsSPVtve ooCc6lVdAZUnB6rS9F/ouWtXk3Npo4elKNDKor7lHaqIoPczJrn34oDWYq/TeXpnt/AO DbJLO8kIth7SplcQ87a6//Ap+ypPo+vFLpWcWR4zwyYmKpa8/UFvkUcWCBh2L+c6MTPS Xb9d7G+DYSCY35/UMXySgGo1DEm+vPslMWdiG63oXEHNYNUbSGX4A3pmBUORUGfQdoJy KYpqTaIx5C2CGex92aI0W3heSobmq0VgydfAo+zqrMY7mOkJ1bQowiNeDpuuHFnS6pZH +Uyw== 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=Pz+HX3XRxUJQOaoxsHJ2o7c5UPGEgbHAIRNFXsVNOMQ=; b=dKDwep+NFTIf1OHH+FbbbAGzR04lRfK2UQM5I1g9yKbGoa0JSmoiIRrVm5qFPzkHlo ib2KtR1ZBP9sF4Ej6lQmE8k/01Y6/oBT4Mal+9r2onr4UENvv3jtEx5lK7eE1hVod20F 1vf68fxiStN9XblIaErf22bymJ4Rpx+/BRo6IoKe0tMHntC9hbLdXM/qp7ZlbB0SPfMx 6+9pBDCRO1DqY+pyNqlLpPARYlASTAoTtwQmNvMkoyG6jVgKnjM0BMaxd7A63vngvs7J rtdPr7imWap+5HoD9oo6egwf8FvmYXnH+EufbALSwH1VsR3i+zs/Kr9WsCWgS1bQshep 7WmQ== X-Gm-Message-State: AOAM531F9EJksGuimwPhm2Utq4+nGVnjCrW8jhOykzxHVHkFB7CYdJUh J571T356FjV9EAB4Zssq7A5FnsXL36jL1w== X-Received: by 2002:a17:90a:bb95:: with SMTP id v21mr13958010pjr.30.1614554669252; Sun, 28 Feb 2021 15:24:29 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:28 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 45/50] target/i386: Exit tb after wrmsr Date: Sun, 28 Feb 2021 15:23:16 -0800 Message-Id: <20210228232321.322053-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" At minimum, wrmsr can change efer, which affects HF_LMA. Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 2 ++ 1 file changed, 2 insertions(+) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 2493d39f0b..dc31d8667f 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -7254,6 +7254,8 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) gen_helper_rdmsr(cpu_env); } else { gen_helper_wrmsr(cpu_env); + gen_jmp_im(s, s->pc - s->cs_base); + gen_eob(s); } } break; From patchwork Sun Feb 28 23:23:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388464 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2921829jap; Sun, 28 Feb 2021 15:45:09 -0800 (PST) X-Google-Smtp-Source: ABdhPJx6N/wmQ+fDBtJ3ARE8wVHXuarRLhK+Ui9nwL6MrXfUdV/gt2lrBaFxWy8A9SFL4B+ltLIx X-Received: by 2002:a05:6e02:152f:: with SMTP id i15mr10756845ilu.183.1614555909196; Sun, 28 Feb 2021 15:45:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614555909; cv=none; d=google.com; s=arc-20160816; b=sIi2F7Ho6h30mdp7PdLm71o/R+lTKpVmxVf/rbLwYecqxhHe3qWRnpm4KowU+bJxXq cRo/nNKTlI07+QGmGqmxytHMXlANjHyGovL55eOL5Jo2DPwF9K142wcn8XvXSK9SFFjX vgbOFl1714EAdMW9HZI9DXDkOW8JQXAd8ufOLtxemRTQBCppET29YRYOOZ95GPvkGwFe rPLfcur6y+BzrLmyyL6+Kl2+VYnrpv6Ps1lXsb8gRR2zPdeGo1HOgj7QbT5lvcKy5M4m HqTrJJ1aXrGAkpRs/ep7FQOZgQtPfdpANaOG1U0vHwWdxPgA+erU2498CKRkIlUwwNwZ p2YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=8AxLxL20h1MLfwKywJHFZQ2Ei3N+Q0xu9o2GbD1OO+c=; b=LbJDc6Zys+wcQxO0f8DqLseb7IYF5y9InO7fwhvF52Yj2Cxx5HJffDOR7FUGypXBCU 3SAkTYLvv/O90PIgDY/C2tERHaPkVXczuZNn5hOuglWRdJPEvsYjEI/Fjn1LZZ6C+DeV J+firtYscgE7mcP5sTQgwBF8nqlOT6Z4klubHfjhT59lr8MJJIZPwJUnVGToBbaclQ8a 5tNzUMLq5u/LYbk967cw/ggytGa/k+yGTl1H1oePz9dVIQiZ20Jg8rNvsE4kDpWuPF9N vJLpC0ixboEuJctDi12WON08VK/UTB43D3PL7xfOkCpb6d6fu/zLkpyLpt669qLTs9Ak UsLA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=VcE8XUVq; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id b12si14651415jav.20.2021.02.28.15.45.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:45:09 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=VcE8XUVq; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:56626 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVkK-00057R-Gy for patch@linaro.org; Sun, 28 Feb 2021 18:45:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44066) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQP-0006gv-6P for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:33 -0500 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]:41128) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQN-00083t-7Q for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:32 -0500 Received: by mail-pf1-x42c.google.com with SMTP id q20so10260753pfu.8 for ; Sun, 28 Feb 2021 15:24:30 -0800 (PST) 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=8AxLxL20h1MLfwKywJHFZQ2Ei3N+Q0xu9o2GbD1OO+c=; b=VcE8XUVqFoyj/SlnJg8BpfSepscrQDSWNAyA2DjZTKlmg2Sa7X2Q1h69BJCSJn5SGe G2Pq5oTM5a9aF2B/chmJr8PGH4bo8Z8e4elbDu+W3b8tOjlnh3KkdH2rWBC1gW6kMDNx 6TdK/CTOZTy+bUyyPvFH969EE4E3MrQ64QXymNGXxWg3q9TZ/GDTyIBdrdQWPvYATZ0n BG2WXbWLbmzqGE5lYsFAdBtZg9dEQzrzZcw4iEPAqSL0p+iWXXD/UI4RLZ8mJnJWl3ab GYHPanTT8ic5p9KAD3DNMrKqRu0q5cWwKkhw4AgUHFq3UmM0fxIwX5KwhP2DLNjIUdE1 HHgA== 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=8AxLxL20h1MLfwKywJHFZQ2Ei3N+Q0xu9o2GbD1OO+c=; b=K5fMnmqW/lEeFQdlh6Ke9f1GRs3i7h4BnbUC97gxzEZ50kRkeSH9ffp2c6ywBb8AP+ Pt0GyeIkkUhROCLNNm3byLHS9fSzyD9mmA8aPWsfjBnVn3wSqeSvTFCct4o+INO2q/Wp fj5yZu7H0BEhJ+OkeUiexzzuHyPw5YGM9pGvw6p6fAVzFAkKD3wq6wL/7wIUwksAOaKI jGmcrN3R9Mez0hSl+kxb9dZdK2Jl1N9hNwmaCkOs9zb70OWPgsQQR+MxmIdtQT/cOmcn byLSm4/U2w8s5rtNbY5cWjJaZ7ULlh48UwAmCJYlqMGgIBcAegyAai/6fa5CfktUrDNu 0CQw== X-Gm-Message-State: AOAM532BCG2WNRm+oqZBzUI8moqI4EevujvK/UUwnIURZNFZ6sdJWP0+ ZrCzKkA2PZQw4p9QNzDDhjwSstr6pFyJTA== X-Received: by 2002:a63:4e44:: with SMTP id o4mr11480066pgl.46.1614554669887; Sun, 28 Feb 2021 15:24:29 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:29 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 46/50] target/i386: Tidy gen_check_io Date: Sun, 28 Feb 2021 15:23:17 -0800 Message-Id: <20210228232321.322053-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 57 +++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 27 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index dc31d8667f..83bcf5cccc 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) } } -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, target_ulong cur_eip, } } if (GUEST(s)) { + target_ulong cur_eip = s->base.pc_next - s->cs_base; + target_ulong next_eip = s->pc - s->cs_base; + gen_update_cc_op(s); gen_jmp_im(s, cur_eip); - svm_flags |= (1 << (4 + ot)); - next_eip = s->pc - s->cs_base; - tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); + if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { + svm_flags |= SVM_IOIO_REP_MASK; + } + svm_flags |= 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; } static inline void gen_movs(DisasContext *s, MemOp ot) @@ -2425,11 +2427,6 @@ static void gen_movl_seg_T0(DisasContext *s, X86Seg seg_reg) } } -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 */ @@ -6477,8 +6474,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x6d: ot = 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) | 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(); } @@ -6496,8 +6494,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x6f: ot = 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(); } @@ -6520,8 +6519,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) ot = mo_b_d32(b, dflag); val = 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(); } @@ -6538,8 +6538,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) ot = mo_b_d32(b, dflag); val = 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); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { @@ -6557,8 +6558,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xed: ot = 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(); } @@ -6574,8 +6576,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xef: ot = 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); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { From patchwork Sun Feb 28 23:23:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388518 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2925105jap; Sun, 28 Feb 2021 15:53:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJzGZOfF7J4/LSiKneMKeSdpAxojgMlz4fV+JihtDtPTt2G+W4JXsoQqfapijVv24ffsuQtf X-Received: by 2002:a9d:7541:: with SMTP id b1mr11212666otl.120.1614556391780; Sun, 28 Feb 2021 15:53:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556391; cv=none; d=google.com; s=arc-20160816; b=Id3zaIpqSEVWEG8CrvF4DmBFaR9vWuZk3+cS/MyYgfpQGfkBWl3gMet7Ghyv1uaDit ShOzQo4n5dpjaFcE+avyvCurc27prOWibx0dXkcTI3/AxExEi4PEn3qBfnRhENk544SB NBXLbhhaa6iM76l3CqyI8hCs+rzZfKRULHjZqC84LIyJM5+lEL5HSOJQnauzVB7BGZLF bmLVre+bmrfu1d1wUsU/OQZv6MwJJyAfgo2IBKgQIluTYLs52KMcE6sJfQfJaYD8o34Z e6bYEOKI3orsgNI+kVmBvFT3dIutUdpuDiguJ5mCVEzlpuObUjWuu+SFUyAPpFbVJN+5 cJdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=6Ap9UlfvhhAW45LCatzEg/juSTyb7nVXMtNN6jx1skE=; b=bcHZz5JN+psxzrmI30PywJLbRJkzIIFiSMsTozwoY/i7QuMGL7sPH+GsUxhoACjCZB 8Opq4a9GicxkrKkqHCTgeVrDBCaG7s23qI0H2lpru4DzosvNHHJSszf3hdlAbDCBgYF+ SFIo+zHjJg9F4DzMnaMx7pZLgog2dAXDzRbkFl8CLDycnn9Bn3VMjF891u8gg8n+yzDy zzrQhcU/+oLYesm/jb5WRmjePrvRNn1RSR5u0PCMs5yP0WGvERwdqVvY6SNFGNFXFVjn WDSXJaK6agOI6pmuaTMcfJ0s3QTiQkDsZCGP8up36GZ9sfvT4nOIY+HWXOu8UXIhCJS0 72Gw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=e9ZDDl0Z; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id p26si12284663oos.46.2021.02.28.15.53.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:53:11 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=e9ZDDl0Z; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:48636 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVs7-00057A-2a for patch@linaro.org; Sun, 28 Feb 2021 18:53:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44088) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQQ-0006ih-3P for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:34 -0500 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]:45410) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQO-000843-56 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:33 -0500 Received: by mail-pg1-x52d.google.com with SMTP id p21so10339647pgl.12 for ; Sun, 28 Feb 2021 15:24:31 -0800 (PST) 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=6Ap9UlfvhhAW45LCatzEg/juSTyb7nVXMtNN6jx1skE=; b=e9ZDDl0ZkpjZEo6NVkncWUtkbYF8GlX4nE+OBtviFx6SxPRzX7Pa/ma02BtbAXFz0X JQmhag9CyfOq3uPJ1K+alJawVmkoLfUFWddgJnCRm2JTMUGjiQodSmogQJiWHR2cqjnl nt6rqaXy+tZSrwveDYP9FkDoVXmdK+2ctJjWbiUlbI4plyLSh/vWvtlIEawOwYTb51ep pnINBPNpeWTGtscRZvT2ojFsxMBTv4/wYYz1stEFmuK+Icnyn3nTolyBDcsDQhV6lLLl UotZWrxtv3ru2Uf43A1atV/zvjrIp2ctkAgFCu/21/V8DuCqRCcGJ4QHy+b7KtyKNzMe V1Lg== 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=6Ap9UlfvhhAW45LCatzEg/juSTyb7nVXMtNN6jx1skE=; b=JX4LszIRlb/GulkUuSKptevXUTVuYdDLxlum7fxgsX+3aaD3JwpQ/Wj0HX9CnaooLd EPtTXs3JWI5XqW4iztwosUFzJ3dZFSfJoEZQnvzLzl+xUMhRPgFU3S/NNTV66fwbeoOv /o09hsd0ovnxH+qaCFMzgcvf8oUcI4yqaPmjSoLnNm/6ot7irm4sDHm66DRepPsy8F3p peLbFiO+JRCCUOnNv6IdVrEPxgQ2NZJuvTkynQ+csIKOMChVHkM0T4SNXe2f+b5BjmgI cQHRkhopT+spJwyDJCxETm5P+7/TofOQLWuRVp5my7npg6+3v330m6Uq9yZDnoR4Fmsm x56g== X-Gm-Message-State: AOAM532RVYXFPpvhrl7HYeNq4rE9LUnYB51RX5rRtxNubwAc4ZL0zmbB XpKKYRqGYyw27ZL349+RJTbt5LJ7VA+gfg== X-Received: by 2002:a62:7797:0:b029:1ed:7b10:84c2 with SMTP id s145-20020a6277970000b02901ed7b1084c2mr12304145pfc.47.1614554670639; Sun, 28 Feb 2021 15:24:30 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 47/50] target/i386: Pass in port to gen_check_io Date: Sun, 28 Feb 2021 15:23:18 -0800 Message-Id: <20210228232321.322053-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- target/i386/tcg/translate.c | 55 +++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 26 deletions(-) -- 2.25.1 diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 83bcf5cccc..0937c136ff 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) } } -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, uint32_t svm_flags) svm_flags |= SVM_IOIO_REP_MASK; } svm_flags |= 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)); } @@ -6473,8 +6477,10 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x6c: /* insS */ case 0x6d: ot = 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) { @@ -6493,8 +6499,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0x6e: /* outsS */ case 0x6f: ot = 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) { @@ -6518,14 +6525,13 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xe5: ot = mo_b_d32(b, dflag); val = 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); @@ -6537,16 +6543,14 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xe7: ot = mo_b_d32(b, dflag); val = 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); @@ -6557,14 +6561,14 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xec: case 0xed: ot = 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); @@ -6575,16 +6579,15 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) case 0xee: case 0xef: ot = 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); From patchwork Sun Feb 28 23:23:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388469 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2923866jap; Sun, 28 Feb 2021 15:49:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJww8GI4smnzrnjST3QGhOvsn7vXI11WicyYvH/dQsAwzJKcvtr4wUdvwLjrPwnZJSvai7gZ X-Received: by 2002:a02:6f47:: with SMTP id b7mr12886851jae.64.1614556181174; Sun, 28 Feb 2021 15:49:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556181; cv=none; d=google.com; s=arc-20160816; b=fW08Q1NW0a1GngNZ5V49jhEqd60ktvYKbT4+n6IMLuVk8+5DGdqx8fvSJ82snHcL2o N/jyQLk5xqIDMGJdJ2TQGa5/U25GWMPe6tdMhRQFiKLSDATpqxYDCf875TVxuUw0LWjK R2EzJmax5JfVFXgnUPWM+hq9Hd3wEAJV9T9NdSmgf1R54JgQrmdm/rDd7LefN0R3ISK5 nQzpYTjUv1pBdhaXsCB9CBWkA44hsbGOvZ8vogcfYwl44AGOVjM/tgS/pHWvYXLVqeMy sXTOOLT7ALA3fyreOnwkhWidF9QqT0AHbZrMr/OuoVtRcvEIyOYkKNu8ONLlnf4OPKvA ECjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=gutltnWyK55QxNx/fNlUeXYFxcXe0QnaxkNm916We5M=; b=JijYkyIOIzkvNBKf7tuYgitVN2hMYMwCUZGI4IjWXzAejBtKwXeAsUUKc5azF/Bh8q CAkHUZlyO9+b2wfeVzrOOVi7kIdgwKWyhfh0PKZBmYTzamZQEnqbD2Hrfwj8jocyvpVV 95vmVnqnmqdyaMyrhVT7UZjU+bpSZ/R9/c9qXkJwTPtq+nB8JBzB6CFxOHJXH0qENYcC nmfO8N6rRoNXlFF0BTQFiiAa5UsRTPsoMnkz8fOYpX6sNfv2mNQ2nLhTvJHRwqqlVeWL UaFX4DvH3me+2AoiSdS9zASXB1QqkpWkViDtEW6tapThRrVBZei09OA0dtQ7KPQnsfWR Kp6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Ho+KTzNY; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id b16si14543403ilq.33.2021.02.28.15.49.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:49:41 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Ho+KTzNY; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:40126 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVoi-0001ZT-In for patch@linaro.org; Sun, 28 Feb 2021 18:49:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44104) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQT-0006mQ-3J for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:38 -0500 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]:35216) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQO-000849-H7 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:36 -0500 Received: by mail-pj1-x1030.google.com with SMTP id e9so10494632pjj.0 for ; Sun, 28 Feb 2021 15:24:32 -0800 (PST) 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=gutltnWyK55QxNx/fNlUeXYFxcXe0QnaxkNm916We5M=; b=Ho+KTzNY+dOfNJ63AqFit49YCTW0T0Y9oBabaSegN/Z/Gkq6/NeXvWRsE0+3VcHoDh b8bfglLF+0qSzT+fb5t4gHRBCpWDwua91US6kechhI/P4mP00rgZoMiRBexCFgIf6NYr hRJfwHlJuEvYKxpThnaCDPq9Nx/lWpTo6bi7fPoKX9vBg+FBKsh4UUgABEulMVy497B3 Oh5Obo6zE7G2DhZXAwEspWBznxjT5ewLjfMpwEIFBJBbx3Z9dJ+NezozSzdYEYbKe90r P7KDcvLn+JUQ3+nlOxWSFT26D1m803QNm0JcsykA5VakbEQPmBswdKTzi5e4rNwVahkg Sfww== 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=gutltnWyK55QxNx/fNlUeXYFxcXe0QnaxkNm916We5M=; b=rDKJzNkjZCO/XNbIJ9VVcZy8Xs6HmEnZU9HUv8PiSrMncSFy54IfAwAbxt9PYd5z+Y yo6nK0Mhy/hCiK2rNm+auR02Cl6axJ+mKoDi6Qt2/SgDw0EDk6i3sVOUoyHWIpYVANHd bjEYwEoDB6qIU0Gzr6J1JP//FqByCOHHBxREjCsxtbHhMvWjtW201PMx13nE2pQIBAhU 2dR12p2RMrZdaRGBFjiHOflGXhQgXdNEJISF/cMV0SfI2ttkYhMztr8spTU8A2EHTUex sjgDBgtX77/DQ/4rzWlTuCfHC1qJa/6k87asjBFJUVL3u3KcYVFhb6kmX5oXC2fr8kpy wRfw== X-Gm-Message-State: AOAM5339SK0icDiVJpAFRoTvzizmTW6BzbSU3AbE67AOKTdL1BSSQvP5 +X3F7Ype5O1iPj1Oy6n5hvPz8953rNDT8g== X-Received: by 2002:a17:90a:f28d:: with SMTP id fs13mr6526965pjb.220.1614554671300; Sun, 28 Feb 2021 15:24:31 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 48/50] target/i386: Create helper_check_io Date: Sun, 28 Feb 2021 15:23:19 -0800 Message-Id: <20210228232321.322053-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Drop helper_check_io[bwl] and expose their common subroutine to tcg directly. Signed-off-by: Richard Henderson --- 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(-) -- 2.25.1 Reviewed-by: Philippe Mathieu-Daudé 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) -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 selector1) } /* 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 = GETPC(); + uint32_t io_offset, val, mask; /* 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 addr, 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 0937c136ff..d395ae090e 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, TCGv_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 = s->base.pc_next - s->cs_base; From patchwork Sun Feb 28 23:23:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388616 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2936545jap; Sun, 28 Feb 2021 16:16:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJw7K4pPkvG5qke28bihCkNJDMI+aRaRmpM78gDLoY6ZOJrBX46DyNBCqvxmvOAaVldTO7HR X-Received: by 2002:a25:d4c8:: with SMTP id m191mr19790052ybf.426.1614557810933; Sun, 28 Feb 2021 16:16:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614557810; cv=none; d=google.com; s=arc-20160816; b=QJgSqka+csYGEI8b6x3GSDDcRs+O7bRWRUZ7zukyXA+6QHJAVAaraM3c67HmHT+FQf QE8INiknZzpP3zeVPF9odQbUvkG6r0AQXHMwwrfZIIletfa4KLp8531ldGW/7dTo2B2f fbWqivbolkoFMAaGPW3aT0Kd5T14xORmxob3SELceGruFCzYnDnztXFadivAMmWmqKSP GEJmW/jHgoKho1u962zCuTjM+CXsf/xbPf2M6djdJJU65jmrzzCJqLLdV6C/hh1JOyjq OBBj5L/6B9bkJJ0pRxNkJ4UnhUpVMxVMY47u2TBiPWIDBYvbLhPx9ylRd1dNGCYHHYP+ aiCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=8vMLy90dzRRYCLSJRNudbDx40gYZQrg07kIc1b62xNk=; b=W0DWRWJKt4h74bhb5mf9QjotAuW/wn6R+VUdZMJOI3+dZe7pyIoivpjdnRshrDwE9j Z3f2tS0duEpX9lEZuQJ4v+EMR4RzDcMflRm+Y3D62X9uo0jKovxRSs3IJk1MtbEiGS/X olPkqamYze8SKhD2D0zWWSGaloJmSz0hIENP4VoyLTvQcO+sgf1yW8sAUHASbECzViQq HhV26Af8qmJM9HDomThtIToDxBxw+2Hz1RLIMkOcmnm9s0XgjZOjDopKoqxsQ/uOo5JY 83zYQUOtkc2CcqK8GsHGl9J/JohbJgmlJcTan5v/vmrzAgL9dXXki98Anv84yzBsA84P E4LQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=memxSsDP; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id g8si16551570ybd.312.2021.02.28.16.16.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 16:16:50 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=memxSsDP; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:58164 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGWF0-0004db-CG for patch@linaro.org; Sun, 28 Feb 2021 19:16:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44108) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQT-0006mh-7m for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:39 -0500 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]:33260) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQP-00084s-6t for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:36 -0500 Received: by mail-pg1-x533.google.com with SMTP id g4so10378546pgj.0 for ; Sun, 28 Feb 2021 15:24:32 -0800 (PST) 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=8vMLy90dzRRYCLSJRNudbDx40gYZQrg07kIc1b62xNk=; b=memxSsDPgOE/YkCJb/3jXN5sAQ+cGbOeHSEwkjpjh448YWk74jw8UkRrKyxiLKRedl S7fM5bhSShaO+BU8bG8wHZPtmVwpSOcqjhgdp0EhShETGTI3h4ybrQLtb9bWl/oiO8LS auY/++qB+Bh80yzynE8A9WMZ0A1t/HaMLky0tieTxhka6vO5foFe+ydxUqs68ZBq2mGa ZgmeBh3/6A3sHvvv/vmCNVrJX9pBSL6DyjcmKdDFEa/siPNdgLJRdPJZIVMLjfBdG880 Paq+Y6yPCQqHGJvqnmJhx1oU0/SAuo0DpwfIlvtQwwp7iUtAII4kTF+PORPJBOStM0uh Kblw== 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=8vMLy90dzRRYCLSJRNudbDx40gYZQrg07kIc1b62xNk=; b=kvGjwPNMuwr++DNzO/FFgNldBEB0f2xwTeXVm2VKf/osNj+ffbS1hEtjhe0K1USpuj 3AAiwAH6h/wjuhnfIMyvJIXutwa59UeBlzMPR/Pi9eWg7cQ+/1rmdQ654eP2uJhoq22u +trMw2whwij70bra+fI2VYRube/AX0uywHwbZepFaWh4pKa30dlZsabdgH61i1DDFukO ArMFS9usFEALHXSOVsiOvxYCyksAlbcuo+CKuL6vKMgZ00uZFGqlpqb1W5BsZ8feIVZM darL1+MYUynVFZA5rgISee+9eNzoDiE4M6MG36PvJ4gZA+d11loM5XTKKnOxsxkP1a9i Dlcg== X-Gm-Message-State: AOAM533C1kh7cYItdMhXhDuLfCWUB+VcFzXm8n36iysTGUjIGE9EZ/l0 TcqPDAlLhxpNojrZmVnLWrE+IJZ7/n+JxA== X-Received: by 2002:aa7:96c6:0:b029:1ed:9913:c23b with SMTP id h6-20020aa796c60000b02901ed9913c23bmr12589989pfq.70.1614554671920; Sun, 28 Feb 2021 15:24:31 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:31 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 49/50] target/i386: Move helper_check_io to sysemu Date: Sun, 28 Feb 2021 15:23:20 -0800 Message-Id: <20210228232321.322053-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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. 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, 41 insertions(+), 29 deletions(-) -- 2.25.1 Reviewed-by: Philippe Mathieu-Daudé 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) -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) #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 selector1) } CC_SRC = 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 = 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) != 9 || - env->tr.limit < 103) { - goto fail; - } - io_offset = cpu_lduw_kernel_ra(env, env->tr.base + 0x66, retaddr); - io_offset += (addr >> 3); - /* Note: the check needs two bytes */ - if ((io_offset + 1) > env->tr.limit) { - goto fail; - } - val = cpu_lduw_kernel_ra(env, env->tr.base + io_offset, retaddr); - val >>= (addr & 7); - mask = (1 << size) - 1; - /* all bits must be zero to allow the I/O */ - if ((val & mask) != 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/seg_helper.c index 10076d1341..b2e3ba8195 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" #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 = -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 = 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) != 9 || + env->tr.limit < 103) { + goto fail; + } + io_offset = cpu_lduw_kernel_ra(env, env->tr.base + 0x66, retaddr); + io_offset += (addr >> 3); + /* Note: the check needs two bytes */ + if ((io_offset + 1) > env->tr.limit) { + goto fail; + } + val = cpu_lduw_kernel_ra(env, env->tr.base + io_offset, retaddr); + val >>= (addr & 7); + mask = (1 << size) - 1; + /* all bits must be zero to allow the I/O */ + if ((val & mask) != 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 d395ae090e..2276e75d92 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -193,6 +193,7 @@ typedef struct DisasContext { { qemu_build_not_reached(); } #ifdef CONFIG_USER_ONLY +STUB_HELPER(check_io, TCGv_env env, TCGv_i32 port, TCGv_i32 size) 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) @@ -217,6 +218,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); /* i386 arith/logic operations */ enum { @@ -681,6 +683,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 iopriv(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 +709,7 @@ static bool gen_check_io(DisasContext *s, MemOp ot, TCGv_i32 port, tcg_constant_i32(next_eip - cur_eip)); } return true; +#endif } static inline void gen_movs(DisasContext *s, MemOp ot) From patchwork Sun Feb 28 23:23:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 388521 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp2926067jap; Sun, 28 Feb 2021 15:55:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJwOWbpUdL/jb3ofBL460aCMslimymxl8f1I0J0dCieNLhnJp3he1/+7zpnnrMzsU1vPl8io X-Received: by 2002:a5d:9913:: with SMTP id x19mr11368835iol.201.1614556557012; Sun, 28 Feb 2021 15:55:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614556557; cv=none; d=google.com; s=arc-20160816; b=NHWaXfZg23nmSsQYaVGQNETVNbQ7v1MsLx5qzl1GaXlXVlPVBv2+PYXCcc2f9woYj0 atC5fMLe9dWVW+Q8gMTTGVmd7Whv9byoPFaaK19+JMGroWFk5ZixvMuA/FxP8ezpTa2u PQTidZIjM+2irz6H6bpVXP75p/uUIhHEp4HcKdCvEfLs5nP9Vxj9bl18WjjcpbsVpmJC geQA8ke33FoQFLa9QLQ5QdWYg9WlCOS72dBqoo+h9e6rwbOACnwuKNx+HV1z/cYEun2E iF14vkHZbnBRaog+RSwQWXULYynPOKIfFP0d0WH41JiXv09UXhpVKhbNyPb8OZMLZvNA oeyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=4S8m8N7s2HOAfQjI8XBQsFuiSb3zv00OfgJ2XjQ8M7U=; b=OkRP/hRNjCoEk1g5hWTEGZVOG/XY9XBMbHD4IJnw3CaI9jnHTBJnyaFZEUK9gNzoa/ CXHcO/AunPIbUs/tGS5F45WKoozmIMtWu743l1Ae23bvwLOfmMpZQ4EEB0X4zKgiAxWg Dc5kFEE/Em8XSdlI3Zr/MXpLAp4yTEL84BxxbTeFHSUSj55PVdLJH6fWkhoaZnAz46gL M8gsehYx0CCV+G8XIHC9vk18ev14P1uT11Cv4ODTzdIbA/LhnHdcvmP+FVoMur7J1Ujz Ll8Vk7DSnJtUgPeKmtNdSQvCO59tjASTjNtdx5Sna8YmvD5UKShG6ctjCatcMf0RdcL4 2x8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=J6AplQNS; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x17si14156513ila.161.2021.02.28.15.55.56 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 28 Feb 2021 15:55:57 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=J6AplQNS; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:57498 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGVum-0000IM-C8 for patch@linaro.org; Sun, 28 Feb 2021 18:55:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44120) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGVQW-0006mn-39 for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:42 -0500 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:53188) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGVQP-00085C-Rg for qemu-devel@nongnu.org; Sun, 28 Feb 2021 18:24:39 -0500 Received: by mail-pj1-x1036.google.com with SMTP id e9so7197654pjs.2 for ; Sun, 28 Feb 2021 15:24:33 -0800 (PST) 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=4S8m8N7s2HOAfQjI8XBQsFuiSb3zv00OfgJ2XjQ8M7U=; b=J6AplQNSNOgG4RjomMyhGYIfJsCY3jcyI5a8m0+QpgVI7u3qYwr5acWOEoh8ecav19 HdEGzv4N+QYYclxmCblct1bCWsuz1QPeonhsEfSIRsdG6SjIpI36HS/M6m/zLUVfImk8 W/K1nGJmNxN4v3Zrlo6TMseM2zkTGGlrabmART+czmLsiKADW/tNZ76z7Xw+oxyvWVJF DlttqU2dnHsetKRCdqwDygmDvU6mRWsu7EutK7pbUZth+GUIvJP1+KHuKvLpiDwylW+N 8IQ78s0rNl7JloFDhhm/fDa+5VcMn0+7UzI2t9CyHYla/D67q8WO6CsJZm2b0cd8V4dm c9Tw== 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=4S8m8N7s2HOAfQjI8XBQsFuiSb3zv00OfgJ2XjQ8M7U=; b=KKMb/wHNFzJ4hHJLFDivbxqrQG9RqDrrMjx+/inmaAYL1szPyR4IVQZagbzfZlaT/G duZoQN1NNr/gHxlxBXtC3cuKE3N7+EEFqHGR8cwp6wbk7+dUdV2vgdPk3lGZroZxVwHZ QbqnUQ8b/jgBkYh0YYGndsWeCubBUuVT0bzM2SX3fihol1q1o0MpLgsNSRB2dxAlSxGU /RObGC82UprQIyTcOs8RFcqSo8+DG6mzlRt9FvZ4MDPsiqOUTMJooLlyikuAgjipyHnL OFapoIjsmOFKgVCQi35HHx31K+JN/jD2/J+KFdPYRhliRLYzblVCoJARZ6eSHtd1bgQn nS6g== X-Gm-Message-State: AOAM533gdoX+bTYa/Cn5OSeWVowOdSehXj3Rxwi/MG913BreihLkSiOd NsZCnuoZfIBE9nN1qJlJtnEQW4fzda4tBQ== X-Received: by 2002:a17:902:344:b029:e4:a7ab:2e55 with SMTP id 62-20020a1709020344b02900e4a7ab2e55mr3596802pld.63.1614554672563; Sun, 28 Feb 2021 15:24:32 -0800 (PST) Received: from localhost.localdomain (174-21-84-25.tukw.qwest.net. [174.21.84.25]) by smtp.gmail.com with ESMTPSA id b10sm14164049pgm.76.2021.02.28.15.24.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Feb 2021 15:24:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 50/50] target/i386: Remove user-only i/o stubs Date: Sun, 28 Feb 2021 15:23:21 -0800 Message-Id: <20210228232321.322053-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210228232321.322053-1-richard.henderson@linaro.org> References: <20210228232321.322053-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: cfontana@suse.de Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- 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 -- 2.25.1 Reviewed-by: Philippe Mathieu-Daudé 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) +#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 2276e75d92..1d08e10f38 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -197,8 +197,14 @@ STUB_HELPER(check_io, TCGv_env env, TCGv_i32 port, TCGv_i32 size) 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 16a0be1ae6..2b059d0baf 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', 'fpu_helper.c', 'seg_helper.c', ))