Message ID | 51e1927e3b17781f237e5a8802ad76cdca2c64eb.1715209155.git.balaton@eik.bme.hu (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Misc PPC exception and BookE MMU clean ups | expand |
On Thu May 9, 2024 at 9:36 AM AEST, BALATON Zoltan wrote: > mmubooke206_get_physical_address() only uses the raddr and prot fields > from mmu_ctx_t. Pass these directly instead of using a ctx struct. > Reviewed-by: Nicholas Piggin <npiggin@gmail.com> > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> > --- > target/ppc/mmu_common.c | 32 ++++++++++---------------------- > 1 file changed, 10 insertions(+), 22 deletions(-) > > diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c > index 8c1c7b1851..bffa06455d 100644 > --- a/target/ppc/mmu_common.c > +++ b/target/ppc/mmu_common.c > @@ -837,27 +837,22 @@ found_tlb: > return access_type == MMU_INST_FETCH ? -3 : -2; > } > > -static int mmubooke206_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, > - target_ulong address, > +static int mmubooke206_get_physical_address(CPUPPCState *env, hwaddr *raddr, > + int *prot, target_ulong address, > MMUAccessType access_type, > int mmu_idx) > { > ppcmas_tlb_t *tlb; > - hwaddr raddr; > - int i, j, ret; > - > - ret = -1; > - raddr = (hwaddr)-1ULL; > + int i, j, ret = -1; > > for (i = 0; i < BOOKE206_MAX_TLBN; i++) { > int ways = booke206_tlb_ways(env, i); > - > for (j = 0; j < ways; j++) { > tlb = booke206_get_tlbm(env, i, address, j); > if (!tlb) { > continue; > } > - ret = mmubooke206_check_tlb(env, tlb, &raddr, &ctx->prot, address, > + ret = mmubooke206_check_tlb(env, tlb, raddr, prot, address, > access_type, mmu_idx); > if (ret != -1) { > goto found_tlb; > @@ -867,17 +862,10 @@ static int mmubooke206_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, > > found_tlb: > > - if (ret >= 0) { > - ctx->raddr = raddr; > - qemu_log_mask(CPU_LOG_MMU, "%s: access granted " TARGET_FMT_lx > - " => " HWADDR_FMT_plx " %d %d\n", __func__, address, > - ctx->raddr, ctx->prot, ret); > - } else { > - qemu_log_mask(CPU_LOG_MMU, "%s: access refused " TARGET_FMT_lx > - " => " HWADDR_FMT_plx " %d %d\n", __func__, address, > - raddr, ctx->prot, ret); > - } > - > + qemu_log_mask(CPU_LOG_MMU, "%s: access %s " TARGET_FMT_lx " => " > + HWADDR_FMT_plx " %d %d\n", __func__, > + ret < 0 ? "refused" : "granted", address, > + ret < 0 ? -1 : *raddr, *prot, ret); > return ret; > } > > @@ -1136,8 +1124,8 @@ int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx, > return mmubooke_get_physical_address(env, &ctx->raddr, &ctx->prot, > eaddr, access_type); > } else if (env->mmu_model == POWERPC_MMU_BOOKE206) { > - return mmubooke206_get_physical_address(env, ctx, eaddr, access_type, > - mmu_idx); > + return mmubooke206_get_physical_address(env, &ctx->raddr, &ctx->prot, > + eaddr, access_type, mmu_idx); > } > > real_mode = (type == ACCESS_CODE) ? !FIELD_EX64(env->msr, MSR, IR)
diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c index 8c1c7b1851..bffa06455d 100644 --- a/target/ppc/mmu_common.c +++ b/target/ppc/mmu_common.c @@ -837,27 +837,22 @@ found_tlb: return access_type == MMU_INST_FETCH ? -3 : -2; } -static int mmubooke206_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, - target_ulong address, +static int mmubooke206_get_physical_address(CPUPPCState *env, hwaddr *raddr, + int *prot, target_ulong address, MMUAccessType access_type, int mmu_idx) { ppcmas_tlb_t *tlb; - hwaddr raddr; - int i, j, ret; - - ret = -1; - raddr = (hwaddr)-1ULL; + int i, j, ret = -1; for (i = 0; i < BOOKE206_MAX_TLBN; i++) { int ways = booke206_tlb_ways(env, i); - for (j = 0; j < ways; j++) { tlb = booke206_get_tlbm(env, i, address, j); if (!tlb) { continue; } - ret = mmubooke206_check_tlb(env, tlb, &raddr, &ctx->prot, address, + ret = mmubooke206_check_tlb(env, tlb, raddr, prot, address, access_type, mmu_idx); if (ret != -1) { goto found_tlb; @@ -867,17 +862,10 @@ static int mmubooke206_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, found_tlb: - if (ret >= 0) { - ctx->raddr = raddr; - qemu_log_mask(CPU_LOG_MMU, "%s: access granted " TARGET_FMT_lx - " => " HWADDR_FMT_plx " %d %d\n", __func__, address, - ctx->raddr, ctx->prot, ret); - } else { - qemu_log_mask(CPU_LOG_MMU, "%s: access refused " TARGET_FMT_lx - " => " HWADDR_FMT_plx " %d %d\n", __func__, address, - raddr, ctx->prot, ret); - } - + qemu_log_mask(CPU_LOG_MMU, "%s: access %s " TARGET_FMT_lx " => " + HWADDR_FMT_plx " %d %d\n", __func__, + ret < 0 ? "refused" : "granted", address, + ret < 0 ? -1 : *raddr, *prot, ret); return ret; } @@ -1136,8 +1124,8 @@ int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx, return mmubooke_get_physical_address(env, &ctx->raddr, &ctx->prot, eaddr, access_type); } else if (env->mmu_model == POWERPC_MMU_BOOKE206) { - return mmubooke206_get_physical_address(env, ctx, eaddr, access_type, - mmu_idx); + return mmubooke206_get_physical_address(env, &ctx->raddr, &ctx->prot, + eaddr, access_type, mmu_idx); } real_mode = (type == ACCESS_CODE) ? !FIELD_EX64(env->msr, MSR, IR)
mmubooke206_get_physical_address() only uses the raddr and prot fields from mmu_ctx_t. Pass these directly instead of using a ctx struct. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> --- target/ppc/mmu_common.c | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-)