From patchwork Wed Mar 6 03:44:19 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Gibson X-Patchwork-Id: 225298 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 4BA902C0374 for ; Wed, 6 Mar 2013 15:27:29 +1100 (EST) Received: from localhost ([::1]:53784 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UD5bV-0003au-Qr for incoming@patchwork.ozlabs.org; Tue, 05 Mar 2013 23:05:21 -0500 Received: from eggs.gnu.org ([208.118.235.92]:51593) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UD5IE-0004ED-Sz for qemu-devel@nongnu.org; Tue, 05 Mar 2013 22:46:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UD5Hi-0007tq-21 for qemu-devel@nongnu.org; Tue, 05 Mar 2013 22:45:26 -0500 Received: from ozlabs.org ([203.10.76.45]:33362) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UD5Hh-0007nt-Cv; Tue, 05 Mar 2013 22:44:53 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 738BD2C0398; Wed, 6 Mar 2013 14:44:43 +1100 (EST) From: David Gibson To: agraf@suse.de Date: Wed, 6 Mar 2013 14:44:19 +1100 Message-Id: <1362541473-4365-32-git-send-email-david@gibson.dropbear.id.au> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1362541473-4365-1-git-send-email-david@gibson.dropbear.id.au> References: <1362541473-4365-1-git-send-email-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 203.10.76.45 Cc: David Gibson , qemu-ppc@nongnu.org, afaerber@suse.de, qemu-devel@nongnu.org Subject: [Qemu-devel] [PATCH 31/45] mmu-hash32: Remove odd pointer usage from BAT code X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org In the code for handling BATs, the hash32_bat_size_prot() and hash32_bat_601_size_prot() functions are passed the BAT contents by reference (pointer) for no clear reason, since they only need the values within. This patch removes this odd usage, and uses the resulting change to clean up the caller slightly. Signed-off-by: David Gibson --- target-ppc/mmu-hash32.c | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/target-ppc/mmu-hash32.c b/target-ppc/mmu-hash32.c index 53e86de..b7f6e8f 100644 --- a/target-ppc/mmu-hash32.c +++ b/target-ppc/mmu-hash32.c @@ -115,19 +115,19 @@ static int ppc_hash32_check_prot(int prot, int rwx) /* Perform BAT hit & translation */ static void hash32_bat_size_prot(CPUPPCState *env, target_ulong *blp, - int *validp, int *protp, target_ulong *BATu, - target_ulong *BATl) + int *validp, int *protp, + target_ulong batu, target_ulong batl) { target_ulong bl; int pp, valid, prot; - bl = (*BATu & BATU32_BL) << 15; + bl = (batu & BATU32_BL) << 15; valid = 0; prot = 0; - if (((msr_pr == 0) && (*BATu & BATU32_VS)) || - ((msr_pr != 0) && (*BATu & BATU32_VP))) { + if (((msr_pr == 0) && (batu & BATU32_VS)) || + ((msr_pr != 0) && (batu & BATU32_VP))) { valid = 1; - pp = *BATl & BATL32_PP; + pp = batl & BATL32_PP; if (pp != 0) { prot = PAGE_READ | PAGE_EXEC; if (pp == 0x2) { @@ -142,22 +142,22 @@ static void hash32_bat_size_prot(CPUPPCState *env, target_ulong *blp, static void hash32_bat_601_size_prot(CPUPPCState *env, target_ulong *blp, int *validp, int *protp, - target_ulong *BATu, target_ulong *BATl) + target_ulong batu, target_ulong batl) { target_ulong bl; int key, pp, valid, prot; - bl = (*BATl & BATL32_601_BL) << 17; + bl = (batl & BATL32_601_BL) << 17; LOG_BATS("b %02x ==> bl " TARGET_FMT_lx " msk " TARGET_FMT_lx "\n", - (uint8_t)(*BATl & BATL32_601_BL), bl, ~bl); + (uint8_t)(batl & BATL32_601_BL), bl, ~bl); prot = 0; - valid = !!(*BATl & BATL32_601_V); + valid = !!(batl & BATL32_601_V); if (valid) { - pp = *BATu & BATU32_601_PP; + pp = batu & BATU32_601_PP; if (msr_pr == 0) { - key = !!(*BATu & BATU32_601_KS); + key = !!(batu & BATU32_601_KS); } else { - key = !!(*BATu & BATU32_601_KP); + key = !!(batu & BATU32_601_KP); } prot = ppc_hash32_pp_check(key, pp, 0); } @@ -169,7 +169,7 @@ static void hash32_bat_601_size_prot(CPUPPCState *env, target_ulong *blp, static int ppc_hash32_get_bat(CPUPPCState *env, struct mmu_ctx_hash32 *ctx, target_ulong virtual, int rwx) { - target_ulong *BATlt, *BATut, *BATu, *BATl; + target_ulong *BATlt, *BATut; target_ulong BEPIl, BEPIu, bl; int i, valid, prot; int ret = -1; @@ -184,25 +184,26 @@ static int ppc_hash32_get_bat(CPUPPCState *env, struct mmu_ctx_hash32 *ctx, BATut = env->DBAT[0]; } for (i = 0; i < env->nb_BATs; i++) { - BATu = &BATut[i]; - BATl = &BATlt[i]; - BEPIu = *BATu & BATU32_BEPIU; - BEPIl = *BATu & BATU32_BEPIL; + target_ulong batu = BATut[i]; + target_ulong batl = BATlt[i]; + + BEPIu = batu & BATU32_BEPIU; + BEPIl = batu & BATU32_BEPIL; if (unlikely(env->mmu_model == POWERPC_MMU_601)) { - hash32_bat_601_size_prot(env, &bl, &valid, &prot, BATu, BATl); + hash32_bat_601_size_prot(env, &bl, &valid, &prot, batu, batl); } else { - hash32_bat_size_prot(env, &bl, &valid, &prot, BATu, BATl); + hash32_bat_size_prot(env, &bl, &valid, &prot, batu, batl); } LOG_BATS("%s: %cBAT%d v " TARGET_FMT_lx " BATu " TARGET_FMT_lx " BATl " TARGET_FMT_lx "\n", __func__, - type == ACCESS_CODE ? 'I' : 'D', i, virtual, *BATu, *BATl); + type == ACCESS_CODE ? 'I' : 'D', i, virtual, batu, batl); if ((virtual & BATU32_BEPIU) == BEPIu && ((virtual & BATU32_BEPIL) & ~bl) == BEPIl) { /* BAT matches */ if (valid != 0) { /* Get physical address */ - ctx->raddr = (*BATl & BATL32_BRPNU) | - ((virtual & BATU32_BEPIL & bl) | (*BATl & BATL32_BRPNL)) | + ctx->raddr = (batl & BATL32_BRPNU) | + ((virtual & BATU32_BEPIL & bl) | (batl & BATL32_BRPNL)) | (virtual & 0x0001F000); /* Compute access rights */ ctx->prot = prot;