From nobody Mon Nov 25 12:26:43 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1715392150648230.37539827632554; Fri, 10 May 2024 18:49:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s5boN-0004uk-6A; Fri, 10 May 2024 21:46:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s5bo6-0004jo-8h; Fri, 10 May 2024 21:45:50 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s5bo3-0003Lu-Lq; Fri, 10 May 2024 21:45:50 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id CDE074E6775; Sat, 11 May 2024 03:45:43 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id rH5gakHYMLS1; Sat, 11 May 2024 03:45:41 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id DF6E14E6776; Sat, 11 May 2024 03:45:41 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-Id: <475a65336ba2765b7d1fca91b2943ccb9cb1c7cc.1715390232.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v6 03/48] target/ppc/mmu_common.c: Move calculation of a value closer to its usage MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: Nicholas Piggin , Daniel Henrique Barboza Date: Sat, 11 May 2024 03:45:41 +0200 (CEST) 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=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1715392152569100003 Content-Type: text/plain; charset="utf-8" In mmubooke_check_tlb() and mmubooke206_check_tlb() prot2 is calculated first but only used after an unrelated check that can return before tha value is used. Move the calculation after the check, closer to where it is used, to keep them together and avoid computing it when not needed. Signed-off-by: BALATON Zoltan Reviwed-by: Nicholas Piggin --- target/ppc/mmu_common.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c index 4fde7fd3bf..f79e390306 100644 --- a/target/ppc/mmu_common.c +++ b/target/ppc/mmu_common.c @@ -635,12 +635,6 @@ static int mmubooke_check_tlb(CPUPPCState *env, ppcemb= _tlb_t *tlb, return -1; } =20 - if (FIELD_EX64(env->msr, MSR, PR)) { - prot2 =3D tlb->prot & 0xF; - } else { - prot2 =3D (tlb->prot >> 4) & 0xF; - } - /* Check the address space */ if ((access_type =3D=3D MMU_INST_FETCH ? FIELD_EX64(env->msr, MSR, IR) : @@ -649,6 +643,11 @@ static int mmubooke_check_tlb(CPUPPCState *env, ppcemb= _tlb_t *tlb, return -1; } =20 + if (FIELD_EX64(env->msr, MSR, PR)) { + prot2 =3D tlb->prot & 0xF; + } else { + prot2 =3D (tlb->prot >> 4) & 0xF; + } *prot =3D prot2; if (prot2 & prot_for_access_type(access_type)) { qemu_log_mask(CPU_LOG_MMU, "%s: good TLB!\n", __func__); @@ -830,6 +829,18 @@ static int mmubooke206_check_tlb(CPUPPCState *env, ppc= mas_tlb_t *tlb, =20 found_tlb: =20 + /* Check the address space and permissions */ + if (access_type =3D=3D MMU_INST_FETCH) { + /* There is no way to fetch code using epid load */ + assert(!use_epid); + as =3D FIELD_EX64(env->msr, MSR, IR); + } + + if (as !=3D ((tlb->mas1 & MAS1_TS) >> MAS1_TS_SHIFT)) { + qemu_log_mask(CPU_LOG_MMU, "%s: AS doesn't match\n", __func__); + return -1; + } + if (pr) { if (tlb->mas7_3 & MAS3_UR) { prot2 |=3D PAGE_READ; @@ -851,19 +862,6 @@ found_tlb: prot2 |=3D PAGE_EXEC; } } - - /* Check the address space and permissions */ - if (access_type =3D=3D MMU_INST_FETCH) { - /* There is no way to fetch code using epid load */ - assert(!use_epid); - as =3D FIELD_EX64(env->msr, MSR, IR); - } - - if (as !=3D ((tlb->mas1 & MAS1_TS) >> MAS1_TS_SHIFT)) { - qemu_log_mask(CPU_LOG_MMU, "%s: AS doesn't match\n", __func__); - return -1; - } - *prot =3D prot2; if (prot2 & prot_for_access_type(access_type)) { qemu_log_mask(CPU_LOG_MMU, "%s: good TLB!\n", __func__); --=20 2.30.9