aboutsummaryrefslogtreecommitdiff
path: root/target-ppc/op_template.h
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-01-04 22:58:38 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-01-04 22:58:38 +0000
commit9a64fbe4d89751524be0954f87dd514083295e99 (patch)
tree090826caf337daefaf5d8c06d2d97c85be76d3f4 /target-ppc/op_template.h
parentefe160c502bc9ebb4d9e6fcb94cea708af73a2a1 (diff)
downloadqemu-9a64fbe4d89751524be0954f87dd514083295e99.zip
qemu-9a64fbe4d89751524be0954f87dd514083295e99.tar.gz
qemu-9a64fbe4d89751524be0954f87dd514083295e99.tar.bz2
PowerPC system emulation (Jocelyn Mayer) - modified patch to use new TLB api
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@528 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/op_template.h')
-rw-r--r--target-ppc/op_template.h33
1 files changed, 30 insertions, 3 deletions
diff --git a/target-ppc/op_template.h b/target-ppc/op_template.h
index 4a849ff..5ba4dfc 100644
--- a/target-ppc/op_template.h
+++ b/target-ppc/op_template.h
@@ -18,56 +18,67 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+/* General purpose registers moves */
void OPPROTO glue(op_load_gpr_T0_gpr, REG)(void)
{
T0 = regs->gpr[REG];
+ RETURN();
}
void OPPROTO glue(op_load_gpr_T1_gpr, REG)(void)
{
T1 = regs->gpr[REG];
+ RETURN();
}
void OPPROTO glue(op_load_gpr_T2_gpr, REG)(void)
{
T2 = regs->gpr[REG];
+ RETURN();
}
void OPPROTO glue(op_store_T0_gpr_gpr, REG)(void)
{
regs->gpr[REG] = T0;
+ RETURN();
}
void OPPROTO glue(op_store_T1_gpr_gpr, REG)(void)
{
regs->gpr[REG] = T1;
+ RETURN();
}
void OPPROTO glue(op_store_T2_gpr_gpr, REG)(void)
{
regs->gpr[REG] = T2;
+ RETURN();
}
#if REG <= 7
-
+/* Condition register moves */
void OPPROTO glue(op_load_crf_T0_crf, REG)(void)
{
T0 = regs->crf[REG];
+ RETURN();
}
void OPPROTO glue(op_load_crf_T1_crf, REG)(void)
{
T1 = regs->crf[REG];
+ RETURN();
}
void OPPROTO glue(op_store_T0_crf_crf, REG)(void)
{
regs->crf[REG] = T0;
+ RETURN();
}
void OPPROTO glue(op_store_T1_crf_crf, REG)(void)
{
regs->crf[REG] = T1;
+ RETURN();
}
/* Floating point condition and status register moves */
@@ -117,8 +128,6 @@ void OPPROTO glue(op_clear_fpscr_fpscr, REG)(void)
#endif /* REG <= 7 */
-/* float moves */
-
/* floating point registers moves */
void OPPROTO glue(op_load_fpr_FT0_fpr, REG)(void)
{
@@ -156,4 +165,22 @@ void OPPROTO glue(op_store_FT2_fpr_fpr, REG)(void)
RETURN();
}
+#if REG <= 15
+/* Segment register moves */
+void OPPROTO glue(op_load_sr, REG)(void)
+{
+ T0 = env->sr[REG];
+ RETURN();
+}
+
+void OPPROTO glue(op_store_sr, REG)(void)
+{
+#if defined (DEBUG_OP)
+ dump_store_sr(REG);
+#endif
+ env->sr[REG] = T0;
+ RETURN();
+}
+#endif
+
#undef REG