aboutsummaryrefslogtreecommitdiff
path: root/target-ppc/op.c
diff options
context:
space:
mode:
authorj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-11-04 02:55:33 +0000
committerj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-11-04 02:55:33 +0000
commit056401eae60953822098ff1dc30860364c9681be (patch)
treed6ec477e5ebd870c5cd091c7543034ab9c0ac883 /target-ppc/op.c
parent7a51ad822f533472cab908d2622578d51eb97dc6 (diff)
PowerPC 601 need specific callbacks for its BATs setup.
Implement PowerPC 601 HID0 register, needed for little-endian mode support. As a consequence, we need to merge hflags coming from MSR with other ones. Use little-endian mode from hflags instead of MSR during code translation. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3524 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/op.c')
-rw-r--r--target-ppc/op.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/target-ppc/op.c b/target-ppc/op.c
index da08ec5264..730dc0e90b 100644
--- a/target-ppc/op.c
+++ b/target-ppc/op.c
@@ -2190,30 +2190,27 @@ void OPPROTO op_store_601_rtcu (void)
RETURN();
}
+void OPPROTO op_store_hid0_601 (void)
+{
+ do_store_hid0_601();
+ RETURN();
+}
+
void OPPROTO op_load_601_bat (void)
{
T0 = env->IBAT[PARAM1][PARAM2];
RETURN();
}
-#endif /* !defined(CONFIG_USER_ONLY) */
-/* 601 unified BATs store.
- * To avoid using specific MMU code for 601, we store BATs in
- * IBAT and DBAT simultaneously, then emulate unified BATs.
- */
-#if !defined(CONFIG_USER_ONLY)
void OPPROTO op_store_601_batl (void)
{
- int nr = PARAM1;
-
- env->IBAT[1][nr] = T0;
- env->DBAT[1][nr] = T0;
+ do_store_ibatl_601(env, PARAM1, T0);
RETURN();
}
void OPPROTO op_store_601_batu (void)
{
- do_store_601_batu(PARAM1);
+ do_store_ibatu_601(env, PARAM1, T0);
RETURN();
}
#endif /* !defined(CONFIG_USER_ONLY) */