diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-03 13:37:12 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-03 13:37:12 +0000 |
commit | faadf50e2962dd54175647a80bd6fc4319c91973 (patch) | |
tree | 0eb974930ba5a40e54636c813c89a885ec9c2050 /target-ppc/op_helper.c | |
parent | f10c315f8fa1b5ea06fdccee0001928af47d9147 (diff) |
PowerPC MMU and exception fixes:
* PowerPC 601 (and probably POWER/POWER2) uses a different BAT format than
later PowerPC implementation.
* Bugfix in BATs check: must not stop after 4 BATs when more are provided.
* Enable POWER 'rac' instruction.
* Fix exception prefix for all supported PowerPC implementations.
* Fix exceptions, MMU model and bus model for PowerPC 601 & 620.
* Enable PowerPC 620 as it could mostly boot a PreP target.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3518 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/op_helper.c')
-rw-r--r-- | target-ppc/op_helper.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c index e534fab9f8..f5d26aeaa3 100644 --- a/target-ppc/op_helper.c +++ b/target-ppc/op_helper.c @@ -1682,15 +1682,18 @@ void do_POWER_mulo (void) #if !defined (CONFIG_USER_ONLY) void do_POWER_rac (void) { -#if 0 mmu_ctx_t ctx; + int nb_BATs; /* We don't have to generate many instances of this instruction, * as rac is supervisor only. */ - if (get_physical_address(env, &ctx, T0, 0, ACCESS_INT, 1) == 0) + /* XXX: FIX THIS: Pretend we have no BAT */ + nb_BATs = env->nb_BATs; + env->nb_BATs = 0; + if (get_physical_address(env, &ctx, T0, 0, ACCESS_INT) == 0) T0 = ctx.raddr; -#endif + env->nb_BATs = nb_BATs; } void do_POWER_rfsvc (void) |