From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616525280; cv=none; d=zohomail.com; s=zohoarc; b=VpTOQP06ZV05G833XzMi3+CDXSigkj6ELAPgLWTemlf0b2JtSUAPgCTN37xOXGiaaBY+AX9+m5yCo6LVC5G8IkWWi6LghXgjGzB6SkiH8hoNw6kDsXY2X/vAmy8h+kGrg7Mlczt5ZivSmzF4BcDXwnJKPtoEtqRspKDhLpFcltk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616525280; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZZn5IlT2BapleTJTqEZmRXFES9KCoo4eQgHLgV0kshE=; b=HSQB9nSRKVu9xj6q39W95AvoHOKHHCRkY9U4ki+8qGDG5xOvX71mu6xF/higa3uYJtUAVk6Tl9l+iOTNKLd8kCFMYxFLcF5cWwCKSseSJhOZmH23Iniob0a9SVvCd8nlGEacpETC8NsN4KYvmEgAhiY5WYqmwmXrgEZr5CHK1l8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161652528095669.46008142590983; Tue, 23 Mar 2021 11:48:00 -0700 (PDT) Received: from localhost ([::1]:35942 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOm4N-0002Bm-Je for importer@patchew.org; Tue, 23 Mar 2021 14:47:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36486) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm0l-0008Fb-04 for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:16 -0400 Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]:46015) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0L-0003fG-CL for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:11 -0400 Received: by mail-oi1-x22e.google.com with SMTP id d12so18099751oiw.12 for ; Tue, 23 Mar 2021 11:43:45 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZZn5IlT2BapleTJTqEZmRXFES9KCoo4eQgHLgV0kshE=; b=KFLJe20OoyGU7DeNegRcCDinW+fVHZ2S6bCuEfl6Pd8uqm54RBK4MIRF76Vof4ckIN CZYnjs2zrJ2b332cxhKzclrLdiI6Wsd0VPXpHwvXeH/c2lyVYVihCMpFNMdZZmfGEKx7 yzigmPa2FKljB6Rhu1V0mp7+uhDzeJroYtmsgyh8HzuwBqQjy953MrROBpt2DW3ZVyzZ A06uaG0qfBGMX2+AjRtFR6Y5cREtDfJKuBnPr7UcfqnI0sTMJyKuyCq3bjCIvYleMhiG bIkxRVsnrkyEtt9JQazbFEMA1TbyLIAv5OVqdpxLse2wde4vBqnVsuumfUNsLD2YGY2/ HQ5Q== 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=ZZn5IlT2BapleTJTqEZmRXFES9KCoo4eQgHLgV0kshE=; b=AL5ZqEOyWni/Ul1dN5jR5av38yYp9C6ied86LE+XmFi7RxNVx1sBqUV/67fr54FEHb IWrBoEVY3mT5mMIqCYzqry/Pb9m9NplH9c1SAKpHTTPIgrG2Zu5iI+LZ8Uti0bvvfUG1 nkDdjRZQqGATtja7PUExBd/SUD4ywou4QHQNrV+cyjpDddDae6/0kSvp3uUz1DHy4siv iuRBeQFZ/ETBM35wkp6JDgE0tA+Js6wVXY2YB7T7nILpaFAeAmkSGGAGwhaOvPQQahN4 wk7Xt+D7BeVbNrT8vHfhGNN0mHMomk/lXDLkk/UpTkpSdDE7V4wlnDXzrZ4gsalf77ks g37g== X-Gm-Message-State: AOAM533HCX/KT93rr1FFpYa8RZ/22IDtATRo316KHGjjluZvqVB/HZwM mhusuPRPC0uim5RkGsuY7DFd63sQYJq43zeL X-Google-Smtp-Source: ABdhPJy6sYHVxYQj4f8flGA00ZjLN/SAhspqSBwXLvA3y8kyM2aHYm5qbIqFUkJxDc1bYIIZ1DDY6w== X-Received: by 2002:a05:6808:13d0:: with SMTP id d16mr4451655oiw.169.1616525024541; Tue, 23 Mar 2021 11:43:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 01/10] target/ppc: Extract post_load_update_msr Date: Tue, 23 Mar 2021 12:43:31 -0600 Message-Id: <20210323184340.619757-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22e; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Extract post_load_update_msr to share between cpu_load_old and cpu_post_load in updating the msr. Suggested-by: C=C3=A9dric Le Goater Signed-off-by: Richard Henderson --- target/ppc/machine.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/target/ppc/machine.c b/target/ppc/machine.c index 1f7a353c78..09c5765a87 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -10,6 +10,18 @@ #include "kvm_ppc.h" #include "exec/helper-proto.h" =20 +static void post_load_update_msr(CPUPPCState *env) +{ + target_ulong msr =3D env->msr; + + /* + * Invalidate all supported msr bits except MSR_TGPR/MSR_HVB + * before restoring. Note that this recomputes hflags and mem_idx. + */ + env->msr ^=3D env->msr_mask & ~((1ULL << MSR_TGPR) | MSR_HVB); + ppc_store_msr(env, msr); +} + static int cpu_load_old(QEMUFile *f, void *opaque, int version_id) { PowerPCCPU *cpu =3D opaque; @@ -21,7 +33,6 @@ static int cpu_load_old(QEMUFile *f, void *opaque, int ve= rsion_id) int32_t slb_nr; #endif target_ulong xer; - target_ulong msr; =20 for (i =3D 0; i < 32; i++) { qemu_get_betls(f, &env->gpr[i]); @@ -117,13 +128,7 @@ static int cpu_load_old(QEMUFile *f, void *opaque, int= version_id) qemu_get_sbe32(f); /* Discard unused mmu_idx */ qemu_get_sbe32(f); /* Discard unused power_mode */ =20 - /* - * Invalidate all supported msr bits except MSR_TGPR/MSR_HVB - * before restoring. Note that this recomputes hflags and mem_idx. - */ - msr =3D env->msr; - env->msr ^=3D env->msr_mask & ~((1ULL << MSR_TGPR) | MSR_HVB); - ppc_store_msr(env, msr); + post_load_update_msr(env); =20 return 0; } @@ -343,7 +348,6 @@ static int cpu_post_load(void *opaque, int version_id) PowerPCCPU *cpu =3D opaque; CPUPPCState *env =3D &cpu->env; int i; - target_ulong msr; =20 /* * If we're operating in compat mode, we should be ok as long as @@ -417,13 +421,7 @@ static int cpu_post_load(void *opaque, int version_id) ppc_store_sdr1(env, env->spr[SPR_SDR1]); } =20 - /* - * Invalidate all supported msr bits except MSR_TGPR/MSR_HVB - * before restoring. Note that this recomputes hflags and mem_idx. - */ - msr =3D env->msr; - env->msr ^=3D env->msr_mask & ~((1ULL << MSR_TGPR) | MSR_HVB); - ppc_store_msr(env, msr); + post_load_update_msr(env); =20 return 0; } --=20 2.25.1 From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616527321; cv=none; d=zohomail.com; s=zohoarc; b=GWHOoF/nQH2M9r81RFzMTCspjNZ6qHwtXMUi01z8EWpO9sMiOhVJprIEglsadM/gOB9UAwl4tiFAzt7du74+BFUK9bjlHyhQ9wniX2I+ngRPUE5SHEJFqzoroA3Y0hHek4HRigLCL9iGIpx9ATW8KOHJHKq6NS/i3Ay8DPezihg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616527321; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PwM2bOqU7aXMNaHDMLaVbRDxjZE33v838lGFsqK/S70=; b=Pth1Wliw+qRi57nNCUwOqKnzi/UBWAowidSW68m0j9ipg0cgTzWM7HiJ/QnfDDb6maPltIRKQxij7mhOGRUmBCXK/w6lrJXwNPSJClPR/XBGEO/f/PUi/vT2mSMELA7VPwaOqJJFVVi1hunL0AetY0qN7jgDScVeU0BJSpSkvnY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616527320991657.6575638733709; Tue, 23 Mar 2021 12:22:00 -0700 (PDT) Received: from localhost ([::1]:57324 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOmbH-000734-MT for importer@patchew.org; Tue, 23 Mar 2021 15:21:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm0w-0008JQ-DR for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:26 -0400 Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]:36729) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0L-0003fo-IX for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:25 -0400 Received: by mail-oi1-x229.google.com with SMTP id c16so9204622oib.3 for ; Tue, 23 Mar 2021 11:43:46 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PwM2bOqU7aXMNaHDMLaVbRDxjZE33v838lGFsqK/S70=; b=w/YHdJbgIo0mkUpAQmiTwnmyn2QIKSWkMPwpCIgwFo22G59dL0ZmcDyc9XkNTwLsZy iSLEojUc7LZEGM4gSeEgXLeWMLQZofjA8ZFoEGsjiE0rwKrmLhttoFH2RGeTMRviPtt6 +A3gfRKz/qusEPEWkYqNqYF6lltTj327ZtkygH81MVI0413szAn5sz8bW5rkOSXOX5I0 pXe5UtHJc1Wa00ltLo8uJVP5LGaZjLpR3GayD2p9YG41TxNlaC4UVUlLHBu4NmgI/XzH a0Y9fDK2pCJWB1BWTUiFmm8IFp4GHUMX8dmcyr4PeyH1pg0QXbJOT1KEnoIgq4PHOBIH LRNw== 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=PwM2bOqU7aXMNaHDMLaVbRDxjZE33v838lGFsqK/S70=; b=PGipFA+aTVFwRIVgiFQ4AvFZMdEFordV8/NB9QwBu+DfGjqBfv+JQtbeeO5bK9AmWF iREGAwv1sl28QX6H7uRmV7nBed34KO2JGrGaFEzdVQ9vQH4Y2NBJWbohFtLdWu9KeWMB KuikmK+vRgfGt4WdF4Ix1SiuElqV7otTVTps9lCTUJxQTeVZyU1XT8GWjA9y/bxCxTez qizzeiaNex0eEcqdmSuPW6k8Waequ6XLHv7+q7jUKCdM9dIP9bvmyZM5hzN0bsC/mg4Q LBIN0XEizOBBR5eMeEDmonrcNM1UWBtywaOmRi2Ovt/q0k2Wlyj+IFpmLpcSSErPgcS1 /T1A== X-Gm-Message-State: AOAM532NfGjBL98hyK30c62631JpF5ymGd9eauIncqnykxBbre28sRky l7Rw1cHXYKjEkYbF8OGyllfLaGmoGMpmr5OM X-Google-Smtp-Source: ABdhPJyabFpr0But2qPI1qRYtyNDKM8y2mExyaZLHQD0IW9NCss6Ybjn7FVycYYBZ/IeHAdH9w8mpA== X-Received: by 2002:aca:498a:: with SMTP id w132mr4284206oia.66.1616525025614; Tue, 23 Mar 2021 11:43:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 02/10] target/ppc: Disconnect hflags from MSR Date: Tue, 23 Mar 2021 12:43:32 -0600 Message-Id: <20210323184340.619757-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::229; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x229.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: Ivan Warren , qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Copying flags directly from msr has drawbacks: (1) msr bits mean different things per cpu, (2) msr has 64 bits on 64 cpus while tb->flags has only 32 bits. Create a enum to define these bits. Document the origin of each bit and validate those bits that must match MSR. This fixes the truncation of env->hflags to tb->flags, because we no longer have hflags bits set above bit 31. Most of the code in ppc_tr_init_disas_context is moved over to hreg_compute_hflags. Some of it is simple extractions from msr, some requires examining other cpu flags. Anything that is moved becomes a simple extract from hflags in ppc_tr_init_disas_context. Several existing bugs are left in ppc_tr_init_disas_context, where additional changes are required -- to be addressed in future patches. Remove a broken #if 0 block. Reported-by: Ivan Warren Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 25 ++++++++++++++++ target/ppc/helper_regs.c | 65 +++++++++++++++++++++++++++++++++------- target/ppc/translate.c | 55 ++++++++++------------------------ 3 files changed, 95 insertions(+), 50 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index fd13489dce..fe6c3f815d 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -585,6 +585,31 @@ enum { POWERPC_FLAG_HID0_LE =3D 0x00400000, }; =20 +/* + * Bits for env->hflags. + * + * Most of these bits overlap with corresponding bits in MSR, + * but some come from other sources. Those that do come from + * the MSR are validated in hreg_compute_hflags. + */ +enum { + HFLAGS_LE =3D 0, /* MSR_LE -- comes from elsewhere on 601 */ + HFLAGS_HV =3D 1, /* computed from MSR_HV and other state */ + HFLAGS_64 =3D 2, /* computed from MSR_CE and MSR_SF */ + HFLAGS_DR =3D 4, /* MSR_DR */ + HFLAGS_IR =3D 5, /* MSR_IR */ + HFLAGS_SPE =3D 6, /* from MSR_SPE if cpu has SPE; avoid overlap w/ MS= R_VR */ + HFLAGS_VSX =3D 7, /* from MSR_VSX if cpu has VSX; avoid overlap w/ MS= R_AP */ + HFLAGS_TM =3D 8, /* computed from MSR_TM */ + HFLAGS_BE =3D 9, /* MSR_BE -- from elsewhere on embedded ppc */ + HFLAGS_SE =3D 10, /* MSR_SE -- from elsewhere on embedded ppc */ + HFLAGS_FP =3D 13, /* MSR_FP */ + HFLAGS_PR =3D 14, /* MSR_PR */ + HFLAGS_SA =3D 22, /* MSR_SA */ + HFLAGS_AP =3D 23, /* MSR_AP */ + HFLAGS_VR =3D 25, /* MSR_VR if cpu has VRE */ +}; + /*************************************************************************= ****/ /* Floating point status and control register = */ #define FPSCR_DRN2 34 /* Decimal Floating-Point rounding control = */ diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index a87e354ca2..df9673b90f 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -18,6 +18,7 @@ */ =20 #include "qemu/osdep.h" +#include "cpu.h" #include "qemu/main-loop.h" #include "exec/exec-all.h" #include "sysemu/kvm.h" @@ -87,24 +88,66 @@ void hreg_compute_mem_idx(CPUPPCState *env) =20 void hreg_compute_hflags(CPUPPCState *env) { - target_ulong hflags_mask; + target_ulong msr =3D env->msr; + uint32_t ppc_flags =3D env->flags; + uint32_t hflags =3D 0; + uint32_t msr_mask; =20 - /* We 'forget' FE0 & FE1: we'll never generate imprecise exceptions */ - hflags_mask =3D (1 << MSR_VR) | (1 << MSR_AP) | (1 << MSR_SA) | - (1 << MSR_PR) | (1 << MSR_FP) | (1 << MSR_SE) | (1 << MSR_BE) | - (1 << MSR_LE) | (1 << MSR_VSX) | (1 << MSR_IR) | (1 << MSR_DR); - hflags_mask |=3D (1ULL << MSR_CM) | (1ULL << MSR_SF) | MSR_HVB; - hreg_compute_mem_idx(env); - env->hflags =3D env->msr & hflags_mask; + /* Some bits come straight across from MSR. */ + QEMU_BUILD_BUG_ON(MSR_LE !=3D HFLAGS_LE); + QEMU_BUILD_BUG_ON(MSR_PR !=3D HFLAGS_PR); + QEMU_BUILD_BUG_ON(MSR_DR !=3D HFLAGS_DR); + QEMU_BUILD_BUG_ON(MSR_IR !=3D HFLAGS_IR); + QEMU_BUILD_BUG_ON(MSR_FP !=3D HFLAGS_FP); + QEMU_BUILD_BUG_ON(MSR_SA !=3D HFLAGS_SA); + QEMU_BUILD_BUG_ON(MSR_AP !=3D HFLAGS_AP); + msr_mask =3D ((1 << MSR_LE) | (1 << MSR_PR) | + (1 << MSR_DR) | (1 << MSR_IR) | + (1 << MSR_FP) | (1 << MSR_SA) | (1 << MSR_AP)); =20 - if (env->flags & POWERPC_FLAG_HID0_LE) { + if (ppc_flags & POWERPC_FLAG_HID0_LE) { /* * Note that MSR_LE is not set in env->msr_mask for this cpu, - * and so will never be set in msr or hflags at this point. + * and so will never be set in msr. */ uint32_t le =3D extract32(env->spr[SPR_HID0], 3, 1); - env->hflags |=3D le << MSR_LE; + hflags |=3D le << MSR_LE; } + + if (ppc_flags & POWERPC_FLAG_BE) { + QEMU_BUILD_BUG_ON(MSR_BE !=3D HFLAGS_BE); + msr_mask |=3D 1 << MSR_BE; + } + if (ppc_flags & POWERPC_FLAG_SE) { + QEMU_BUILD_BUG_ON(MSR_SE !=3D HFLAGS_SE); + msr_mask |=3D 1 << MSR_SE; + } + + if (msr_is_64bit(env, msr)) { + hflags |=3D 1 << HFLAGS_64; + } + if ((ppc_flags & POWERPC_FLAG_SPE) && (msr & (1 << MSR_SPE))) { + hflags |=3D 1 << HFLAGS_SPE; + } + if (ppc_flags & POWERPC_FLAG_VRE) { + QEMU_BUILD_BUG_ON(MSR_VR !=3D HFLAGS_VR); + msr_mask |=3D 1 << MSR_VR; + } + if ((ppc_flags & POWERPC_FLAG_VSX) && (msr & (1 << MSR_VSX))) { + hflags |=3D 1 << HFLAGS_VSX; + } + if ((ppc_flags & POWERPC_FLAG_TM) && (msr & (1ull << MSR_TM))) { + hflags |=3D 1 << HFLAGS_TM; + } + +#ifndef CONFIG_USER_ONLY + if (!env->has_hv_mode || (msr & (1ull << MSR_HV))) { + hflags |=3D 1 << HFLAGS_HV; + } +#endif + + env->hflags =3D hflags | (msr & msr_mask); + hreg_compute_mem_idx(env); } =20 void cpu_interrupt_exittb(CPUState *cs) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 0984ce637b..a9325a12e5 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7879,67 +7879,48 @@ static void ppc_tr_init_disas_context(DisasContextB= ase *dcbase, CPUState *cs) { DisasContext *ctx =3D container_of(dcbase, DisasContext, base); CPUPPCState *env =3D cs->env_ptr; + uint32_t hflags =3D ctx->base.tb->flags; int bound; =20 ctx->exception =3D POWERPC_EXCP_NONE; ctx->spr_cb =3D env->spr_cb; - ctx->pr =3D msr_pr; + ctx->pr =3D (hflags >> HFLAGS_PR) & 1; ctx->mem_idx =3D env->dmmu_idx; - ctx->dr =3D msr_dr; -#if !defined(CONFIG_USER_ONLY) - ctx->hv =3D msr_hv || !env->has_hv_mode; -#endif + ctx->dr =3D (hflags >> HFLAGS_DR) & 1; + ctx->hv =3D (hflags >> HFLAGS_HV) & 1; ctx->insns_flags =3D env->insns_flags; ctx->insns_flags2 =3D env->insns_flags2; ctx->access_type =3D -1; ctx->need_access_type =3D !mmu_is_64bit(env->mmu_model); - ctx->le_mode =3D !!(env->hflags & (1 << MSR_LE)); + ctx->le_mode =3D (hflags >> HFLAGS_LE) & 1; ctx->default_tcg_memop_mask =3D ctx->le_mode ? MO_LE : MO_BE; ctx->flags =3D env->flags; #if defined(TARGET_PPC64) - ctx->sf_mode =3D msr_is_64bit(env, env->msr); + ctx->sf_mode =3D (hflags >> HFLAGS_64) & 1; ctx->has_cfar =3D !!(env->flags & POWERPC_FLAG_CFAR); #endif ctx->lazy_tlb_flush =3D env->mmu_model =3D=3D POWERPC_MMU_32B || env->mmu_model =3D=3D POWERPC_MMU_601 || env->mmu_model & POWERPC_MMU_64; =20 - ctx->fpu_enabled =3D !!msr_fp; - if ((env->flags & POWERPC_FLAG_SPE) && msr_spe) { - ctx->spe_enabled =3D !!msr_spe; - } else { - ctx->spe_enabled =3D false; - } - if ((env->flags & POWERPC_FLAG_VRE) && msr_vr) { - ctx->altivec_enabled =3D !!msr_vr; - } else { - ctx->altivec_enabled =3D false; - } - if ((env->flags & POWERPC_FLAG_VSX) && msr_vsx) { - ctx->vsx_enabled =3D !!msr_vsx; - } else { - ctx->vsx_enabled =3D false; - } + ctx->fpu_enabled =3D (hflags >> HFLAGS_FP) & 1; + ctx->spe_enabled =3D (hflags >> HFLAGS_SPE) & 1; + ctx->altivec_enabled =3D (hflags >> HFLAGS_VR) & 1; + ctx->vsx_enabled =3D (hflags >> HFLAGS_VSX) & 1; if ((env->flags & POWERPC_FLAG_SCV) && (env->spr[SPR_FSCR] & (1ull << FSCR_SCV))) { ctx->scv_enabled =3D true; } else { ctx->scv_enabled =3D false; } -#if defined(TARGET_PPC64) - if ((env->flags & POWERPC_FLAG_TM) && msr_tm) { - ctx->tm_enabled =3D !!msr_tm; - } else { - ctx->tm_enabled =3D false; - } -#endif + ctx->tm_enabled =3D (hflags >> HFLAGS_TM) & 1; ctx->gtse =3D !!(env->spr[SPR_LPCR] & LPCR_GTSE); - if ((env->flags & POWERPC_FLAG_SE) && msr_se) { - ctx->singlestep_enabled =3D CPU_SINGLE_STEP; - } else { - ctx->singlestep_enabled =3D 0; + + ctx->singlestep_enabled =3D 0; + if ((hflags >> HFLAGS_SE) & 1) { + ctx->singlestep_enabled |=3D CPU_SINGLE_STEP; } - if ((env->flags & POWERPC_FLAG_BE) && msr_be) { + if ((hflags >> HFLAGS_BE) & 1) { ctx->singlestep_enabled |=3D CPU_BRANCH_STEP; } if ((env->flags & POWERPC_FLAG_DE) && msr_de) { @@ -7956,10 +7937,6 @@ static void ppc_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cs) if (unlikely(ctx->base.singlestep_enabled)) { ctx->singlestep_enabled |=3D GDBSTUB_SINGLE_STEP; } -#if defined(DO_SINGLE_STEP) && 0 - /* Single step trace mode */ - msr_se =3D 1; -#endif =20 bound =3D -(ctx->base.pc_first | TARGET_PAGE_MASK) / 4; ctx->base.max_insns =3D MIN(ctx->base.max_insns, bound); --=20 2.25.1 From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616525603; cv=none; d=zohomail.com; s=zohoarc; b=mgGVq/+9ZOS0+pikIxSAYMISQGpGJD6x87hi7OHfeRgLjAovAC5YzMVa+V1oBe4ixxL3rA/X5FnXS1K9aRcqj39//nAlQBZ5Cx8QWy5GZXbSx/6oGTzp8W1R4ZXSHpSTrg5A5txQ7x7EjGlq7COeaWafbkXyPKfNaB2Fa2U8gWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616525603; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=u6cU8I9ufF4e1/CeycrI3fKqm/ECMUPYXSwRs2bukw0=; b=LFS9aaStK5/HpLOg4JiZ55tkQgXp/eYFJVP0DsTvrvFw3lX+FzczCUgGkTVOH2d9eRx9Bd3LuDBmepH46FIXEGeqevW251bqtEK37w4DJ18XULU0Z7Dvu6Cmd+iy26j64WcpSJuoRZJJHBIjhoUPqK6GNgORp3BHdoaNDdKWDsY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616525603471724.3426808471102; Tue, 23 Mar 2021 11:53:23 -0700 (PDT) Received: from localhost ([::1]:44474 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOm9a-0007XR-9s for importer@patchew.org; Tue, 23 Mar 2021 14:53:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36482) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm0k-0008FX-Up for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:16 -0400 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]:39671) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0L-0003gY-7t for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:14 -0400 Received: by mail-ot1-x32e.google.com with SMTP id h6-20020a0568300346b02901b71a850ab4so20474179ote.6 for ; Tue, 23 Mar 2021 11:43:47 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=u6cU8I9ufF4e1/CeycrI3fKqm/ECMUPYXSwRs2bukw0=; b=SeJQ9DiJpojE/4x6mKBufVWvH8KSJEoMcUBUSQ6C2M4se7IfcBTlGiGbITPji1Ljcs k6WKptejnOBV9enK9NVPf6Ht0E8jyNLFyiRGETKFBDO+YOkw/e5Lw/G7mmA6m+SiOQ0Q kjPHs3c4R8UiWYqHWWCZ05gdvxotT5TXWOxqcp7VxCrXAlkJTsgGIeVTB27pHGV6fRYv /sxCC0brkpPuNUSBv6+PdpC2cYN95+F71djPVF80R/wNDol0yM9HlYs0z5Cve9LfMoYo B3niqeOVbOLD7XhJuROO9fO/vxzI/iNkoyE5knesUlHHBmTgCTgDkDvg3kUsOo2pA6r5 T19Q== 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=u6cU8I9ufF4e1/CeycrI3fKqm/ECMUPYXSwRs2bukw0=; b=V/yYRMMR31S+FPaJEQTS6MiTiFfib5SWBTR8xxI/6LSN6jdgxn7SRSizsRg/CjPYka hXysXddIUJdhJXAiF05iRiNhe9e9zfLDGzaPK0iaVuWFxDFo5e4QECiY7qfLRuqdTr3X GkSCR7NO4ps1ABC2ydWUXqFgbANM4IH5UbdEZNIiXOtfOqI6rwPEWDHMJUkwdgYWPU/O Ur6RK6jtAjysfMu7mRYBmoGVU+Td0WKqAvPa1TVTSkVPvCLOec4ObDQp3S1MG/VuLPKM m7qoLBxGPxRM4nSmXVHFFFW/VfsaFTGUqnb3aes9hy1TyYem3Q2u1hkU/GeR3M3RMzwH KxHA== X-Gm-Message-State: AOAM533/udhKDcoo2XWT3GwwvfCMaAHKQ1p32B0NN8jqILTkTuOII4Y+ 1YOL5vt5olazx37U4SO6PV90I1c1WueHMCqP X-Google-Smtp-Source: ABdhPJzl0jCSNnIdRuhdTFy9Qk+VEkPzFhs+24slBXt0PNaEYwvh/gd/eaZWuLZf1pMrHdxL5/QmGQ== X-Received: by 2002:a05:6830:3197:: with SMTP id p23mr5693893ots.3.1616525026914; Tue, 23 Mar 2021 11:43:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 03/10] target/ppc: Reduce env->hflags to uint32_t Date: Tue, 23 Mar 2021 12:43:33 -0600 Message-Id: <20210323184340.619757-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::32e; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) It will be stored in tb->flags, which is also uint32_t, so let's use the correct size. Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: David Gibson Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 4 ++-- target/ppc/misc_helper.c | 2 +- target/ppc/translate.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index fe6c3f815d..d5f362506a 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1129,8 +1129,8 @@ struct CPUPPCState { bool resume_as_sreset; #endif =20 - /* These resources are used only in QEMU core */ - target_ulong hflags; + /* These resources are used only in TCG */ + uint32_t hflags; target_ulong hflags_compat_nmsr; /* for migration compatibility */ int immu_idx; /* precomputed MMU index to speed up insn accesses */ int dmmu_idx; /* precomputed MMU index to speed up data accesses */ diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index 63e3147eb4..b04b4d7c6e 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -199,7 +199,7 @@ void helper_store_hid0_601(CPUPPCState *env, target_ulo= ng val) if ((val ^ hid0) & 0x00000008) { /* Change current endianness */ hreg_compute_hflags(env); - qemu_log("%s: set endianness to %c =3D> " TARGET_FMT_lx "\n", __fu= nc__, + qemu_log("%s: set endianness to %c =3D> %08x\n", __func__, val & 0x8 ? 'l' : 'b', env->hflags); } } diff --git a/target/ppc/translate.c b/target/ppc/translate.c index a9325a12e5..a85b890bb0 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7657,7 +7657,7 @@ void ppc_cpu_dump_state(CPUState *cs, FILE *f, int fl= ags) env->nip, env->lr, env->ctr, cpu_read_xer(env), cs->cpu_index); qemu_fprintf(f, "MSR " TARGET_FMT_lx " HID0 " TARGET_FMT_lx " HF " - TARGET_FMT_lx " iidx %d didx %d\n", + "%08x iidx %d didx %d\n", env->msr, env->spr[SPR_HID0], env->hflags, env->immu_idx, env->dmmu_idx); #if !defined(NO_TIMER_DUMP) --=20 2.25.1 From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616528093; cv=none; d=zohomail.com; s=zohoarc; b=ZEt6/0UqsBpSgG6rFxwaL+rQfwM48/R2VysuEW7tSoT46mz2OxOaHwOR4360ZRc+fJq4H5h364OpQEDCfKhND3mBsGTUjnn3+5kS0NpPEq/mWzuZulwk6Dofc+HQNhkkSoo08sjvz4O4G87+1b/urX/P9CQhqmbSR88w1JtT5+I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616528093; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7hjRKYvKwPhnZczNplHlGNdiwX+bsNrNu6SiB/+LyZA=; b=Y6LNtVcCof0ft1Y3yzf6bOqxK6HF1QyECrLI5PEeKK+KID/fHvmC8MH5Aj56vMV5V6FY7x2Ak3tYJ5y6Jd61LGd6Ti/oLKXxIrxSlsJlhvz9uutMCCGR7y9/Cgb2nQBCE6g+xibvvnFJv9ugzWH/aN/o+W1DmP5SRs8gJ+IJZ+Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616528093759720.9039237638317; Tue, 23 Mar 2021 12:34:53 -0700 (PDT) Received: from localhost ([::1]:57450 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOmnk-0001a4-Gl for importer@patchew.org; Tue, 23 Mar 2021 15:34:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36636) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm0x-0008MR-Hp for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:27 -0400 Received: from mail-oi1-x230.google.com ([2607:f8b0:4864:20::230]:38543) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0N-0003hH-3s for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:27 -0400 Received: by mail-oi1-x230.google.com with SMTP id f9so18099230oiw.5 for ; Tue, 23 Mar 2021 11:43:48 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7hjRKYvKwPhnZczNplHlGNdiwX+bsNrNu6SiB/+LyZA=; b=SQ+27xqYoHWPUGePhOitizEXdptaRcrdXHQgtC4NW9zjekptoDHGDF81yh0ntBfEG6 EMP2KScax0ugWNK1FwUDxaIiPrjEveOM0W6nxIhmyMcLBAyCdk8cG7PeiP+gYvsM8zz3 dQqKwVBIXCRCB8krnm70V4xRj3+NTy0SVi+gOPeImUCizWNF5i02wp0ehd2cvyolQgoo zM1v5dIbVyHq9qXwgyFE4a10Kgjrei35ihYJGb0R3EOvv14UQfU79N8PgiEu2PmN3oob yVbLiQAS5ETJEOUTDbOPns0z5TflCj3uPmUo6j5ZmuMwYBD2OYwjvLj0VEREQnTANLoa dWuw== 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=7hjRKYvKwPhnZczNplHlGNdiwX+bsNrNu6SiB/+LyZA=; b=FFygN3echDfi6l30ELVJApBS2FiFU7xLjxE7fExYap0Bz1IzQBQlafN/LhV6NB1IuP 0eCKfgNQY323nHe2++q9q6Jbg4/n+8rcbqKnT3cF/3HFTTyy6dLahWM6gKuZaf9cl5RB HnrA8Xed30dOw1ilrjXLbVqXXkYSjwoZ2WVoRQQlBmTsLKN1H+AfteDEHDrDJ9BoOcGB OTRUpNGKeHufMIzQ5RdmjfcTeKLfLiEjR4BWjLOLHLF7ZhBZrMq0WZUhE/Fh3CHgWTaw CRnOqVtZc2xqn63KcGcXiCJt3yVAUl5cQfT8Df5utVuy8JkQ/o1/QQwAEpWte6+F2rDy PA2w== X-Gm-Message-State: AOAM530TQzzBt+afaa8AHGR0ZT5brbcfG8pU2V5/8qHZ6KIn/OFu6ilU sy1XRpjIe/cJIaYs7sjnEzBqbrO4Z9pXr9iL X-Google-Smtp-Source: ABdhPJzu7vBnI7kjkVVd1shqGGiFs0FupDxDwwWwuHgeMGJcj+U9bnMmPSDEwB7prpZ+AKWVtofEcQ== X-Received: by 2002:a05:6808:b09:: with SMTP id s9mr4369537oij.36.1616525028288; Tue, 23 Mar 2021 11:43:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 04/10] target/ppc: Put dbcr0 single-step bits into hflags Date: Tue, 23 Mar 2021 12:43:34 -0600 Message-Id: <20210323184340.619757-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::230; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x230.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Because these bits were not in hflags, the code generated for single-stepping on BookE was essentially random. Recompute hflags when storing to dbcr0. Reviewed-by: David Gibson Signed-off-by: Richard Henderson --- target/ppc/helper_regs.c | 24 +++++++++++++++++------- target/ppc/misc_helper.c | 3 +++ target/ppc/translate.c | 11 ----------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index df9673b90f..e345966b6b 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -114,13 +114,23 @@ void hreg_compute_hflags(CPUPPCState *env) hflags |=3D le << MSR_LE; } =20 - if (ppc_flags & POWERPC_FLAG_BE) { - QEMU_BUILD_BUG_ON(MSR_BE !=3D HFLAGS_BE); - msr_mask |=3D 1 << MSR_BE; - } - if (ppc_flags & POWERPC_FLAG_SE) { - QEMU_BUILD_BUG_ON(MSR_SE !=3D HFLAGS_SE); - msr_mask |=3D 1 << MSR_SE; + if (ppc_flags & POWERPC_FLAG_DE) { + target_ulong dbcr0 =3D env->spr[SPR_BOOKE_DBCR0]; + if (dbcr0 & DBCR0_ICMP) { + hflags |=3D 1 << HFLAGS_SE; + } + if (dbcr0 & DBCR0_BRT) { + hflags |=3D 1 << HFLAGS_BE; + } + } else { + if (ppc_flags & POWERPC_FLAG_BE) { + QEMU_BUILD_BUG_ON(MSR_BE !=3D HFLAGS_BE); + msr_mask |=3D 1 << MSR_BE; + } + if (ppc_flags & POWERPC_FLAG_SE) { + QEMU_BUILD_BUG_ON(MSR_SE !=3D HFLAGS_SE); + msr_mask |=3D 1 << MSR_SE; + } } =20 if (msr_is_64bit(env, msr)) { diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index b04b4d7c6e..002958be26 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -215,6 +215,9 @@ void helper_store_403_pbr(CPUPPCState *env, uint32_t nu= m, target_ulong value) =20 void helper_store_40x_dbcr0(CPUPPCState *env, target_ulong val) { + /* Bits 26 & 27 affect single-stepping. */ + hreg_compute_hflags(env); + /* Bits 28 & 29 affect reset or shutdown. */ store_40x_dbcr0(env, val); } =20 diff --git a/target/ppc/translate.c b/target/ppc/translate.c index a85b890bb0..7912495f28 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7923,17 +7923,6 @@ static void ppc_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cs) if ((hflags >> HFLAGS_BE) & 1) { ctx->singlestep_enabled |=3D CPU_BRANCH_STEP; } - if ((env->flags & POWERPC_FLAG_DE) && msr_de) { - ctx->singlestep_enabled =3D 0; - target_ulong dbcr0 =3D env->spr[SPR_BOOKE_DBCR0]; - if (dbcr0 & DBCR0_ICMP) { - ctx->singlestep_enabled |=3D CPU_SINGLE_STEP; - } - if (dbcr0 & DBCR0_BRT) { - ctx->singlestep_enabled |=3D CPU_BRANCH_STEP; - } - - } if (unlikely(ctx->base.singlestep_enabled)) { ctx->singlestep_enabled |=3D GDBSTUB_SINGLE_STEP; } --=20 2.25.1 From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616527548; cv=none; d=zohomail.com; s=zohoarc; b=f8HI/Vnfze2VFBH9Dh/zFqSndIxmA0DqGG4J0o0+lKEK/hIT/ZMNsQDz0itpCqyiBNdk+8Okk7ktCVPqrjRDAjlrorr6Hc+K4y0kze5m6xvR5d3xJ+JkBNDau8pq58fZIwMe9uRAqC4SM/NMIea9RbXhfY0ThACKrA/jSXZpRD0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616527548; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nDEzeJHZqdUXe/dXYq7qR5PEy35VBqTIPDXHrdEdgcc=; b=QQ055iSdVY63MZ9sqMEatC/Y96udjaSv7QkEy2e+XJJqcJ06+0wY9Ks/zgvKAcjHXjN/od+iWYNUrlupFPYqbP+Q4uGk5u1L8BIjjEzIKcr05vZroGRlnd7SPp/mCxtfk/rLyxYLZ2Gd8G7tH5OhNjuUAzHsygbs2Gj4fiHW7rI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616527548788869.5800399337577; Tue, 23 Mar 2021 12:25:48 -0700 (PDT) Received: from localhost ([::1]:37900 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOmex-00040o-IJ for importer@patchew.org; Tue, 23 Mar 2021 15:25:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36660) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm0y-0008O0-5j for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:28 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]:35502) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0P-0003hr-1v for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:27 -0400 Received: by mail-ot1-x334.google.com with SMTP id v24-20020a9d69d80000b02901b9aec33371so20481260oto.2 for ; Tue, 23 Mar 2021 11:43:50 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nDEzeJHZqdUXe/dXYq7qR5PEy35VBqTIPDXHrdEdgcc=; b=s/lmuF8TUfFrYmchVU+a8BF+Df99LWU72xmH0sNvilnp9hMxTpPQTwrnof1rgrCh1M pX2fRGwsXindS7yvVjuD6kn35a27UjT9Xg4JxaJACfhZI6GIBPLuA0VtKOVuSAIAKxZI 1ATGsnalhNW2MIcmtAPq72WjBn9AcsSb7OM8ZU4o8rN2uCP6N7128yFCqFp8o7sQ4bdQ n/zV/M7DaeWHNRr2Co4KoGqV7j2wPse9S8kCGBfaX5ESORyFm6TTFe9d/1vFHS7wQYrJ 52+a9O0/dmXqkaXTXLWMYukt8OFuigkrd8+dCW0v4T82HM31fAWCVQ/3jF2PFSxUJQ/a 8eLA== 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=nDEzeJHZqdUXe/dXYq7qR5PEy35VBqTIPDXHrdEdgcc=; b=D1cW7T3F1w+fkxYm/Ve0SD2/QDOj35qJ127DKvtAWaw+s+g7DtJCicsQuBAHchQdwv By4o2Y9krOmT0meqbbElsmJqcxxAzDUWVCbm4XbwS0UWsX+Vn3HBf3oLJj9Qtw+sIP5V +R27sAR4RtOHbiYsWeMWGqsOkGCRy+bbH5YKPZDLljhadBGfZ8vkIzWxV25+l7EDUlE1 dKetqqUK91VdPeX/wPsZMHPqR+57BTAfJsabZMkbRAcAeVplDqTgwCIbRKJeUlp+7lgv ljBNf4qGKz3igt0dT0g8ZvmYrwSY7kXExgZAra6s+EH/0Sf/iZ4NgemPb+YLnY3eK7mm aGvA== X-Gm-Message-State: AOAM532IFbzDiE1XP13cf4bU9LqemzbJfc/sh8u2fjaLPGlS7P5TQ5Rz x6HHiqr/FfEWUh1oifZMu8GBWkU+FD5v7coW X-Google-Smtp-Source: ABdhPJw6hh7XAN/Fkc6RegnHy9BCk+RwVk7n/v6oTPYOctuSaxOJtFGLRDNal/h1D7wwqedmd0rOsA== X-Received: by 2002:a05:6830:158d:: with SMTP id i13mr5721403otr.8.1616525029547; Tue, 23 Mar 2021 11:43:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 05/10] target/ppc: Create helper_scv Date: Tue, 23 Mar 2021 12:43:35 -0600 Message-Id: <20210323184340.619757-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Perform the test against FSCR_SCV at runtime, in the helper. This means we can remove the incorrect set against SCV in ppc_tr_init_disas_context and do not need to add an HFLAGS bit. Signed-off-by: Richard Henderson --- target/ppc/helper.h | 1 + target/ppc/excp_helper.c | 9 +++++++++ target/ppc/translate.c | 20 +++++++------------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 6a4dccf70c..513066d54d 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -13,6 +13,7 @@ DEF_HELPER_1(rfci, void, env) DEF_HELPER_1(rfdi, void, env) DEF_HELPER_1(rfmci, void, env) #if defined(TARGET_PPC64) +DEF_HELPER_2(scv, noreturn, env, i32) DEF_HELPER_2(pminsn, void, env, i32) DEF_HELPER_1(rfid, void, env) DEF_HELPER_1(rfscv, void, env) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 85de7e6c90..5c95e0c103 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1130,6 +1130,15 @@ void helper_store_msr(CPUPPCState *env, target_ulong= val) } =20 #if defined(TARGET_PPC64) +void helper_scv(CPUPPCState *env, uint32_t lev) +{ + if (env->spr[SPR_FSCR] & (1ull << FSCR_SCV)) { + raise_exception_err(env, POWERPC_EXCP_SYSCALL_VECTORED, lev); + } else { + raise_exception_err(env, POWERPC_EXCP_FU, FSCR_IC_SCV); + } +} + void helper_pminsn(CPUPPCState *env, powerpc_pm_insn_t insn) { CPUState *cs; diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 7912495f28..d48c554290 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -173,7 +173,6 @@ struct DisasContext { bool vsx_enabled; bool spe_enabled; bool tm_enabled; - bool scv_enabled; bool gtse; ppc_spr_t *spr_cb; /* Needed to check rights for mfspr/mtspr */ int singlestep_enabled; @@ -4081,15 +4080,16 @@ static void gen_sc(DisasContext *ctx) #if !defined(CONFIG_USER_ONLY) static void gen_scv(DisasContext *ctx) { - uint32_t lev; + uint32_t lev =3D (ctx->opcode >> 5) & 0x7F; =20 - if (unlikely(!ctx->scv_enabled)) { - gen_exception_err(ctx, POWERPC_EXCP_FU, FSCR_IC_SCV); - return; + /* Set the PC back to the faulting instruction. */ + if (ctx->exception =3D=3D POWERPC_EXCP_NONE) { + gen_update_nip(ctx, ctx->base.pc_next - 4); } + gen_helper_scv(cpu_env, tcg_constant_i32(lev)); =20 - lev =3D (ctx->opcode >> 5) & 0x7F; - gen_exception_err(ctx, POWERPC_SYSCALL_VECTORED, lev); + /* This need not be exact, just not POWERPC_EXCP_NONE */ + ctx->exception =3D POWERPC_SYSCALL_VECTORED; } #endif #endif @@ -7907,12 +7907,6 @@ static void ppc_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cs) ctx->spe_enabled =3D (hflags >> HFLAGS_SPE) & 1; ctx->altivec_enabled =3D (hflags >> HFLAGS_VR) & 1; ctx->vsx_enabled =3D (hflags >> HFLAGS_VSX) & 1; - if ((env->flags & POWERPC_FLAG_SCV) - && (env->spr[SPR_FSCR] & (1ull << FSCR_SCV))) { - ctx->scv_enabled =3D true; - } else { - ctx->scv_enabled =3D false; - } ctx->tm_enabled =3D (hflags >> HFLAGS_TM) & 1; ctx->gtse =3D !!(env->spr[SPR_LPCR] & LPCR_GTSE); =20 --=20 2.25.1 From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616525811; cv=none; d=zohomail.com; s=zohoarc; b=h5uAjozM5l8rk0Mc0JzuptNijlxUTZyCDRQBCLx8RbhXJAYp/q9qKXLNTkQdbzsxyuw5UTeCoJ6EYsS5MTA3u3oUYvvaEjXOd3Wgm9F3gIf4Ao7nlYdGEHPpGx0ggfUicRnPyK0mtT1iSr56rX/Jc58V7JkGfnTNb/wm4d5c3pE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616525811; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0y0jim2Psup2n6cJG/ney9BoSyKMVklHs3Io6+sGx/4=; b=SAkI7DLhwl9J0gQVKULQy9iesOFelj/79uCTsxqXqGWVRvhdMzn7ke3eZMLEWWPo3IPwrAtcSsTaL1s5MHauMrBm5oLtq4PCfgolg00/f6S7PU0NrZbzbja1xm9KfPNf6cwYMmrybO2Ln0fNuhllhSRNdhurV2jKSbRFgT1BYcA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161652581193946.59866206089555; Tue, 23 Mar 2021 11:56:51 -0700 (PDT) Received: from localhost ([::1]:52856 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOmCv-0003pz-0x for importer@patchew.org; Tue, 23 Mar 2021 14:56:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36590) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm0u-0008Ix-M3 for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:26 -0400 Received: from mail-oo1-xc34.google.com ([2607:f8b0:4864:20::c34]:45747) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0P-0003i7-Aq for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:24 -0400 Received: by mail-oo1-xc34.google.com with SMTP id n6-20020a4ac7060000b02901b50acc169fso5176845ooq.12 for ; Tue, 23 Mar 2021 11:43:51 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0y0jim2Psup2n6cJG/ney9BoSyKMVklHs3Io6+sGx/4=; b=sAfD/7jSD6Ksf0s8u8XkvBnDdPYJ+815xYmIH1Z29UZDcs3nM91npwhsOnHPGHnMHj RRP9wW5nBbbxxWc6+fy8gOHffOvqo/VNptFuSx8ZsAhZP8i1o5WLhRvbfaveM43/CtvL 1+gQfnfKz8fnFYb5xtNF+K1kdNeEuFtGpR7irw+7G5O34h1wO5mVgbjl85//v8X+sWio HDe5qAPt4vQClPUAmVhnnASrEuZkjcvhK/nlg+nZEh0LT4xD14axp8ZDpMNeuDD2Tlws 6x2ap1nNTQtPcjw67nbtUkj1as0EiLSyl85eCKntb59cxD1ugXUviePdxWdRWPQxFLvl GBIw== 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=0y0jim2Psup2n6cJG/ney9BoSyKMVklHs3Io6+sGx/4=; b=OZT957klICv6UVFwV6NVOkKglszhsVx+DApchZj2/DgvHNF1JXZifcQc/Uniu9zq6r iYm/4EEQDTMCrW9b+jgtIQNVw1gOT9H6w8yPA5AaUjMb2jnYrO9svK4WlIRtrnZncwI5 626H47vW8vKN2OVeLjO1wHAxiPRc5Ks02kBic8ObzE6NKp7XSVhSJdgcpsPjHjcxJbW7 GG3RbEVnH3BA7KZlW6o9KaQ+jv5hqlNcXYbCNyKWeNktm51049AA0vDdwe7On5sGW9vo XCEDUTaZDzHNFmYI61jDwu3vEWVdXdKHuDl+aK875O2FpHLbUJ+n7+YXPUhngnuns3m5 y9Xg== X-Gm-Message-State: AOAM530ukJBO6v2YSErH8FLceiwp9g8agx9VMEd4xe4/RlsfWx/lYh8F oAo/7C67+cUfY2E0D/y8PPzKx/LvGxxiABQL X-Google-Smtp-Source: ABdhPJytEu/NHRKWK/tjdkWL6aSpQwRNNnsD1fPYSDiD5YsTjHpn5hxKUTgkXVJnpyFa6fRCpdTiyw== X-Received: by 2002:a4a:c706:: with SMTP id n6mr4918636ooq.19.1616525030973; Tue, 23 Mar 2021 11:43:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 06/10] target/ppc: Put LPCR[GTSE] in hflags Date: Tue, 23 Mar 2021 12:43:36 -0600 Message-Id: <20210323184340.619757-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::c34; envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc34.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: qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Because this bit was not in hflags, the privilege check for tlb instructions was essentially random. Recompute hflags when storing to LPCR. Reviewed-by: David Gibson Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 1 + target/ppc/helper_regs.c | 3 +++ target/ppc/mmu-hash64.c | 3 +++ target/ppc/translate.c | 2 +- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index d5f362506a..3c28ddb331 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -596,6 +596,7 @@ enum { HFLAGS_LE =3D 0, /* MSR_LE -- comes from elsewhere on 601 */ HFLAGS_HV =3D 1, /* computed from MSR_HV and other state */ HFLAGS_64 =3D 2, /* computed from MSR_CE and MSR_SF */ + HFLAGS_GTSE =3D 3, /* computed from SPR_LPCR[GTSE] */ HFLAGS_DR =3D 4, /* MSR_DR */ HFLAGS_IR =3D 5, /* MSR_IR */ HFLAGS_SPE =3D 6, /* from MSR_SPE if cpu has SPE; avoid overlap w/ MS= R_VR */ diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index e345966b6b..f85bb14d1d 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -149,6 +149,9 @@ void hreg_compute_hflags(CPUPPCState *env) if ((ppc_flags & POWERPC_FLAG_TM) && (msr & (1ull << MSR_TM))) { hflags |=3D 1 << HFLAGS_TM; } + if (env->spr[SPR_LPCR] & LPCR_GTSE) { + hflags |=3D 1 << HFLAGS_GTSE; + } =20 #ifndef CONFIG_USER_ONLY if (!env->has_hv_mode || (msr & (1ull << MSR_HV))) { diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c index 0fabc10302..d517a99832 100644 --- a/target/ppc/mmu-hash64.c +++ b/target/ppc/mmu-hash64.c @@ -30,6 +30,7 @@ #include "exec/log.h" #include "hw/hw.h" #include "mmu-book3s-v3.h" +#include "helper_regs.h" =20 /* #define DEBUG_SLB */ =20 @@ -1125,6 +1126,8 @@ void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val) CPUPPCState *env =3D &cpu->env; =20 env->spr[SPR_LPCR] =3D val & pcc->lpcr_mask; + /* The gtse bit affects hflags */ + hreg_compute_hflags(env); } =20 void helper_store_lpcr(CPUPPCState *env, target_ulong val) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index d48c554290..5e629291d3 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7908,7 +7908,7 @@ static void ppc_tr_init_disas_context(DisasContextBas= e *dcbase, CPUState *cs) ctx->altivec_enabled =3D (hflags >> HFLAGS_VR) & 1; ctx->vsx_enabled =3D (hflags >> HFLAGS_VSX) & 1; ctx->tm_enabled =3D (hflags >> HFLAGS_TM) & 1; - ctx->gtse =3D !!(env->spr[SPR_LPCR] & LPCR_GTSE); + ctx->gtse =3D (hflags >> HFLAGS_GTSE) & 1; =20 ctx->singlestep_enabled =3D 0; if ((hflags >> HFLAGS_SE) & 1) { --=20 2.25.1 From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616528305; cv=none; d=zohomail.com; s=zohoarc; b=GHApxd96JTqrnIl0MsjI66PD6I7hfFlumqwt5yQhclUx8D6SBSfHBmlDL3VHwC0SG3um2U8SpABOznY/T2cSPpd0SHxDny8OOBkR5DayxIjEB5WAGtq3tsWRy0yUcvmolIr8i0OjgR/3q5VXSvr9eWMLmb7unWdN6nKaf++cbbo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616528305; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3FXi8snd//6e3eo194okSdd2MkYemigNkupkO7nrNNk=; b=GlFgCgCe8e7wlyMBJixP7cFAgtmM6E4fUY59jLywo/AvPfzAzvIXjuOHeRjnfz1JeOd0JCEtBzy6QxZjTRUR/XOTCOLjyS2avnCyIrvQSOviOGIFFtRyMxdoyoCL/Th9gSayPm3x8YqWhgzpFrHgMIO4geG81Q30tIMRRjtW2fE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616528305548893.5666131520959; Tue, 23 Mar 2021 12:38:25 -0700 (PDT) Received: from localhost ([::1]:35600 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOmrA-0005YT-7t for importer@patchew.org; Tue, 23 Mar 2021 15:38:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36678) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm0y-0008PB-HZ for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:28 -0400 Received: from mail-oo1-xc36.google.com ([2607:f8b0:4864:20::c36]:45749) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0V-0003iv-0E for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:28 -0400 Received: by mail-oo1-xc36.google.com with SMTP id n6-20020a4ac7060000b02901b50acc169fso5176859ooq.12 for ; Tue, 23 Mar 2021 11:43:53 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3FXi8snd//6e3eo194okSdd2MkYemigNkupkO7nrNNk=; b=yCF3E+0Dv0xrsHmfPUUMtN8UHDFFGLfLjoKwiA02xWM9tTre+sb3pcSXwCGwSTziG8 hX3nwXzOqQ5GoThNfaR4WGqErsj2c8wOBbQI6DBERIhcAP3fMUuQ4fX/Pi1tDgxRzzPT PhlD+FGWUiwQ6IKsZObmkO1Jp+TkOtlPCBpQLohNe6qnBiu9uFRQCYrvNMW52xb86Qy8 12eJ7Dlglm3yTYl2COnzK89xYhcDmZAwT6wzUWjN5UoMsxdpa1VOVdUoYM1ARPdD3D5i b/3wpFbNTlTqEMARy/lxHQpbHTgvTwOuJSqVrGlqdBzm6lMNxm8GrSQUNatHLQJ4x2aZ bsXA== 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=3FXi8snd//6e3eo194okSdd2MkYemigNkupkO7nrNNk=; b=H5jC79IrqFsSj0LtQwOgKTbMN5Tua8IhpJKi0xomX3lrYl7YJGL9Mql0OoI7KBDOdv 21jln8XZCYvXdvwQWQiERrK1PtGM2lQNuz+C+nICRgYdhMtVa5N5/Qvhz0scdohuT8e8 aj1NzjUKpKrP37Dh36KvjhqAuZshEC+NN/u/zaaoZ5kBaDjWqkn+l16ASMo8yvx5+Frl wDpqt8NR5qPql3P38GA+T/wEa3jpKbXwWFIhoz8z1gxcAFf4PvjsuBoH08szN6uGgJTS 1Cvjc32dZAu/heLndq7fvZCHMLv1l0Zg5L/QeEt7vFJBVDvxirc9GmDXA0m58JzyKLOy B+dA== X-Gm-Message-State: AOAM531f4MD45EBo3TAbs0CCZ9SMhjYUGAqgp7JJ1i5stw7C4vTGx3Lu X25vbrf+NI8WNMPDywDNzWL3ksdl89u3f/UL X-Google-Smtp-Source: ABdhPJxZOTGAWNQn05C5gp6R99azuMcOHCfkeBayZcX2emT0Z5DE3vVTBxbK7zOWGF2X5CecfFXa3g== X-Received: by 2002:a4a:4958:: with SMTP id z85mr4900641ooa.3.1616525032684; Tue, 23 Mar 2021 11:43:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 07/10] target/ppc: Remove MSR_SA and MSR_AP from hflags Date: Tue, 23 Mar 2021 12:43:37 -0600 Message-Id: <20210323184340.619757-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::c36; envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc36.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: qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Nothing within the translator -- or anywhere else for that matter -- checks MSR_SA or MSR_AP on the 602. This may be a mistake. However, for the moment, we need not record these bits in hflags. This allows us to simplify HFLAGS_VSX computation by moving it to overlap with MSR_VSX. Reviewed-by: David Gibson Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 4 +--- target/ppc/helper_regs.c | 10 ++++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 3c28ddb331..2f72f83ee3 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -600,14 +600,12 @@ enum { HFLAGS_DR =3D 4, /* MSR_DR */ HFLAGS_IR =3D 5, /* MSR_IR */ HFLAGS_SPE =3D 6, /* from MSR_SPE if cpu has SPE; avoid overlap w/ MS= R_VR */ - HFLAGS_VSX =3D 7, /* from MSR_VSX if cpu has VSX; avoid overlap w/ MS= R_AP */ HFLAGS_TM =3D 8, /* computed from MSR_TM */ HFLAGS_BE =3D 9, /* MSR_BE -- from elsewhere on embedded ppc */ HFLAGS_SE =3D 10, /* MSR_SE -- from elsewhere on embedded ppc */ HFLAGS_FP =3D 13, /* MSR_FP */ HFLAGS_PR =3D 14, /* MSR_PR */ - HFLAGS_SA =3D 22, /* MSR_SA */ - HFLAGS_AP =3D 23, /* MSR_AP */ + HFLAGS_VSX =3D 23, /* MSR_VSX if cpu has VSX */ HFLAGS_VR =3D 25, /* MSR_VR if cpu has VRE */ }; =20 diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index f85bb14d1d..dd3cd770a3 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -99,11 +99,8 @@ void hreg_compute_hflags(CPUPPCState *env) QEMU_BUILD_BUG_ON(MSR_DR !=3D HFLAGS_DR); QEMU_BUILD_BUG_ON(MSR_IR !=3D HFLAGS_IR); QEMU_BUILD_BUG_ON(MSR_FP !=3D HFLAGS_FP); - QEMU_BUILD_BUG_ON(MSR_SA !=3D HFLAGS_SA); - QEMU_BUILD_BUG_ON(MSR_AP !=3D HFLAGS_AP); msr_mask =3D ((1 << MSR_LE) | (1 << MSR_PR) | - (1 << MSR_DR) | (1 << MSR_IR) | - (1 << MSR_FP) | (1 << MSR_SA) | (1 << MSR_AP)); + (1 << MSR_DR) | (1 << MSR_IR) | (1 << MSR_FP)); =20 if (ppc_flags & POWERPC_FLAG_HID0_LE) { /* @@ -143,8 +140,9 @@ void hreg_compute_hflags(CPUPPCState *env) QEMU_BUILD_BUG_ON(MSR_VR !=3D HFLAGS_VR); msr_mask |=3D 1 << MSR_VR; } - if ((ppc_flags & POWERPC_FLAG_VSX) && (msr & (1 << MSR_VSX))) { - hflags |=3D 1 << HFLAGS_VSX; + if (ppc_flags & POWERPC_FLAG_VSX) { + QEMU_BUILD_BUG_ON(MSR_VSX !=3D HFLAGS_VSX); + msr_mask |=3D 1 << MSR_VSX; } if ((ppc_flags & POWERPC_FLAG_TM) && (msr & (1ull << MSR_TM))) { hflags |=3D 1 << HFLAGS_TM; --=20 2.25.1 From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616527737; cv=none; d=zohomail.com; s=zohoarc; b=P1tEm9ZDistPB4M19tewhqE8te+hkSTcHKQa5j+R4rB3Ho/84i2L2I7SHlkZRyRLQFMouCNABRQ9Un9BPdSAguahfobbhExargN1Ow0KBVtD/CacCxEuFhqlH8zPOq6orf/KMq6UjXbbstjAQlgB9HaPwdKeDK4414vY0sfMsjI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616527737; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=yR6a5C+RN4aXpJjTSKMGXA72kDkxG0ld+xL4kg1fU/Y=; b=W9098Ny9bqDVQpUN7x2yePGPsXZ5N3yU7KrXg3dYgh5LMNU2BtlXm6aVXyW7Ki6hEndyGKHm8vHZyNDH47nz6U3zc2MDCiKMdbmTF1KZiIMekwT51jLY3qsxhMKvpjd/XHtCzgYsRtbcs8Z1wPkuss+qIMor5pCvjCeflbcfZUM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616527737647500.7629249328495; Tue, 23 Mar 2021 12:28:57 -0700 (PDT) Received: from localhost ([::1]:44210 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOmi0-0000n8-2A for importer@patchew.org; Tue, 23 Mar 2021 15:28:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36724) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm10-0008SU-64 for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:30 -0400 Received: from mail-oi1-x22b.google.com ([2607:f8b0:4864:20::22b]:39729) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0V-0003jB-0A for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:29 -0400 Received: by mail-oi1-x22b.google.com with SMTP id i81so16608858oif.6 for ; Tue, 23 Mar 2021 11:43:54 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yR6a5C+RN4aXpJjTSKMGXA72kDkxG0ld+xL4kg1fU/Y=; b=PZDcHwkRzDDxCOsd+ew1iCb1+pAm+QjXZvOzpHtSH/Lohgf8/Dpf5gD3KM7qi+v+DE ar1jFF9Czvc3quzgX8mE/eFRtqtoGYgJKZT+0dxDafMCEZ66C/ifqGQN0KCxhHD4gxAY /cmkhA6u0vcB9vfGzWP3qXG4pr83XTF+zT3SH1Kwnh8f2JJ1N338i6MgNQAEYQomLagC ClxcAGBP/mIfDG4RQ9VERyQ6k22c9D+cgNoghn2eyJWErdOKvbv3i2OcK6ftGRZLNNnC TjQXKi38scjlxWSaixk5PuW+cFiPrR1PN8CyIt4mvru/0Niy/BFDMW3u0BlQd8UoChAd Wm1w== 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=yR6a5C+RN4aXpJjTSKMGXA72kDkxG0ld+xL4kg1fU/Y=; b=bQUElPxSAAAClxQEUsrSKmqYL51ywjWRDeTLqh+Ec6DafJ3Rz5qxOxEffrcV66vNaI Kd5Wli0OK2zQ2zYXwae6AQzIoQAELBhdIsIG1l8DCNT6Duzqa+Id5+oKv67jd7UZ7f7u c2X7oX64JNXfg7UxztIx3pcLWkZzO8k1LtRz3wFF9532CtJ85sN9x75OX5fUt04AjJxD 09bCwQ28aA5X7owOiLrVCdCKCBjeRNeOKTexc/gmAJljQtOVdQ0/pclUP0N3mXjwaIHX 9gtTog8Oal4ABlC4ITDOX0o/tpP0/er7ombYnp28Naz/353eAzfgXC1ajjbmVpwj38Ni Jadw== X-Gm-Message-State: AOAM530lI30xnjS8mc0pKbJi1lO9fgnzLZDmKvPSWvsmhk0X0vOHvrkn RJ063X3p1sM0cvc9gb2NbCOZw9C+v+7aeQRl X-Google-Smtp-Source: ABdhPJyfNDckQxULtdbFO/hn/PCnqmUnN7TJh+HpxwsNjoOYDSv0u3zTGsnFRq6Wb6IRyoUMuH/yPg== X-Received: by 2002:aca:f550:: with SMTP id t77mr4433641oih.71.1616525034087; Tue, 23 Mar 2021 11:43:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 08/10] target/ppc: Remove env->immu_idx and env->dmmu_idx Date: Tue, 23 Mar 2021 12:43:38 -0600 Message-Id: <20210323184340.619757-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22b; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" We weren't recording MSR_GS in hflags, which means that BookE memory accesses were essentially random vs Guest State. Instead of adding this bit directly, record the completed mmu indexes instead. This makes it obvious that we are recording exactly the information that we need. This also means that we can stop directly recording MSR_IR. Reviewed-by: David Gibson Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 12 ++++-- target/ppc/helper_regs.h | 1 - target/ppc/helper_regs.c | 89 +++++++++++++++++++--------------------- target/ppc/machine.c | 2 +- target/ppc/mem_helper.c | 2 +- target/ppc/translate.c | 6 +-- 6 files changed, 56 insertions(+), 56 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 2f72f83ee3..3d021f61f3 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -598,7 +598,6 @@ enum { HFLAGS_64 =3D 2, /* computed from MSR_CE and MSR_SF */ HFLAGS_GTSE =3D 3, /* computed from SPR_LPCR[GTSE] */ HFLAGS_DR =3D 4, /* MSR_DR */ - HFLAGS_IR =3D 5, /* MSR_IR */ HFLAGS_SPE =3D 6, /* from MSR_SPE if cpu has SPE; avoid overlap w/ MS= R_VR */ HFLAGS_TM =3D 8, /* computed from MSR_TM */ HFLAGS_BE =3D 9, /* MSR_BE -- from elsewhere on embedded ppc */ @@ -607,6 +606,9 @@ enum { HFLAGS_PR =3D 14, /* MSR_PR */ HFLAGS_VSX =3D 23, /* MSR_VSX if cpu has VSX */ HFLAGS_VR =3D 25, /* MSR_VR if cpu has VRE */ + + HFLAGS_IMMU_IDX =3D 26, /* 26..28 -- the composite immu_idx */ + HFLAGS_DMMU_IDX =3D 29, /* 29..31 -- the composite dmmu_idx */ }; =20 /*************************************************************************= ****/ @@ -1131,8 +1133,6 @@ struct CPUPPCState { /* These resources are used only in TCG */ uint32_t hflags; target_ulong hflags_compat_nmsr; /* for migration compatibility */ - int immu_idx; /* precomputed MMU index to speed up insn accesses */ - int dmmu_idx; /* precomputed MMU index to speed up data accesses */ =20 /* Power management */ int (*check_pow)(CPUPPCState *env); @@ -1368,7 +1368,11 @@ int ppc_dcr_write(ppc_dcr_t *dcr_env, int dcrn, uint= 32_t val); #define MMU_USER_IDX 0 static inline int cpu_mmu_index(CPUPPCState *env, bool ifetch) { - return ifetch ? env->immu_idx : env->dmmu_idx; +#ifdef CONFIG_USER_ONLY + return MMU_USER_IDX; +#else + return (env->hflags >> (ifetch ? HFLAGS_IMMU_IDX : HFLAGS_DMMU_IDX)) &= 7; +#endif } =20 /* Compatibility modes */ diff --git a/target/ppc/helper_regs.h b/target/ppc/helper_regs.h index 4148a442b3..42f26870b9 100644 --- a/target/ppc/helper_regs.h +++ b/target/ppc/helper_regs.h @@ -21,7 +21,6 @@ #define HELPER_REGS_H =20 void hreg_swap_gpr_tgpr(CPUPPCState *env); -void hreg_compute_mem_idx(CPUPPCState *env); void hreg_compute_hflags(CPUPPCState *env); void cpu_interrupt_exittb(CPUState *cs); int hreg_store_msr(CPUPPCState *env, target_ulong value, int alter_hv); diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index dd3cd770a3..5411a67e9a 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -43,49 +43,6 @@ void hreg_swap_gpr_tgpr(CPUPPCState *env) env->tgpr[3] =3D tmp; } =20 -void hreg_compute_mem_idx(CPUPPCState *env) -{ - /* - * This is our encoding for server processors. The architecture - * specifies that there is no such thing as userspace with - * translation off, however it appears that MacOS does it and some - * 32-bit CPUs support it. Weird... - * - * 0 =3D Guest User space virtual mode - * 1 =3D Guest Kernel space virtual mode - * 2 =3D Guest User space real mode - * 3 =3D Guest Kernel space real mode - * 4 =3D HV User space virtual mode - * 5 =3D HV Kernel space virtual mode - * 6 =3D HV User space real mode - * 7 =3D HV Kernel space real mode - * - * For BookE, we need 8 MMU modes as follow: - * - * 0 =3D AS 0 HV User space - * 1 =3D AS 0 HV Kernel space - * 2 =3D AS 1 HV User space - * 3 =3D AS 1 HV Kernel space - * 4 =3D AS 0 Guest User space - * 5 =3D AS 0 Guest Kernel space - * 6 =3D AS 1 Guest User space - * 7 =3D AS 1 Guest Kernel space - */ - if (env->mmu_model & POWERPC_MMU_BOOKE) { - env->immu_idx =3D env->dmmu_idx =3D msr_pr ? 0 : 1; - env->immu_idx +=3D msr_is ? 2 : 0; - env->dmmu_idx +=3D msr_ds ? 2 : 0; - env->immu_idx +=3D msr_gs ? 4 : 0; - env->dmmu_idx +=3D msr_gs ? 4 : 0; - } else { - env->immu_idx =3D env->dmmu_idx =3D msr_pr ? 0 : 1; - env->immu_idx +=3D msr_ir ? 0 : 2; - env->dmmu_idx +=3D msr_dr ? 0 : 2; - env->immu_idx +=3D msr_hv ? 4 : 0; - env->dmmu_idx +=3D msr_hv ? 4 : 0; - } -} - void hreg_compute_hflags(CPUPPCState *env) { target_ulong msr =3D env->msr; @@ -97,10 +54,9 @@ void hreg_compute_hflags(CPUPPCState *env) QEMU_BUILD_BUG_ON(MSR_LE !=3D HFLAGS_LE); QEMU_BUILD_BUG_ON(MSR_PR !=3D HFLAGS_PR); QEMU_BUILD_BUG_ON(MSR_DR !=3D HFLAGS_DR); - QEMU_BUILD_BUG_ON(MSR_IR !=3D HFLAGS_IR); QEMU_BUILD_BUG_ON(MSR_FP !=3D HFLAGS_FP); msr_mask =3D ((1 << MSR_LE) | (1 << MSR_PR) | - (1 << MSR_DR) | (1 << MSR_IR) | (1 << MSR_FP)); + (1 << MSR_DR) | (1 << MSR_FP)); =20 if (ppc_flags & POWERPC_FLAG_HID0_LE) { /* @@ -155,10 +111,51 @@ void hreg_compute_hflags(CPUPPCState *env) if (!env->has_hv_mode || (msr & (1ull << MSR_HV))) { hflags |=3D 1 << HFLAGS_HV; } + + /* + * This is our encoding for server processors. The architecture + * specifies that there is no such thing as userspace with + * translation off, however it appears that MacOS does it and some + * 32-bit CPUs support it. Weird... + * + * 0 =3D Guest User space virtual mode + * 1 =3D Guest Kernel space virtual mode + * 2 =3D Guest User space real mode + * 3 =3D Guest Kernel space real mode + * 4 =3D HV User space virtual mode + * 5 =3D HV Kernel space virtual mode + * 6 =3D HV User space real mode + * 7 =3D HV Kernel space real mode + * + * For BookE, we need 8 MMU modes as follow: + * + * 0 =3D AS 0 HV User space + * 1 =3D AS 0 HV Kernel space + * 2 =3D AS 1 HV User space + * 3 =3D AS 1 HV Kernel space + * 4 =3D AS 0 Guest User space + * 5 =3D AS 0 Guest Kernel space + * 6 =3D AS 1 Guest User space + * 7 =3D AS 1 Guest Kernel space + */ + unsigned immu_idx, dmmu_idx; + dmmu_idx =3D msr & (1 << MSR_PR) ? 0 : 1; + if (env->mmu_model & POWERPC_MMU_BOOKE) { + dmmu_idx |=3D msr & (1 << MSR_GS) ? 4 : 0; + immu_idx =3D dmmu_idx; + immu_idx |=3D msr & (1 << MSR_IS) ? 2 : 0; + dmmu_idx |=3D msr & (1 << MSR_DS) ? 2 : 0; + } else { + dmmu_idx |=3D msr & (1ull << MSR_HV) ? 4 : 0; + immu_idx =3D dmmu_idx; + immu_idx |=3D msr & (1 << MSR_IR) ? 0 : 2; + dmmu_idx |=3D msr & (1 << MSR_DR) ? 0 : 2; + } + hflags |=3D immu_idx << HFLAGS_IMMU_IDX; + hflags |=3D dmmu_idx << HFLAGS_DMMU_IDX; #endif =20 env->hflags =3D hflags | (msr & msr_mask); - hreg_compute_mem_idx(env); } =20 void cpu_interrupt_exittb(CPUState *cs) diff --git a/target/ppc/machine.c b/target/ppc/machine.c index 09c5765a87..e5bffbe365 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -16,7 +16,7 @@ static void post_load_update_msr(CPUPPCState *env) =20 /* * Invalidate all supported msr bits except MSR_TGPR/MSR_HVB - * before restoring. Note that this recomputes hflags and mem_idx. + * before restoring. Note that this recomputes hflags. */ env->msr ^=3D env->msr_mask & ~((1ULL << MSR_TGPR) | MSR_HVB); ppc_store_msr(env, msr); diff --git a/target/ppc/mem_helper.c b/target/ppc/mem_helper.c index f4f7e730de..444b2a30ef 100644 --- a/target/ppc/mem_helper.c +++ b/target/ppc/mem_helper.c @@ -278,7 +278,7 @@ static void dcbz_common(CPUPPCState *env, target_ulong = addr, target_ulong mask, dcbz_size =3D env->dcache_line_size; uint32_t i; void *haddr; - int mmu_idx =3D epid ? PPC_TLB_EPID_STORE : env->dmmu_idx; + int mmu_idx =3D epid ? PPC_TLB_EPID_STORE : cpu_mmu_index(env, false); =20 #if defined(TARGET_PPC64) /* Check for dcbz vs dcbzl on 970 */ diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 5e629291d3..a53463b9b8 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7658,8 +7658,8 @@ void ppc_cpu_dump_state(CPUState *cs, FILE *f, int fl= ags) cs->cpu_index); qemu_fprintf(f, "MSR " TARGET_FMT_lx " HID0 " TARGET_FMT_lx " HF " "%08x iidx %d didx %d\n", - env->msr, env->spr[SPR_HID0], - env->hflags, env->immu_idx, env->dmmu_idx); + env->msr, env->spr[SPR_HID0], env->hflags, + cpu_mmu_index(env, true), cpu_mmu_index(env, false)); #if !defined(NO_TIMER_DUMP) qemu_fprintf(f, "TB %08" PRIu32 " %08" PRIu64 #if !defined(CONFIG_USER_ONLY) @@ -7885,7 +7885,7 @@ static void ppc_tr_init_disas_context(DisasContextBas= e *dcbase, CPUState *cs) ctx->exception =3D POWERPC_EXCP_NONE; ctx->spr_cb =3D env->spr_cb; ctx->pr =3D (hflags >> HFLAGS_PR) & 1; - ctx->mem_idx =3D env->dmmu_idx; + ctx->mem_idx =3D (hflags >> HFLAGS_DMMU_IDX) & 7; ctx->dr =3D (hflags >> HFLAGS_DR) & 1; ctx->hv =3D (hflags >> HFLAGS_HV) & 1; ctx->insns_flags =3D env->insns_flags; --=20 2.25.1 From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616527938; cv=none; d=zohomail.com; s=zohoarc; b=JTD5wWudZ5hydquh2yMHddYsixw3jAeE4APA00ss4rolR+E92zEMssbWFFv0DhWIueYupIcTKvTCMyRIs7dQWNJUg5dHbEYwR0we+hvPGyemYVL4TzKvB1ZulY9xzBIbpVE1D5Jg5xWfD1jKuhurL8P4Mq/JXJPGVloHs8UqZa0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616527938; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GP7KN1O/N4US4bdn1IcXHif9taZ0y5n50rRX2Q2HUDY=; b=Q5Prs5d9kJqLRwlGo25HVEBmWHQNoEPbJqX3ecBNKm0TTmMlOejfmZydn4tnG0heqwB553EKObU1AzNv9CwwnMepv9ESkGa7tPZYaSiReYIiBC/oahmXFUNVCmnBYXB0fOJUN5u/uzeVoy8yJaVJg9622rKHSVYcQeLkKaoyGYM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616527938578578.3325889639513; Tue, 23 Mar 2021 12:32:18 -0700 (PDT) Received: from localhost ([::1]:51360 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOmlF-0005M3-IE for importer@patchew.org; Tue, 23 Mar 2021 15:32:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36726) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm10-0008SV-6p for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:30 -0400 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]:33413) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0Y-0003jO-V1 for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:29 -0400 Received: by mail-oi1-x22f.google.com with SMTP id w70so18088485oie.0 for ; Tue, 23 Mar 2021 11:43:56 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GP7KN1O/N4US4bdn1IcXHif9taZ0y5n50rRX2Q2HUDY=; b=Jc0b5pnPsD66YJ1iLem3ayxsEy4Pda2iAPPoZJUMpss1S5ugnuhaIAEeGWBB3aA4+F NG4ngBUNohuiM4cGcNTHgiMWY3ZD+1sNVYuEvAcQ067kyRd6Csu8Y0iUdwcWWrHRkuZu s2mao+zMMhYsn6u83wiPX31luUwD0tVB8K4XlDxAeN4GBJXeHAqfAO82U4DJ3e1oltK0 sn7mvBxMg80bBwgT/zRNn/3k4TlgqUIU/PLNjabYMebIrQk4fV099Nwy4uAJOgPSeqHQ hr9jn5eUTKjZ8d4jd+jj3chE3EBivjF3HtSGIdMkUaRjrN7hy2ROx3/V9H1BeGVK7dTY RDlg== 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=GP7KN1O/N4US4bdn1IcXHif9taZ0y5n50rRX2Q2HUDY=; b=s9SNzi8Zc8JXaxvaBujz9lAHQ1XU1QHnMfxW3sxzgIl2BzgqYWeVl8R8g5Tkx203do k6BMwr+1Ns3xdRfi3LxMXive2COfrbm1JXk4NWj5jtmZmsfP73SaeZMI31pMgALf0Q5t f7gw7ud7zyKb9CREzzt1i9cvpSO4k1ekTPcHpVeS7f3ZuHKxhhdgQ3LpsJ0VMq3TBPxo kiV/1fDtrbnDDlAJOh4bvzRMSQWT4BiMjk8m1NDEjcW4ZUxr3nEBs4DIrQraXI/XZvqw eHf4Qexgxg+HMs35KAE1d6oQsFMH8cYALgHZ7+LK1ORNkkVCfRR69ERPDXAE3qV3zEn9 jOWw== X-Gm-Message-State: AOAM532ZvN4oqVM3kKuGuachM6LwJ8hiEbPNRQ8taT1PrPESBFW9Gtkb 4FqTWO/+OY8Adc66zVuwLB24r/mmPv9fdlEj X-Google-Smtp-Source: ABdhPJw/RrcGw4S1CQqNJaChrBboZkuIGtg5n0mD+/NIIpvND3jjvLMkfaH+iEMxo+UXFk2KYw4seQ== X-Received: by 2002:a05:6808:8d3:: with SMTP id k19mr4129748oij.67.1616525035721; Tue, 23 Mar 2021 11:43:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 09/10] linux-user/ppc: Fix msr updates for signal handling Date: Tue, 23 Mar 2021 12:43:39 -0600 Message-Id: <20210323184340.619757-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22f; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" In save_user_regs, there are two bugs where we OR in a bit number instead of the bit, clobbering the low bits of MSR. However: The MSR_VR and MSR_SPE bits control the availability of the insns. If the bits were not already set in MSR, then any attempt to access those registers would result in SIGILL. For linux-user, we always initialize MSR to the capabilities of the cpu. We *could* add checks vs MSR where we currently check insn_flags and insn_flags2, but we know they match. Also, there's a stray cut-and-paste comment in restore. Then, do not force little-endian binaries into big-endian mode. Finally, use ppc_store_msr for the update to affect hflags. Which is the reason none of these bugs were previously noticed. Signed-off-by: Richard Henderson --- linux-user/ppc/cpu_loop.c | 5 +++-- linux-user/ppc/signal.c | 23 +++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/linux-user/ppc/cpu_loop.c b/linux-user/ppc/cpu_loop.c index df71e15a25..4a0f6c8dc2 100644 --- a/linux-user/ppc/cpu_loop.c +++ b/linux-user/ppc/cpu_loop.c @@ -492,11 +492,12 @@ void target_cpu_copy_regs(CPUArchState *env, struct t= arget_pt_regs *regs) #if defined(TARGET_PPC64) int flag =3D (env->insns_flags2 & PPC2_BOOKE206) ? MSR_CM : MSR_SF; #if defined(TARGET_ABI32) - env->msr &=3D ~((target_ulong)1 << flag); + ppc_store_msr(env, env->msr & ~((target_ulong)1 << flag)); #else - env->msr |=3D (target_ulong)1 << flag; + ppc_store_msr(env, env->msr | (target_ulong)1 << flag); #endif #endif + env->nip =3D regs->nip; for(i =3D 0; i < 32; i++) { env->gpr[i] =3D regs->gpr[i]; diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c index b78613f7c8..bad38f8ed9 100644 --- a/linux-user/ppc/signal.c +++ b/linux-user/ppc/signal.c @@ -261,9 +261,6 @@ static void save_user_regs(CPUPPCState *env, struct tar= get_mcontext *frame) __put_user(avr->u64[PPC_VEC_HI], &vreg->u64[0]); __put_user(avr->u64[PPC_VEC_LO], &vreg->u64[1]); } - /* Set MSR_VR in the saved MSR value to indicate that - frame->mc_vregs contains valid data. */ - msr |=3D MSR_VR; #if defined(TARGET_PPC64) vrsave =3D (uint32_t *)&frame->mc_vregs.altivec[33]; /* 64-bit needs to put a pointer to the vectors in the frame */ @@ -300,9 +297,6 @@ static void save_user_regs(CPUPPCState *env, struct tar= get_mcontext *frame) for (i =3D 0; i < ARRAY_SIZE(env->gprh); i++) { __put_user(env->gprh[i], &frame->mc_vregs.spe[i]); } - /* Set MSR_SPE in the saved MSR value to indicate that - frame->mc_vregs contains valid data. */ - msr |=3D MSR_SPE; __put_user(env->spe_fscr, &frame->mc_vregs.spe[32]); } #endif @@ -354,8 +348,10 @@ static void restore_user_regs(CPUPPCState *env, __get_user(msr, &frame->mc_gregs[TARGET_PT_MSR]); =20 /* If doing signal return, restore the previous little-endian mode. */ - if (sig) - env->msr =3D (env->msr & ~(1ull << MSR_LE)) | (msr & (1ull << MSR_= LE)); + if (sig) { + ppc_store_msr(env, ((env->msr & ~(1ull << MSR_LE)) | + (msr & (1ull << MSR_LE)))); + } =20 /* Restore Altivec registers if necessary. */ if (env->insns_flags & PPC_ALTIVEC) { @@ -376,8 +372,6 @@ static void restore_user_regs(CPUPPCState *env, __get_user(avr->u64[PPC_VEC_HI], &vreg->u64[0]); __get_user(avr->u64[PPC_VEC_LO], &vreg->u64[1]); } - /* Set MSR_VEC in the saved MSR value to indicate that - frame->mc_vregs contains valid data. */ #if defined(TARGET_PPC64) vrsave =3D (uint32_t *)&v_regs[33]; #else @@ -468,7 +462,7 @@ void setup_frame(int sig, struct target_sigaction *ka, env->nip =3D (target_ulong) ka->_sa_handler; =20 /* Signal handlers are entered in big-endian mode. */ - env->msr &=3D ~(1ull << MSR_LE); + ppc_store_msr(env, env->msr & ~(1ull << MSR_LE)); =20 unlock_user_struct(frame, frame_addr, 1); return; @@ -563,8 +557,13 @@ void setup_rt_frame(int sig, struct target_sigaction *= ka, env->nip =3D (target_ulong) ka->_sa_handler; #endif =20 +#ifdef TARGET_WORDS_BIGENDIAN /* Signal handlers are entered in big-endian mode. */ - env->msr &=3D ~(1ull << MSR_LE); + ppc_store_msr(env, env->msr & ~(1ull << MSR_LE)); +#else + /* Signal handlers are entered in little-endian mode. */ + ppc_store_msr(env, env->msr | (1ull << MSR_LE)); +#endif =20 unlock_user_struct(rt_sf, rt_sf_addr, 1); return; --=20 2.25.1 From nobody Sat May 4 09:21:07 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1616526749; cv=none; d=zohomail.com; s=zohoarc; b=lnI2YChIlonu82VmhPQhtIzTEk559TjIBbCKAABlyI8VI2oQL9iUE0I2EvQx1ZmZ7jWxhAJdnThvcV44ezEOJQn/+tLiLGtNqf5FrVxcY5HVrMTHMUvThStB0TbFOIXuhe+2ClgXi/ZoUVZYdX/ne9q2xJ4F5G3DlV037m9z70w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616526749; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5llEtBaN+Bp+Z3OAO9T9usrgC5W2jq7W550GBWoLWU4=; b=Xs1wo8tPBuiy+6wxrS9wGI+60n/xLcf+IXcHTxmoo6vTXkCMPn3RyThon12yw1Nk33mehzMGI/9rixn1vNMxa/4BPyhZ3igo5HFg/GaGDgxV0/2gzw4JI5Al2o/MDRJzYecl/dUiyfYoeipM9RFLPgU4Rx8puhBtPERzbmON+Uc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616526749452558.856155019614; Tue, 23 Mar 2021 12:12:29 -0700 (PDT) Received: from localhost ([::1]:38702 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOmS4-0002f9-90 for importer@patchew.org; Tue, 23 Mar 2021 15:12:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36734) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOm10-0008Sg-Br for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:30 -0400 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]:46934) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOm0Z-0003jY-3t for qemu-devel@nongnu.org; Tue, 23 Mar 2021 14:44:30 -0400 Received: by mail-ot1-x32d.google.com with SMTP id 68-20020a9d0f4a0000b02901b663e6258dso20451231ott.13 for ; Tue, 23 Mar 2021 11:43:57 -0700 (PDT) Received: from localhost.localdomain (171.189-204-159.bestelclientes.com.mx. [189.204.159.171]) by smtp.gmail.com with ESMTPSA id x23sm3902825ood.28.2021.03.23.11.43.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 11:43:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5llEtBaN+Bp+Z3OAO9T9usrgC5W2jq7W550GBWoLWU4=; b=f+4SLIlK04khUdqtpKdgOylbEzbKQqnG6KH+N83YeB4CmPDr4U5TqDH5IfwhVYvnsW KxhKmbLhpDbLYZu59zLY81L9CuP01dTWwneBrRhNp6LAVkLLIaCuUUub3Qo1m/ui+7Sx 34dsh/qfy7cu04dFKmxmoj55naPkn23GaAC1rSP1dDzRYtzmVm/rrJKSBz9M+bV9EieZ b/Ns8cmAErc63z8gMp3oUPU7lgSbW5DMkZG4Miz4/SyMIf+A0YK7Bw7t8D6SExRIpreI pXVECIDqC+P7tw3Nae0vMGx8Vdx+s2VQ2u1J4Ct7vYln9yB9OVvqMqqMv/+rlubDant4 H8gA== 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=5llEtBaN+Bp+Z3OAO9T9usrgC5W2jq7W550GBWoLWU4=; b=E6vWkimweIkHAptUQEkvwwsPhiCo+0wrNU6+rXbd5OKkZvYyW8uMGuPBrjS8hn+/y6 IRbD/oR26VsGrPLcr/eIGtXDkKfCqcRUNyCcFOf6DUWPraeudE7y1W5KM4CrrSIH+yll JYoyNmwt13TxJ/ru99vVyT+oIdAu9Ojq4UuYjKhWdqJFv8yA2cSUbSBURk1afmhonDR+ n1PLUkLz30ifseu1WtFLrNpB7FJZn8tix5KCJMTcrJvYv3Kjg8pAA8FdfH2vILMvMpKt fyv1qatlwGXdpG+l1xkuaxz/iy+DzMljrq8lr5FUdKvt9enuhQOe5I/q04PUgC1Kc9J7 BUgw== X-Gm-Message-State: AOAM530P/6eBqjBG0IqRRZBhcgxBgONLHK+y8df899lnMATfIvPuwP4r y3PBJ8W9jgDFskBG/gqHlqLGKTqrLqXkT6CB X-Google-Smtp-Source: ABdhPJxK3gxCzqG7eqRPLa77J2dN145bgSDggi+t4bi0E/rhgiNUFwwHpsy3joBrLdWoAEhP52c1Uw== X-Received: by 2002:a9d:550b:: with SMTP id l11mr5327675oth.218.1616525037117; Tue, 23 Mar 2021 11:43:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v5 10/10] target/ppc: Validate hflags with CONFIG_DEBUG_TCG Date: Tue, 23 Mar 2021 12:43:40 -0600 Message-Id: <20210323184340.619757-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210323184340.619757-1-richard.henderson@linaro.org> References: <20210323184340.619757-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::32d; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Verify that hflags was updated correctly whenever we change cpu state that is used by hflags. Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 5 +++++ target/ppc/helper_regs.c | 29 +++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 3d021f61f3..69fc9a2831 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2425,6 +2425,10 @@ void cpu_write_xer(CPUPPCState *env, target_ulong xe= r); */ #define is_book3s_arch2x(ctx) (!!((ctx)->insns_flags & PPC_SEGMENT_64B)) =20 +#ifdef CONFIG_DEBUG_TCG +void cpu_get_tb_cpu_state(CPUPPCState *env, target_ulong *pc, + target_ulong *cs_base, uint32_t *flags); +#else static inline void cpu_get_tb_cpu_state(CPUPPCState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *f= lags) { @@ -2432,6 +2436,7 @@ static inline void cpu_get_tb_cpu_state(CPUPPCState *= env, target_ulong *pc, *cs_base =3D 0; *flags =3D env->hflags; } +#endif =20 void QEMU_NORETURN raise_exception(CPUPPCState *env, uint32_t exception); void QEMU_NORETURN raise_exception_ra(CPUPPCState *env, uint32_t exception, diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index 5411a67e9a..3723872aa6 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -43,7 +43,7 @@ void hreg_swap_gpr_tgpr(CPUPPCState *env) env->tgpr[3] =3D tmp; } =20 -void hreg_compute_hflags(CPUPPCState *env) +static uint32_t hreg_compute_hflags_value(CPUPPCState *env) { target_ulong msr =3D env->msr; uint32_t ppc_flags =3D env->flags; @@ -155,9 +155,34 @@ void hreg_compute_hflags(CPUPPCState *env) hflags |=3D dmmu_idx << HFLAGS_DMMU_IDX; #endif =20 - env->hflags =3D hflags | (msr & msr_mask); + return hflags | (msr & msr_mask); } =20 +void hreg_compute_hflags(CPUPPCState *env) +{ + env->hflags =3D hreg_compute_hflags_value(env); +} + +#ifdef CONFIG_DEBUG_TCG +void cpu_get_tb_cpu_state(CPUPPCState *env, target_ulong *pc, + target_ulong *cs_base, uint32_t *flags) +{ + uint32_t hflags_current =3D env->hflags; + uint32_t hflags_rebuilt; + + *pc =3D env->nip; + *cs_base =3D 0; + *flags =3D hflags_current; + + hflags_rebuilt =3D hreg_compute_hflags_value(env); + if (unlikely(hflags_current !=3D hflags_rebuilt)) { + cpu_abort(env_cpu(env), + "TCG hflags mismatch (current:0x%08x rebuilt:0x%08x)\n", + hflags_current, hflags_rebuilt); + } +} +#endif + void cpu_interrupt_exittb(CPUState *cs) { if (!kvm_enabled()) { --=20 2.25.1