From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LB9ew-0007nW-EG for qemu-devel@nongnu.org; Fri, 12 Dec 2008 10:10:31 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LB9eo-0007dj-M8 for qemu-devel@nongnu.org; Fri, 12 Dec 2008 10:10:25 -0500 Received: from [199.232.76.173] (port=50391 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LB9eo-0007dK-Ep for qemu-devel@nongnu.org; Fri, 12 Dec 2008 10:10:22 -0500 Received: from mx2.redhat.com ([66.187.237.31]:33021) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LB9en-0001ew-Ld for qemu-devel@nongnu.org; Fri, 12 Dec 2008 10:10:22 -0500 From: Eduardo Habkost Date: Fri, 12 Dec 2008 13:08:58 -0200 Message-Id: <1229094550-2022-20-git-send-email-ehabkost@redhat.com> In-Reply-To: <1229094550-2022-1-git-send-email-ehabkost@redhat.com> References: <1229094550-2022-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [PATCH 19/31] target-ppc/helper.c: LOG_MMU macro Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Eduardo Habkost Create a LOG_MMU macro and use it instead of #ifdef DEBUG_MMU. Signed-off-by: Eduardo Habkost --- target-ppc/helper.c | 95 +++++++++++++-------------------------------------- 1 files changed, 24 insertions(+), 71 deletions(-) diff --git a/target-ppc/helper.c b/target-ppc/helper.c index 538d9f3..85e7612 100644 --- a/target-ppc/helper.c +++ b/target-ppc/helper.c @@ -38,6 +38,15 @@ //#define DEBUG_EXCEPTIONS //#define FLUSH_ALL_TLBS +#ifdef DEBUG_MMU +# define LOG_MMU(...) do { \ + if (loglevel) \ + fprintf(logfile, ## __VA_ARGS__); \ + } while (0) +#else +# define LOG_MMU(...) do { } while (0) +#endif + /*****************************************************************************/ /* PowerPC MMU emulation */ @@ -217,16 +226,10 @@ static always_inline int _pte_check (mmu_ctx_t *ctx, int is_64b, ret = check_prot(ctx->prot, rw, type); if (ret == 0) { /* Access granted */ -#if defined (DEBUG_MMU) - if (loglevel != 0) - fprintf(logfile, "PTE access granted !\n"); -#endif + LOG_MMU("PTE access granted !\n"); } else { /* Access right violation */ -#if defined (DEBUG_MMU) - if (loglevel != 0) - fprintf(logfile, "PTE access rejected\n"); -#endif + LOG_MMU("PTE access rejected\n"); } } } @@ -608,30 +611,22 @@ static always_inline int _find_pte (mmu_ctx_t *ctx, int is_64b, int h, pte0 = ldq_phys(base + (i * 16)); pte1 = ldq_phys(base + (i * 16) + 8); r = pte64_check(ctx, pte0, pte1, h, rw, type); -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "Load pte from " ADDRX " => " ADDRX " " ADDRX + LOG_MMU("Load pte from " ADDRX " => " ADDRX " " ADDRX " %d %d %d " ADDRX "\n", base + (i * 16), pte0, pte1, (int)(pte0 & 1), h, (int)((pte0 >> 1) & 1), ctx->ptem); - } -#endif } else #endif { pte0 = ldl_phys(base + (i * 8)); pte1 = ldl_phys(base + (i * 8) + 4); r = pte32_check(ctx, pte0, pte1, h, rw, type); -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "Load pte from " ADDRX " => " ADDRX " " ADDRX + LOG_MMU("Load pte from " ADDRX " => " ADDRX " " ADDRX " %d %d %d " ADDRX "\n", base + (i * 8), pte0, pte1, (int)(pte0 >> 31), h, (int)((pte0 >> 6) & 1), ctx->ptem); - } -#endif } switch (r) { case -3: @@ -659,12 +654,8 @@ static always_inline int _find_pte (mmu_ctx_t *ctx, int is_64b, int h, } if (good != -1) { done: -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "found PTE at addr " PADDRX " prot=%01x ret=%d\n", + LOG_MMU("found PTE at addr " PADDRX " prot=%01x ret=%d\n", ctx->raddr, ctx->prot, ret); - } -#endif /* Update page flags */ pte1 = ctx->raddr; if (pte_update_flags(ctx, &pte1, ret, rw) == 1) { @@ -910,11 +901,7 @@ static always_inline int get_segment (CPUState *env, mmu_ctx_t *ctx, pr = msr_pr; #if defined(TARGET_PPC64) if (env->mmu_model & POWERPC_MMU_64) { -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "Check SLBs\n"); - } -#endif + LOG_MMU("Check SLBs\n"); ret = slb_lookup(env, eaddr, &vsid, &page_mask, &attr); if (ret < 0) return ret; @@ -940,22 +927,14 @@ static always_inline int get_segment (CPUState *env, mmu_ctx_t *ctx, vsid_sh = 6; sdr_sh = 16; sdr_mask = 0xFFC0; -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "Check segment v=" ADDRX " %d " ADDRX + LOG_MMU("Check segment v=" ADDRX " %d " ADDRX " nip=" ADDRX " lr=" ADDRX " ir=%d dr=%d pr=%d %d t=%d\n", eaddr, (int)(eaddr >> 28), sr, env->nip, env->lr, (int)msr_ir, (int)msr_dr, pr != 0 ? 1 : 0, rw, type); - } -#endif } -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "pte segment: key=%d ds %d nx %d vsid " ADDRX "\n", + LOG_MMU("pte segment: key=%d ds %d nx %d vsid " ADDRX "\n", ctx->key, ds, ctx->nx, vsid); - } -#endif ret = -1; if (!ds) { /* Check if instruction fetch is allowed, if needed */ @@ -976,23 +955,15 @@ static always_inline int get_segment (CPUState *env, mmu_ctx_t *ctx, hash = ((vsid ^ pgidx) << vsid_sh) & vsid_mask; } mask = (htab_mask << sdr_sh) | sdr_mask; -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "sdr " PADDRX " sh %d hash " PADDRX + LOG_MMU("sdr " PADDRX " sh %d hash " PADDRX " mask " PADDRX " " ADDRX "\n", sdr, sdr_sh, hash, mask, page_mask); - } -#endif ctx->pg_addr[0] = get_pgaddr(sdr, sdr_sh, hash, mask); /* Secondary table address */ hash = (~hash) & vsid_mask; -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "sdr " PADDRX " sh %d hash " PADDRX + LOG_MMU("sdr " PADDRX " sh %d hash " PADDRX " mask " PADDRX "\n", sdr, sdr_sh, hash, mask); - } -#endif ctx->pg_addr[1] = get_pgaddr(sdr, sdr_sh, hash, mask); #if defined(TARGET_PPC64) if (env->mmu_model & POWERPC_MMU_64) { @@ -1010,14 +981,10 @@ static always_inline int get_segment (CPUState *env, mmu_ctx_t *ctx, /* Software TLB search */ ret = ppc6xx_tlb_check(env, ctx, eaddr, rw, type); } else { -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "0 sdr1=" PADDRX " vsid=" ADDRX " " + LOG_MMU("0 sdr1=" PADDRX " vsid=" ADDRX " " "api=" ADDRX " hash=" PADDRX " pg_addr=" PADDRX "\n", sdr, vsid, pgidx, hash, ctx->pg_addr[0]); - } -#endif /* Primary table lookup */ ret = find_pte(env, ctx, 0, rw, type); if (ret < 0) { @@ -1055,17 +1022,11 @@ static always_inline int get_segment (CPUState *env, mmu_ctx_t *ctx, } #endif } else { -#if defined (DEBUG_MMU) - if (loglevel != 0) - fprintf(logfile, "No access allowed\n"); -#endif + LOG_MMU("No access allowed\n"); ret = -3; } } else { -#if defined (DEBUG_MMU) - if (loglevel != 0) - fprintf(logfile, "direct store...\n"); -#endif + LOG_MMU("direct store...\n"); /* Direct-store segment : absolutely *BUGGY* for now */ switch (type) { case ACCESS_INT: @@ -2044,11 +2005,7 @@ void ppc_store_asr (CPUPPCState *env, target_ulong value) void ppc_store_sdr1 (CPUPPCState *env, target_ulong value) { -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "%s: " ADDRX "\n", __func__, value); - } -#endif + LOG_MMU("%s: " ADDRX "\n", __func__, value); if (env->sdr1 != value) { /* XXX: for PowerPC 64, should check that the HTABSIZE value * is <= 28 @@ -2060,12 +2017,8 @@ void ppc_store_sdr1 (CPUPPCState *env, target_ulong value) void ppc_store_sr (CPUPPCState *env, int srnum, target_ulong value) { -#if defined (DEBUG_MMU) - if (loglevel != 0) { - fprintf(logfile, "%s: reg=%d " ADDRX " " ADDRX "\n", + LOG_MMU("%s: reg=%d " ADDRX " " ADDRX "\n", __func__, srnum, value, env->sr[srnum]); - } -#endif if (env->sr[srnum] != value) { env->sr[srnum] = value; #if !defined(FLUSH_ALL_TLBS) && 0 -- 1.5.5.GIT