Message ID | 30fb2142b0c22d11c783741054d5de680135a73a.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: > mmubooke_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 | 30 ++++++++++-------------------- > 1 file changed, 10 insertions(+), 20 deletions(-) > > diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c > index c5ef02f05e..8c1c7b1851 100644 > --- a/target/ppc/mmu_common.c > +++ b/target/ppc/mmu_common.c > @@ -635,36 +635,25 @@ static int mmubooke_check_tlb(CPUPPCState *env, ppcemb_tlb_t *tlb, > return access_type == MMU_INST_FETCH ? -3 : -2; > } > > -static int mmubooke_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, > - target_ulong address, > +static int mmubooke_get_physical_address(CPUPPCState *env, hwaddr *raddr, > + int *prot, target_ulong address, > MMUAccessType access_type) > { > ppcemb_tlb_t *tlb; > - hwaddr raddr; > - int i, ret; > + int i, ret = -1; > > - ret = -1; > - raddr = (hwaddr)-1ULL; > for (i = 0; i < env->nb_tlb; i++) { > tlb = &env->tlb.tlbe[i]; > - ret = mmubooke_check_tlb(env, tlb, &raddr, &ctx->prot, address, > + ret = mmubooke_check_tlb(env, tlb, raddr, prot, address, > access_type, i); > if (ret != -1) { > break; > } > } > - > - 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; > } > > @@ -1144,7 +1133,8 @@ int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx, > bool real_mode; > > if (env->mmu_model == POWERPC_MMU_BOOKE) { > - return mmubooke_get_physical_address(env, ctx, eaddr, access_type); > + 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);
diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c index c5ef02f05e..8c1c7b1851 100644 --- a/target/ppc/mmu_common.c +++ b/target/ppc/mmu_common.c @@ -635,36 +635,25 @@ static int mmubooke_check_tlb(CPUPPCState *env, ppcemb_tlb_t *tlb, return access_type == MMU_INST_FETCH ? -3 : -2; } -static int mmubooke_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, - target_ulong address, +static int mmubooke_get_physical_address(CPUPPCState *env, hwaddr *raddr, + int *prot, target_ulong address, MMUAccessType access_type) { ppcemb_tlb_t *tlb; - hwaddr raddr; - int i, ret; + int i, ret = -1; - ret = -1; - raddr = (hwaddr)-1ULL; for (i = 0; i < env->nb_tlb; i++) { tlb = &env->tlb.tlbe[i]; - ret = mmubooke_check_tlb(env, tlb, &raddr, &ctx->prot, address, + ret = mmubooke_check_tlb(env, tlb, raddr, prot, address, access_type, i); if (ret != -1) { break; } } - - 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; } @@ -1144,7 +1133,8 @@ int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx, bool real_mode; if (env->mmu_model == POWERPC_MMU_BOOKE) { - return mmubooke_get_physical_address(env, ctx, eaddr, access_type); + 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);
mmubooke_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 | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-)