target/ppc: Remove type argument from ppc6xx_tlb_check
We can now use MMU_INST_FETCH from access_type for this. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210518201146.794854-10-richard.henderson@linaro.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
574c5585e3
commit
f3f5794d79
@ -288,8 +288,7 @@ static void ppc6xx_tlb_store(CPUPPCState *env, target_ulong EPN, int way,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int ppc6xx_tlb_check(CPUPPCState *env, mmu_ctx_t *ctx,
|
static int ppc6xx_tlb_check(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
target_ulong eaddr,
|
target_ulong eaddr, MMUAccessType access_type)
|
||||||
MMUAccessType access_type, int type)
|
|
||||||
{
|
{
|
||||||
ppc6xx_tlb_t *tlb;
|
ppc6xx_tlb_t *tlb;
|
||||||
int nr, best, way;
|
int nr, best, way;
|
||||||
@ -298,8 +297,7 @@ static int ppc6xx_tlb_check(CPUPPCState *env, mmu_ctx_t *ctx,
|
|||||||
best = -1;
|
best = -1;
|
||||||
ret = -1; /* No TLB found */
|
ret = -1; /* No TLB found */
|
||||||
for (way = 0; way < env->nb_ways; way++) {
|
for (way = 0; way < env->nb_ways; way++) {
|
||||||
nr = ppc6xx_tlb_getnum(env, eaddr, way,
|
nr = ppc6xx_tlb_getnum(env, eaddr, way, access_type == MMU_INST_FETCH);
|
||||||
type == ACCESS_CODE ? 1 : 0);
|
|
||||||
tlb = &env->tlb.tlb6[nr];
|
tlb = &env->tlb.tlb6[nr];
|
||||||
/* This test "emulates" the PTE index match for hardware TLBs */
|
/* This test "emulates" the PTE index match for hardware TLBs */
|
||||||
if ((eaddr & TARGET_PAGE_MASK) != tlb->EPN) {
|
if ((eaddr & TARGET_PAGE_MASK) != tlb->EPN) {
|
||||||
@ -314,7 +312,7 @@ static int ppc6xx_tlb_check(CPUPPCState *env, mmu_ctx_t *ctx,
|
|||||||
pte_is_valid(tlb->pte0) ? "valid" : "inval",
|
pte_is_valid(tlb->pte0) ? "valid" : "inval",
|
||||||
tlb->EPN, eaddr, tlb->pte1,
|
tlb->EPN, eaddr, tlb->pte1,
|
||||||
access_type == MMU_DATA_STORE ? 'S' : 'L',
|
access_type == MMU_DATA_STORE ? 'S' : 'L',
|
||||||
type == ACCESS_CODE ? 'I' : 'D');
|
access_type == MMU_INST_FETCH ? 'I' : 'D');
|
||||||
switch (ppc6xx_tlb_pte_check(ctx, tlb->pte0, tlb->pte1,
|
switch (ppc6xx_tlb_pte_check(ctx, tlb->pte0, tlb->pte1,
|
||||||
0, access_type)) {
|
0, access_type)) {
|
||||||
case -3:
|
case -3:
|
||||||
@ -503,7 +501,7 @@ static int get_segment_6xx_tlb(CPUPPCState *env, mmu_ctx_t *ctx,
|
|||||||
/* Initialize real address with an invalid value */
|
/* Initialize real address with an invalid value */
|
||||||
ctx->raddr = (hwaddr)-1ULL;
|
ctx->raddr = (hwaddr)-1ULL;
|
||||||
/* Software TLB search */
|
/* Software TLB search */
|
||||||
ret = ppc6xx_tlb_check(env, ctx, eaddr, access_type, type);
|
ret = ppc6xx_tlb_check(env, ctx, eaddr, access_type);
|
||||||
#if defined(DUMP_PAGE_TABLES)
|
#if defined(DUMP_PAGE_TABLES)
|
||||||
if (qemu_loglevel_mask(CPU_LOG_MMU)) {
|
if (qemu_loglevel_mask(CPU_LOG_MMU)) {
|
||||||
CPUState *cs = env_cpu(env);
|
CPUState *cs = env_cpu(env);
|
||||||
|
Loading…
Reference in New Issue
Block a user