From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LB9f1-0007vB-Ld for qemu-devel@nongnu.org; Fri, 12 Dec 2008 10:10:36 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LB9ew-0007kl-DL for qemu-devel@nongnu.org; Fri, 12 Dec 2008 10:10:31 -0500 Received: from [199.232.76.173] (port=50402 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LB9er-0007gb-2W for qemu-devel@nongnu.org; Fri, 12 Dec 2008 10:10:25 -0500 Received: from mx2.redhat.com ([66.187.237.31]:33030) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LB9eq-0001g5-H2 for qemu-devel@nongnu.org; Fri, 12 Dec 2008 10:10:24 -0500 From: Eduardo Habkost Date: Fri, 12 Dec 2008 13:08:59 -0200 Message-Id: <1229094550-2022-21-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 20/31] target-ppc/helper.c: LOG_SWTLB 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_SWTLB macro and use it instead of #ifdef DEBUG_SOFTWARE_TLB. Signed-off-by: Eduardo Habkost --- target-ppc/helper.c | 64 +++++++++++++++----------------------------------- 1 files changed, 19 insertions(+), 45 deletions(-) diff --git a/target-ppc/helper.c b/target-ppc/helper.c index 85e7612..6e0123e 100644 --- a/target-ppc/helper.c +++ b/target-ppc/helper.c @@ -47,6 +47,16 @@ # define LOG_MMU(...) do { } while (0) #endif + +#ifdef DEBUG_SOFTWARE_TLB +# define LOG_SWTLB(...) do { \ + if (loglevel) \ + fprintf(logfile, ## __VA_ARGS__); \ + } while (0) +#else +# define LOG_SWTLB(...) do { } while (0) +#endif + /*****************************************************************************/ /* PowerPC MMU emulation */ @@ -330,12 +340,8 @@ static always_inline void __ppc6xx_tlb_invalidate_virt (CPUState *env, nr = ppc6xx_tlb_getnum(env, eaddr, way, is_code); tlb = &env->tlb[nr].tlb6; if (pte_is_valid(tlb->pte0) && (match_epn == 0 || eaddr == tlb->EPN)) { -#if defined (DEBUG_SOFTWARE_TLB) - if (loglevel != 0) { - fprintf(logfile, "TLB invalidate %d/%d " ADDRX "\n", + LOG_SWTLB("TLB invalidate %d/%d " ADDRX "\n", nr, env->nb_tlb, eaddr); - } -#endif pte_invalidate(&tlb->pte0); tlb_flush_page(env, tlb->EPN); } @@ -361,12 +367,8 @@ void ppc6xx_tlb_store (CPUState *env, target_ulong EPN, int way, int is_code, nr = ppc6xx_tlb_getnum(env, EPN, way, is_code); tlb = &env->tlb[nr].tlb6; -#if defined (DEBUG_SOFTWARE_TLB) - if (loglevel != 0) { - fprintf(logfile, "Set TLB %d/%d EPN " ADDRX " PTE0 " ADDRX + LOG_SWTLB("Set TLB %d/%d EPN " ADDRX " PTE0 " ADDRX " PTE1 " ADDRX "\n", nr, env->nb_tlb, EPN, pte0, pte1); - } -#endif /* Invalidate any pending reference in Qemu for this virtual address */ __ppc6xx_tlb_invalidate_virt(env, EPN, is_code, 1); tlb->pte0 = pte0; @@ -392,27 +394,19 @@ static always_inline int ppc6xx_tlb_check (CPUState *env, mmu_ctx_t *ctx, tlb = &env->tlb[nr].tlb6; /* This test "emulates" the PTE index match for hardware TLBs */ if ((eaddr & TARGET_PAGE_MASK) != tlb->EPN) { -#if defined (DEBUG_SOFTWARE_TLB) - if (loglevel != 0) { - fprintf(logfile, "TLB %d/%d %s [" ADDRX " " ADDRX + LOG_SWTLB("TLB %d/%d %s [" ADDRX " " ADDRX "] <> " ADDRX "\n", nr, env->nb_tlb, pte_is_valid(tlb->pte0) ? "valid" : "inval", tlb->EPN, tlb->EPN + TARGET_PAGE_SIZE, eaddr); - } -#endif continue; } -#if defined (DEBUG_SOFTWARE_TLB) - if (loglevel != 0) { - fprintf(logfile, "TLB %d/%d %s " ADDRX " <> " ADDRX " " ADDRX + LOG_SWTLB("TLB %d/%d %s " ADDRX " <> " ADDRX " " ADDRX " %c %c\n", nr, env->nb_tlb, pte_is_valid(tlb->pte0) ? "valid" : "inval", tlb->EPN, eaddr, tlb->pte1, rw ? 'S' : 'L', access_type == ACCESS_CODE ? 'I' : 'D'); - } -#endif switch (pte32_check(ctx, tlb->pte0, tlb->pte1, 0, rw, access_type)) { case -3: /* TLB inconsistency */ @@ -439,12 +433,8 @@ static always_inline int ppc6xx_tlb_check (CPUState *env, mmu_ctx_t *ctx, } if (best != -1) { done: -#if defined (DEBUG_SOFTWARE_TLB) - if (loglevel != 0) { - fprintf(logfile, "found TLB at addr " PADDRX " prot=%01x ret=%d\n", + LOG_SWTLB("found TLB at addr " PADDRX " prot=%01x ret=%d\n", ctx->raddr & TARGET_PAGE_MASK, ctx->prot, ret); - } -#endif /* Update page flags */ pte_update_flags(ctx, &env->tlb[best].tlb6.pte1, ret, rw); } @@ -1084,13 +1074,9 @@ static always_inline int ppcemb_tlb_check (CPUState *env, ppcemb_tlb_t *tlb, return -1; } mask = ~(tlb->size - 1); -#if defined (DEBUG_SOFTWARE_TLB) - if (loglevel != 0) { - fprintf(logfile, "%s: TLB %d address " ADDRX " PID %u <=> " ADDRX + LOG_SWTLB("%s: TLB %d address " ADDRX " PID %u <=> " ADDRX " " ADDRX " %u\n", __func__, i, address, pid, tlb->EPN, mask, (uint32_t)tlb->PID); - } -#endif /* Check PID */ if (tlb->PID != 0 && tlb->PID != pid) return -1; @@ -1183,12 +1169,8 @@ static int mmu40x_get_physical_address (CPUState *env, mmu_ctx_t *ctx, continue; zsel = (tlb->attr >> 4) & 0xF; zpr = (env->spr[SPR_40x_ZPR] >> (28 - (2 * zsel))) & 0x3; -#if defined (DEBUG_SOFTWARE_TLB) - if (loglevel != 0) { - fprintf(logfile, "%s: TLB %d zsel %d zpr %d rw %d attr %08x\n", + LOG_SWTLB("%s: TLB %d zsel %d zpr %d rw %d attr %08x\n", __func__, i, zsel, zpr, rw, tlb->attr); - } -#endif /* Check execute enable bit */ switch (zpr) { case 0x2: @@ -1218,23 +1200,15 @@ static int mmu40x_get_physical_address (CPUState *env, mmu_ctx_t *ctx, } if (ret >= 0) { ctx->raddr = raddr; -#if defined (DEBUG_SOFTWARE_TLB) - if (loglevel != 0) { - fprintf(logfile, "%s: access granted " ADDRX " => " PADDRX + LOG_SWTLB("%s: access granted " ADDRX " => " PADDRX " %d %d\n", __func__, address, ctx->raddr, ctx->prot, ret); - } -#endif return 0; } } -#if defined (DEBUG_SOFTWARE_TLB) - if (loglevel != 0) { - fprintf(logfile, "%s: access refused " ADDRX " => " PADDRX + LOG_SWTLB("%s: access refused " ADDRX " => " PADDRX " %d %d\n", __func__, address, raddr, ctx->prot, ret); - } -#endif return ret; } -- 1.5.5.GIT