On Thu May 2, 2024 at 9:43 AM AEST, BALATON Zoltan wrote: > This function is not used from any other files so make it static and > fix the maybe used uninitialised warnings this has uncovered. > > Signed-off-by: BALATON Zoltan <bala...@eik.bme.hu> > --- > target/ppc/internal.h | 5 +---- > target/ppc/mmu_common.c | 5 ++++- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/target/ppc/internal.h b/target/ppc/internal.h > index 601c0b533f..7a99f08dc8 100644 > --- a/target/ppc/internal.h > +++ b/target/ppc/internal.h > @@ -261,10 +261,7 @@ typedef struct mmu_ctx_t mmu_ctx_t; > bool ppc_xlate(PowerPCCPU *cpu, vaddr eaddr, MMUAccessType access_type, > hwaddr *raddrp, int *psizep, int *protp, > int mmu_idx, bool guest_visible); > -int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx, > - target_ulong eaddr, > - MMUAccessType access_type, int type, > - int mmu_idx); > + > /* Software driven TLB helpers */ > int ppc6xx_tlb_getnum(CPUPPCState *env, target_ulong eaddr, > int way, int is_code); > diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c > index 762b13805b..4852cb5571 100644 > --- a/target/ppc/mmu_common.c > +++ b/target/ppc/mmu_common.c > @@ -666,6 +666,7 @@ static int mmubooke_get_physical_address(CPUPPCState > *env, mmu_ctx_t *ctx, > hwaddr raddr = (hwaddr)-1ULL; > int i, ret = -1; > > + ctx->prot = 0; > for (i = 0; i < env->nb_tlb; i++) { > tlb = &env->tlb.tlbe[i]; > ret = mmubooke_check_tlb(env, tlb, &raddr, &ctx->prot, address, > @@ -873,6 +874,7 @@ static int mmubooke206_get_physical_address(CPUPPCState > *env, mmu_ctx_t *ctx, > hwaddr raddr = (hwaddr)-1ULL; > int i, j, ways, ret = -1; > > + ctx->prot = 0; > for (i = 0; i < BOOKE206_MAX_TLBN; i++) { > ways = booke206_tlb_ways(env, i); > for (j = 0; j < ways; j++) {
The prot warnings are valid AFAIKS, used uninit by qemu_log_mask call. So, I see what the booke _check_tlb() functions are doing with *prot now and that is to assign it iff return value is 0 or -2 or -3, matching TLB address (and possibly mismatch prot). Would it be better to fix it as: qemu_log_mask(CPU_LOG_MMU, "%s: access %s " TARGET_FMT_lx " => " HWADDR_FMT_plx " %d %d\n", __func__, ret < 0 ? "refused" : "granted", address, raddr, ret == -1 ? 0 : ctx->prot, ret); This way it's clearer that we're only printing it when a TLB was found, and it won't silence other possible use-uninitialised? > @@ -1144,7 +1146,7 @@ void dump_mmu(CPUPPCState *env) > } > } > > -int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx, > +static int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx, > target_ulong eaddr, > MMUAccessType access_type, int type, > int mmu_idx) > @@ -1163,6 +1165,7 @@ int get_physical_address_wtlb(CPUPPCState *env, > mmu_ctx_t *ctx, > if (real_mode && (env->mmu_model == POWERPC_MMU_SOFT_6xx || > env->mmu_model == POWERPC_MMU_SOFT_4xx || > env->mmu_model == POWERPC_MMU_REAL)) { > + memset(ctx, 0, sizeof(*ctx)); > ctx->raddr = eaddr; > ctx->prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC; > return 0; I wonder why the compiler doesn't see these, they are all in the return not-zero cases that should be quite visible? What if you leave the static change to the end of your series, do the simplifications allow the compiler to work it out? I prefer not to squash such compiler warnings if it can be avoided. Thanks, Nick