Message ID | b21f11ae20e8a8c2e8b5d943f2bff12b5356005a.1685448535.git.balaton@eik.bme.hu |
---|---|
State | New |
Headers | show |
Series | Embedded PPC misc clean up and optimisation | expand |
On 5/30/23 15:28, BALATON Zoltan wrote: > This is only used by one caller so simplify function by removing this > parameter and move the operation to the single place where it's used. > > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Reviewed-by: Cédric Le Goater <clg@kaod.org> Thanks, C. > --- > target/ppc/cpu.h | 3 +-- > target/ppc/mmu_common.c | 21 +++++++++------------ > target/ppc/mmu_helper.c | 2 +- > 3 files changed, 11 insertions(+), 15 deletions(-) > > diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h > index 0f9f2e1a0c..5cd1b442b4 100644 > --- a/target/ppc/cpu.h > +++ b/target/ppc/cpu.h > @@ -1430,8 +1430,7 @@ int ppcmas_tlb_check(CPUPPCState *env, ppcmas_tlb_t *tlb, > uint32_t pid); > int ppcemb_tlb_check(CPUPPCState *env, ppcemb_tlb_t *tlb, > hwaddr *raddrp, > - target_ulong address, uint32_t pid, int ext, > - int i); > + target_ulong address, uint32_t pid, int i); > hwaddr booke206_tlb_to_page_size(CPUPPCState *env, > ppcmas_tlb_t *tlb); > #endif > diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c > index 7235a4befe..21a353c51a 100644 > --- a/target/ppc/mmu_common.c > +++ b/target/ppc/mmu_common.c > @@ -491,8 +491,7 @@ static int get_segment_6xx_tlb(CPUPPCState *env, mmu_ctx_t *ctx, > /* Generic TLB check function for embedded PowerPC implementations */ > int ppcemb_tlb_check(CPUPPCState *env, ppcemb_tlb_t *tlb, > hwaddr *raddrp, > - target_ulong address, uint32_t pid, int ext, > - int i) > + target_ulong address, uint32_t pid, int i) > { > target_ulong mask; > > @@ -514,11 +513,6 @@ int ppcemb_tlb_check(CPUPPCState *env, ppcemb_tlb_t *tlb, > return -1; > } > *raddrp = (tlb->RPN & mask) | (address & ~mask); > - if (ext) { > - /* Extend the physical address to 36 bits */ > - *raddrp |= (uint64_t)(tlb->RPN & 0xF) << 32; > - } > - > return 0; > } > > @@ -536,7 +530,7 @@ static int mmu40x_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, > for (i = 0; i < env->nb_tlb; i++) { > tlb = &env->tlb.tlbe[i]; > if (ppcemb_tlb_check(env, tlb, &raddr, address, > - env->spr[SPR_40x_PID], 0, i) < 0) { > + env->spr[SPR_40x_PID], i) < 0) { > continue; > } > zsel = (tlb->attr >> 4) & 0xF; > @@ -598,20 +592,23 @@ static int mmubooke_check_tlb(CPUPPCState *env, ppcemb_tlb_t *tlb, > int prot2; > > if (ppcemb_tlb_check(env, tlb, raddr, address, > - env->spr[SPR_BOOKE_PID], > - !env->nb_pids, i) >= 0) { > + env->spr[SPR_BOOKE_PID], i) >= 0) { > + if (!env->nb_pids) { > + /* Extend the physical address to 36 bits */ > + *raddr |= (uint64_t)(tlb->RPN & 0xF) << 32; > + } > goto found_tlb; > } > > if (env->spr[SPR_BOOKE_PID1] && > ppcemb_tlb_check(env, tlb, raddr, address, > - env->spr[SPR_BOOKE_PID1], 0, i) >= 0) { > + env->spr[SPR_BOOKE_PID1], i) >= 0) { > goto found_tlb; > } > > if (env->spr[SPR_BOOKE_PID2] && > ppcemb_tlb_check(env, tlb, raddr, address, > - env->spr[SPR_BOOKE_PID2], 0, i) >= 0) { > + env->spr[SPR_BOOKE_PID2], i) >= 0) { > goto found_tlb; > } > > diff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c > index c0c71a68ff..e7275eaec1 100644 > --- a/target/ppc/mmu_helper.c > +++ b/target/ppc/mmu_helper.c > @@ -124,7 +124,7 @@ static int ppcemb_tlb_search(CPUPPCState *env, target_ulong address, > ret = -1; > for (i = 0; i < env->nb_tlb; i++) { > tlb = &env->tlb.tlbe[i]; > - if (ppcemb_tlb_check(env, tlb, &raddr, address, pid, 0, i) == 0) { > + if (ppcemb_tlb_check(env, tlb, &raddr, address, pid, i) == 0) { > ret = i; > break; > }
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 0f9f2e1a0c..5cd1b442b4 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1430,8 +1430,7 @@ int ppcmas_tlb_check(CPUPPCState *env, ppcmas_tlb_t *tlb, uint32_t pid); int ppcemb_tlb_check(CPUPPCState *env, ppcemb_tlb_t *tlb, hwaddr *raddrp, - target_ulong address, uint32_t pid, int ext, - int i); + target_ulong address, uint32_t pid, int i); hwaddr booke206_tlb_to_page_size(CPUPPCState *env, ppcmas_tlb_t *tlb); #endif diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c index 7235a4befe..21a353c51a 100644 --- a/target/ppc/mmu_common.c +++ b/target/ppc/mmu_common.c @@ -491,8 +491,7 @@ static int get_segment_6xx_tlb(CPUPPCState *env, mmu_ctx_t *ctx, /* Generic TLB check function for embedded PowerPC implementations */ int ppcemb_tlb_check(CPUPPCState *env, ppcemb_tlb_t *tlb, hwaddr *raddrp, - target_ulong address, uint32_t pid, int ext, - int i) + target_ulong address, uint32_t pid, int i) { target_ulong mask; @@ -514,11 +513,6 @@ int ppcemb_tlb_check(CPUPPCState *env, ppcemb_tlb_t *tlb, return -1; } *raddrp = (tlb->RPN & mask) | (address & ~mask); - if (ext) { - /* Extend the physical address to 36 bits */ - *raddrp |= (uint64_t)(tlb->RPN & 0xF) << 32; - } - return 0; } @@ -536,7 +530,7 @@ static int mmu40x_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx, for (i = 0; i < env->nb_tlb; i++) { tlb = &env->tlb.tlbe[i]; if (ppcemb_tlb_check(env, tlb, &raddr, address, - env->spr[SPR_40x_PID], 0, i) < 0) { + env->spr[SPR_40x_PID], i) < 0) { continue; } zsel = (tlb->attr >> 4) & 0xF; @@ -598,20 +592,23 @@ static int mmubooke_check_tlb(CPUPPCState *env, ppcemb_tlb_t *tlb, int prot2; if (ppcemb_tlb_check(env, tlb, raddr, address, - env->spr[SPR_BOOKE_PID], - !env->nb_pids, i) >= 0) { + env->spr[SPR_BOOKE_PID], i) >= 0) { + if (!env->nb_pids) { + /* Extend the physical address to 36 bits */ + *raddr |= (uint64_t)(tlb->RPN & 0xF) << 32; + } goto found_tlb; } if (env->spr[SPR_BOOKE_PID1] && ppcemb_tlb_check(env, tlb, raddr, address, - env->spr[SPR_BOOKE_PID1], 0, i) >= 0) { + env->spr[SPR_BOOKE_PID1], i) >= 0) { goto found_tlb; } if (env->spr[SPR_BOOKE_PID2] && ppcemb_tlb_check(env, tlb, raddr, address, - env->spr[SPR_BOOKE_PID2], 0, i) >= 0) { + env->spr[SPR_BOOKE_PID2], i) >= 0) { goto found_tlb; } diff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c index c0c71a68ff..e7275eaec1 100644 --- a/target/ppc/mmu_helper.c +++ b/target/ppc/mmu_helper.c @@ -124,7 +124,7 @@ static int ppcemb_tlb_search(CPUPPCState *env, target_ulong address, ret = -1; for (i = 0; i < env->nb_tlb; i++) { tlb = &env->tlb.tlbe[i]; - if (ppcemb_tlb_check(env, tlb, &raddr, address, pid, 0, i) == 0) { + if (ppcemb_tlb_check(env, tlb, &raddr, address, pid, i) == 0) { ret = i; break; }
This is only used by one caller so simplify function by removing this parameter and move the operation to the single place where it's used. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> --- target/ppc/cpu.h | 3 +-- target/ppc/mmu_common.c | 21 +++++++++------------ target/ppc/mmu_helper.c | 2 +- 3 files changed, 11 insertions(+), 15 deletions(-)