summaryrefslogtreecommitdiff
path: root/target-ppc/op_helper.h
diff options
context:
space:
mode:
authorj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-03-17 14:02:15 +0000
committerj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-03-17 14:02:15 +0000
commitd9bce9d99f4656ae0b0127f7472db9067b8f84ab (patch)
treec9c879c635532e30c4f3766daea391f70f7a71d7 /target-ppc/op_helper.h
parent5fd46862e5232d1840a9353c99b163f11b49a035 (diff)
downloadqemu-d9bce9d99f4656ae0b0127f7472db9067b8f84ab.tar.gz
Make it safe to use 64 bits GPR and/or 64 bits host registers.
For "symetry", add 64 bits versions of all modified functions. As a side effect, add a lot of code provision for PowerPC 64 support. Move overflow and carry checks in common routines for simple cases. Add isel and popcntb instructions from PowerPC 2.03 specification. Remove remaining micro-operations helpers prototypes from op.c. Fix XER_BC field to be 7 bits long. Add power management support for PowerPC 603 & 604. Fix compilation warnings. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2482 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/op_helper.h')
-rw-r--r--target-ppc/op_helper.h54
1 files changed, 46 insertions, 8 deletions
diff --git a/target-ppc/op_helper.h b/target-ppc/op_helper.h
index 0cba00204a..13ed7ab927 100644
--- a/target-ppc/op_helper.h
+++ b/target-ppc/op_helper.h
@@ -35,6 +35,17 @@ void glue(do_POWER2_lfq_le, MEMSUFFIX) (void);
void glue(do_POWER2_stfq, MEMSUFFIX) (void);
void glue(do_POWER2_stfq_le, MEMSUFFIX) (void);
+#if defined(TARGET_PPC64)
+void glue(do_lsw_64, MEMSUFFIX) (int dst);
+void glue(do_lsw_le_64, MEMSUFFIX) (int dst);
+void glue(do_stsw_64, MEMSUFFIX) (int src);
+void glue(do_stsw_le_64, MEMSUFFIX) (int src);
+void glue(do_lmw_64, MEMSUFFIX) (int dst);
+void glue(do_lmw_le_64, MEMSUFFIX) (int dst);
+void glue(do_stmw_64, MEMSUFFIX) (int src);
+void glue(do_stmw_le_64, MEMSUFFIX) (int src);
+#endif
+
#else
/* Registers load and stores */
@@ -46,23 +57,34 @@ void do_load_fpscr (void);
void do_store_fpscr (uint32_t mask);
/* Integer arithmetic helpers */
-void do_addo (void);
-void do_addco (void);
void do_adde (void);
-void do_addeo (void);
void do_addmeo (void);
-void do_addzeo (void);
void do_divwo (void);
void do_divwuo (void);
void do_mullwo (void);
void do_nego (void);
-void do_subfo (void);
-void do_subfco (void);
void do_subfe (void);
-void do_subfeo (void);
void do_subfmeo (void);
void do_subfzeo (void);
-void do_sraw(void);
+void do_sraw (void);
+#if defined(TARGET_PPC64)
+void do_adde_64 (void);
+void do_addmeo_64 (void);
+void do_imul64 (uint64_t *tl, uint64_t *th);
+void do_mul64 (uint64_t *tl, uint64_t *th);
+void do_divdo (void);
+void do_divduo (void);
+void do_mulldo (void);
+void do_nego_64 (void);
+void do_subfe_64 (void);
+void do_subfmeo_64 (void);
+void do_subfzeo_64 (void);
+void do_srad (void);
+#endif
+void do_popcntb (void);
+#if defined(TARGET_PPC64)
+void do_popcntb_64 (void);
+#endif
/* Floating-point arithmetic helpers */
void do_fsqrt (void);
@@ -77,13 +99,29 @@ void do_fcmpu (void);
void do_fcmpo (void);
void do_tw (int flags);
+#if defined(TARGET_PPC64)
+void do_td (int flags);
+#endif
void do_icbi (void);
+#if defined(TARGET_PPC64)
+void do_icbi_64 (void);
+#endif
#if !defined(CONFIG_USER_ONLY)
void do_rfi (void);
+#if defined(TARGET_PPC64)
+void do_rfi_32 (void);
+#endif
void do_tlbia (void);
void do_tlbie (void);
+#if defined(TARGET_PPC64)
+void do_tlbie_64 (void);
+#endif
void do_load_6xx_tlb (int is_code);
+#if defined(TARGET_PPC64)
+void do_slbia (void);
+void do_slbie (void);
+#endif
#endif
/* POWER / PowerPC 601 specific helpers */