Message ID | de272971970fc6772ac84b691d01e4b03b2e47cf.1716763435.git.balaton@eik.bme.hu (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Remaining MMU clean up patches | expand |
On Mon May 27, 2024 at 9:13 AM AEST, BALATON Zoltan wrote: > Completely get rid of mmu_ctx_t after converting the remaining > functions to pass raddr and prot without the context struct. Reviewed-by: Nicholas Piggin <npiggin@gmail.com> > > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> > --- > target/ppc/mmu_common.c | 25 +++++++------------------ > 1 file changed, 7 insertions(+), 18 deletions(-) > > diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c > index 4770b43630..60f8736210 100644 > --- a/target/ppc/mmu_common.c > +++ b/target/ppc/mmu_common.c > @@ -37,12 +37,6 @@ > > /* #define DUMP_PAGE_TABLES */ > > -/* Context used internally during MMU translations */ > -typedef struct { > - hwaddr raddr; /* Real address */ > - int prot; /* Protection bits */ > -} mmu_ctx_t; > - > void ppc_store_sdr1(CPUPPCState *env, target_ulong value) > { > PowerPCCPU *cpu = env_archcpu(env); > @@ -264,8 +258,8 @@ static int get_bat_6xx_tlb(CPUPPCState *env, hwaddr *raddr, int *prot, > return ret; > } > > -static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, > - target_ulong eaddr, > +static int mmu6xx_get_physical_address(CPUPPCState *env, hwaddr *raddr, > + int *prot, target_ulong eaddr, > hwaddr *hashp, bool *keyp, > MMUAccessType access_type, int type) > { > @@ -277,8 +271,7 @@ static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, > > /* First try to find a BAT entry if there are any */ > if (env->nb_BATs && > - get_bat_6xx_tlb(env, &ctx->raddr, &ctx->prot, eaddr, > - access_type, pr) == 0) { > + get_bat_6xx_tlb(env, raddr, prot, eaddr, access_type, pr) == 0) { > return 0; > } > > @@ -316,7 +309,7 @@ static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, > *hashp = hash; > > /* Software TLB search */ > - return ppc6xx_tlb_check(env, &ctx->raddr, &ctx->prot, eaddr, > + return ppc6xx_tlb_check(env, raddr, prot, eaddr, > access_type, ptem, key, nx); > } > > @@ -333,7 +326,7 @@ static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, > * Should make the instruction do no-op. As it already do > * no-op, it's quite easy :-) > */ > - ctx->raddr = eaddr; > + *raddr = eaddr; > return 0; > case ACCESS_CODE: /* No code fetch is allowed in direct-store areas */ > case ACCESS_FLOAT: /* Floating point load/store */ > @@ -343,7 +336,7 @@ static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, > } > if ((access_type == MMU_DATA_STORE || !key) && > (access_type == MMU_DATA_LOAD || key)) { > - ctx->raddr = eaddr; > + *raddr = eaddr; > return 2; > } > return -2; > @@ -681,7 +674,6 @@ static bool ppc_6xx_xlate(PowerPCCPU *cpu, vaddr eaddr, > { > CPUState *cs = CPU(cpu); > CPUPPCState *env = &cpu->env; > - mmu_ctx_t ctx; > hwaddr hash = 0; /* init to 0 to avoid used uninit warning */ > bool key; > int type, ret; > @@ -700,12 +692,9 @@ static bool ppc_6xx_xlate(PowerPCCPU *cpu, vaddr eaddr, > type = ACCESS_INT; > } > > - ctx.prot = 0; > - ret = mmu6xx_get_physical_address(env, &ctx, eaddr, &hash, &key, > + ret = mmu6xx_get_physical_address(env, raddrp, protp, eaddr, &hash, &key, > access_type, type); > if (ret == 0) { > - *raddrp = ctx.raddr; > - *protp = ctx.prot; > *psizep = TARGET_PAGE_BITS; > return true; > } else if (!guest_visible) {
diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c index 4770b43630..60f8736210 100644 --- a/target/ppc/mmu_common.c +++ b/target/ppc/mmu_common.c @@ -37,12 +37,6 @@ /* #define DUMP_PAGE_TABLES */ -/* Context used internally during MMU translations */ -typedef struct { - hwaddr raddr; /* Real address */ - int prot; /* Protection bits */ -} mmu_ctx_t; - void ppc_store_sdr1(CPUPPCState *env, target_ulong value) { PowerPCCPU *cpu = env_archcpu(env); @@ -264,8 +258,8 @@ static int get_bat_6xx_tlb(CPUPPCState *env, hwaddr *raddr, int *prot, return ret; } -static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, - target_ulong eaddr, +static int mmu6xx_get_physical_address(CPUPPCState *env, hwaddr *raddr, + int *prot, target_ulong eaddr, hwaddr *hashp, bool *keyp, MMUAccessType access_type, int type) { @@ -277,8 +271,7 @@ static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, /* First try to find a BAT entry if there are any */ if (env->nb_BATs && - get_bat_6xx_tlb(env, &ctx->raddr, &ctx->prot, eaddr, - access_type, pr) == 0) { + get_bat_6xx_tlb(env, raddr, prot, eaddr, access_type, pr) == 0) { return 0; } @@ -316,7 +309,7 @@ static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, *hashp = hash; /* Software TLB search */ - return ppc6xx_tlb_check(env, &ctx->raddr, &ctx->prot, eaddr, + return ppc6xx_tlb_check(env, raddr, prot, eaddr, access_type, ptem, key, nx); } @@ -333,7 +326,7 @@ static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, * Should make the instruction do no-op. As it already do * no-op, it's quite easy :-) */ - ctx->raddr = eaddr; + *raddr = eaddr; return 0; case ACCESS_CODE: /* No code fetch is allowed in direct-store areas */ case ACCESS_FLOAT: /* Floating point load/store */ @@ -343,7 +336,7 @@ static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, } if ((access_type == MMU_DATA_STORE || !key) && (access_type == MMU_DATA_LOAD || key)) { - ctx->raddr = eaddr; + *raddr = eaddr; return 2; } return -2; @@ -681,7 +674,6 @@ static bool ppc_6xx_xlate(PowerPCCPU *cpu, vaddr eaddr, { CPUState *cs = CPU(cpu); CPUPPCState *env = &cpu->env; - mmu_ctx_t ctx; hwaddr hash = 0; /* init to 0 to avoid used uninit warning */ bool key; int type, ret; @@ -700,12 +692,9 @@ static bool ppc_6xx_xlate(PowerPCCPU *cpu, vaddr eaddr, type = ACCESS_INT; } - ctx.prot = 0; - ret = mmu6xx_get_physical_address(env, &ctx, eaddr, &hash, &key, + ret = mmu6xx_get_physical_address(env, raddrp, protp, eaddr, &hash, &key, access_type, type); if (ret == 0) { - *raddrp = ctx.raddr; - *protp = ctx.prot; *psizep = TARGET_PAGE_BITS; return true; } else if (!guest_visible) {
Completely get rid of mmu_ctx_t after converting the remaining functions to pass raddr and prot without the context struct. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> --- target/ppc/mmu_common.c | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-)