aboutsummaryrefslogtreecommitdiff
path: root/target-ppc/helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'target-ppc/helper.c')
-rw-r--r--target-ppc/helper.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/target-ppc/helper.c b/target-ppc/helper.c
index 5fa5ee002a..438cad42a6 100644
--- a/target-ppc/helper.c
+++ b/target-ppc/helper.c
@@ -1612,10 +1612,16 @@ void ppc_tlb_invalidate_all (CPUPPCState *env)
cpu_abort(env, "MMU model not implemented\n");
break;
case POWERPC_MMU_32B:
+#if defined(TARGET_PPC64)
case POWERPC_MMU_64B:
case POWERPC_MMU_64BRIDGE:
+#endif /* defined(TARGET_PPC64) */
tlb_flush(env, 1);
break;
+ default:
+ /* XXX: TODO */
+ cpu_abort(env, "Unknown MMU model %d\n", env->mmu_model);
+ break;
}
}
@@ -1672,14 +1678,21 @@ void ppc_tlb_invalidate_one (CPUPPCState *env, target_ulong addr)
tlb_flush_page(env, addr | (0xE << 28));
tlb_flush_page(env, addr | (0xF << 28));
break;
+#if defined(TARGET_PPC64)
case POWERPC_MMU_64B:
case POWERPC_MMU_64BRIDGE:
/* tlbie invalidate TLBs for all segments */
/* XXX: given the fact that there are too many segments to invalidate,
+ * and we still don't have a tlb_flush_mask(env, n, mask) in Qemu,
* we just invalidate all TLBs
*/
tlb_flush(env, 1);
break;
+#endif /* defined(TARGET_PPC64) */
+ default:
+ /* XXX: TODO */
+ cpu_abort(env, "Unknown MMU model 2\n");
+ break;
}
#else
ppc_tlb_invalidate_all(env);