aboutsummaryrefslogtreecommitdiffstats
path: root/target-ppc/helper.c
diff options
context:
space:
mode:
authorj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-09-21 05:50:37 +0000
committerj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-09-21 05:50:37 +0000
commit2662a059aa2affddfbe42e78b11c802cf30a970f (patch)
tree028e88502c43a492bf1d7fd922c534244ec4cb0d /target-ppc/helper.c
parenta4bb6c3e87b8bfa5db94a4e231e211696e05b4f5 (diff)
More PowerPC definitions, from POWER 2.04 specifications and misc sources.
Check that at least instructions set and SPRs are correct for PowerPC 401, 403, 405 and 440 cores. Implement PowerPC 401 MMU model (real-mode only). Improve INSNs and SPRs dump to ease parse with standard shell tools. Add more precise status for most PowerPC cores families. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3201 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/helper.c')
-rw-r--r--target-ppc/helper.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/target-ppc/helper.c b/target-ppc/helper.c
index 534ad6b5d..e5d152d7e 100644
--- a/target-ppc/helper.c
+++ b/target-ppc/helper.c
@@ -1072,6 +1072,7 @@ static int check_physical (CPUState *env, mmu_ctx_t *ctx,
case PPC_FLAGS_MMU_SOFT_6xx:
case PPC_FLAGS_MMU_601:
case PPC_FLAGS_MMU_SOFT_4xx:
+ case PPC_FLAGS_MMU_401:
ctx->prot |= PAGE_WRITE;
break;
#if defined(TARGET_PPC64)
@@ -1168,6 +1169,9 @@ int get_physical_address (CPUState *env, mmu_ctx_t *ctx, target_ulong eaddr,
/* XXX: TODO */
cpu_abort(env, "BookE FSL MMU model not implemented\n");
return -1;
+ case PPC_FLAGS_MMU_401:
+ cpu_abort(env, "PowerPC 401 does not do any translation\n");
+ return -1;
default:
cpu_abort(env, "Unknown or invalid MMU model\n");
return -1;
@@ -1267,6 +1271,10 @@ int cpu_ppc_handle_mmu_fault (CPUState *env, target_ulong address, int rw,
/* XXX: TODO */
cpu_abort(env, "MMU model not implemented\n");
return -1;
+ case PPC_FLAGS_MMU_401:
+ cpu_abort(env, "PowerPC 401 should never raise any MMU "
+ "exceptions\n");
+ return -1;
default:
cpu_abort(env, "Unknown or invalid MMU model\n");
return -1;
@@ -1348,6 +1356,10 @@ int cpu_ppc_handle_mmu_fault (CPUState *env, target_ulong address, int rw,
/* XXX: TODO */
cpu_abort(env, "MMU model not implemented\n");
return -1;
+ case PPC_FLAGS_MMU_401:
+ cpu_abort(env, "PowerPC 401 should never raise any MMU "
+ "exceptions\n");
+ return -1;
default:
cpu_abort(env, "Unknown or invalid MMU model\n");
return -1;