target/ppc: Split off real mode cases in get_physical_address_wtlb()
The real mode handling is identical in the remaining switch cases. Split off these common real mode cases into a separate conditional to leave only the else branches in the switch that are different. Reviewed-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
279fe98d0d
commit
549685161d
@ -1172,7 +1172,6 @@ int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||
MMUAccessType access_type, int type,
|
||||
int mmu_idx)
|
||||
{
|
||||
int ret = -1;
|
||||
bool real_mode;
|
||||
|
||||
if (env->mmu_model == POWERPC_MMU_BOOKE) {
|
||||
@ -1184,38 +1183,23 @@ int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||
|
||||
real_mode = (type == ACCESS_CODE) ? !FIELD_EX64(env->msr, MSR, IR)
|
||||
: !FIELD_EX64(env->msr, MSR, DR);
|
||||
if (real_mode && (env->mmu_model == POWERPC_MMU_SOFT_6xx ||
|
||||
env->mmu_model == POWERPC_MMU_SOFT_4xx ||
|
||||
env->mmu_model == POWERPC_MMU_REAL)) {
|
||||
return check_physical(env, ctx, eaddr, access_type);
|
||||
}
|
||||
|
||||
switch (env->mmu_model) {
|
||||
case POWERPC_MMU_SOFT_6xx:
|
||||
if (real_mode) {
|
||||
ret = check_physical(env, ctx, eaddr, access_type);
|
||||
} else {
|
||||
ret = mmu6xx_get_physical_address(env, ctx, eaddr, access_type,
|
||||
type);
|
||||
}
|
||||
break;
|
||||
|
||||
return mmu6xx_get_physical_address(env, ctx, eaddr, access_type, type);
|
||||
case POWERPC_MMU_SOFT_4xx:
|
||||
if (real_mode) {
|
||||
ret = check_physical(env, ctx, eaddr, access_type);
|
||||
} else {
|
||||
ret = mmu40x_get_physical_address(env, ctx, eaddr, access_type);
|
||||
}
|
||||
break;
|
||||
return mmu40x_get_physical_address(env, ctx, eaddr, access_type);
|
||||
case POWERPC_MMU_REAL:
|
||||
if (real_mode) {
|
||||
ret = check_physical(env, ctx, eaddr, access_type);
|
||||
} else {
|
||||
cpu_abort(env_cpu(env),
|
||||
"PowerPC in real mode do not do any translation\n");
|
||||
}
|
||||
return -1;
|
||||
cpu_abort(env_cpu(env),
|
||||
"PowerPC in real mode do not do any translation\n");
|
||||
default:
|
||||
cpu_abort(env_cpu(env), "Unknown or invalid MMU model\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void booke206_update_mas_tlb_miss(CPUPPCState *env, target_ulong address,
|
||||
|
Loading…
Reference in New Issue
Block a user