removed stdout reference (not portable)
[qemu] / target-ppc / exec.h
index da1ebb7..6377907 100644 (file)
@@ -36,131 +36,133 @@ register uint32_t T2 asm(AREG3);
 #define FTS1 ((float)env->ft1)
 #define FTS2 ((float)env->ft2)
 
+#if defined (DEBUG_OP)
+#define RETURN() __asm__ __volatile__("nop");
+#else
 #define RETURN() __asm__ __volatile__("");
+#endif
 
 #include "cpu.h"
 #include "exec-all.h"
 
-static inline uint8_t ld8 (uint32_t EA)
+static inline uint32_t rotl (uint32_t i, int n)
 {
-    return *((uint8_t *)EA);
+    return ((i << n) | (i >> (32 - n)));
 }
 
-static inline uint16_t ld16 (uint32_t EA)
-{
-    return __be16_to_cpu(*((uint16_t *)EA));
-}
+/* XXX: move that to a generic header */
+#if !defined(CONFIG_USER_ONLY)
 
-static inline uint16_t ld16r (uint32_t EA)
-{
-    return __le16_to_cpu(*((uint16_t *)EA));
-}
+#define ldul_user ldl_user
+#define ldul_kernel ldl_kernel
 
-static inline uint32_t ld32 (uint32_t EA)
-{
-    return __be32_to_cpu(*((uint32_t *)EA));
-}
+#define ACCESS_TYPE 0
+#define MEMSUFFIX _kernel
+#define DATA_SIZE 1
+#include "softmmu_header.h"
 
-static inline uint32_t ld32r (uint32_t EA)
-{
-    return __le32_to_cpu(*((uint32_t *)EA));
-}
+#define DATA_SIZE 2
+#include "softmmu_header.h"
 
-static inline uint64_t ld64 (uint32_t EA)
-{
-    return __be64_to_cpu(*((uint64_t *)EA));
-}
+#define DATA_SIZE 4
+#include "softmmu_header.h"
 
-static inline uint64_t ld64r (uint32_t EA)
-{
-    return __le64_to_cpu(*((uint64_t *)EA));
-}
+#define DATA_SIZE 8
+#include "softmmu_header.h"
+#undef ACCESS_TYPE
+#undef MEMSUFFIX
 
-static inline void st8 (uint32_t EA, uint8_t data)
-{
-    *((uint8_t *)EA) = data;
-}
+#define ACCESS_TYPE 1
+#define MEMSUFFIX _user
+#define DATA_SIZE 1
+#include "softmmu_header.h"
 
-static inline void st16 (uint32_t EA, uint16_t data)
-{
-    *((uint16_t *)EA) = __cpu_to_be16(data);
-}
+#define DATA_SIZE 2
+#include "softmmu_header.h"
 
-static inline void st16r (uint32_t EA, uint16_t data)
-{
-    *((uint16_t *)EA) = __cpu_to_le16(data);
-}
+#define DATA_SIZE 4
+#include "softmmu_header.h"
 
-static inline void st32 (uint32_t EA, uint32_t data)
-{
-    *((uint32_t *)EA) = __cpu_to_be32(data);
-}
+#define DATA_SIZE 8
+#include "softmmu_header.h"
+#undef ACCESS_TYPE
+#undef MEMSUFFIX
 
-static inline void st32r (uint32_t EA, uint32_t data)
-{
-    *((uint32_t *)EA) = __cpu_to_le32(data);
-}
-
-static inline void st64 (uint32_t EA, uint64_t data)
-{
-    *((uint64_t *)EA) = __cpu_to_be64(data);
-}
+/* these access are slower, they must be as rare as possible */
+#define ACCESS_TYPE 2
+#define MEMSUFFIX _data
+#define DATA_SIZE 1
+#include "softmmu_header.h"
 
-static inline void st64r (uint32_t EA, uint64_t data)
-{
-    *((uint64_t *)EA) = __cpu_to_le64(data);
-}
+#define DATA_SIZE 2
+#include "softmmu_header.h"
 
-static inline void set_CRn(int n, uint8_t value)
-{
-    env->crf[n] = value;
-}
-
-static inline void set_carry (void)
-{
-    xer_ca = 1;
-}
+#define DATA_SIZE 4
+#include "softmmu_header.h"
 
-static inline void reset_carry (void)
-{
-    xer_ca = 0;
-}
+#define DATA_SIZE 8
+#include "softmmu_header.h"
+#undef ACCESS_TYPE
+#undef MEMSUFFIX
 
-static inline void set_overflow (void)
-{
-    xer_so = 1;
-    xer_ov = 1;
-}
+#define ldub(p) ldub_data(p)
+#define ldsb(p) ldsb_data(p)
+#define lduw(p) lduw_data(p)
+#define ldsw(p) ldsw_data(p)
+#define ldl(p) ldl_data(p)
+#define ldq(p) ldq_data(p)
 
-static inline void reset_overflow (void)
-{
-    xer_ov = 0;
-}
+#define stb(p, v) stb_data(p, v)
+#define stw(p, v) stw_data(p, v)
+#define stl(p, v) stl_data(p, v)
+#define stq(p, v) stq_data(p, v)
 
-static inline uint32_t rotl (uint32_t i, int n)
-{
-    return ((i << n) | (i >> (32 - n)));
-}
+#endif /* !defined(CONFIG_USER_ONLY) */
 
-void raise_exception (int exception_index);
-void raise_exception_err (int exception_index, int error_code);
+void do_raise_exception_err (uint32_t exception, int error_code);
+void do_raise_exception (uint32_t exception);
 
-uint32_t do_load_cr (void);
-void do_store_cr (uint32_t crn, uint32_t value);
-uint32_t do_load_xer (void);
-void do_store_xer (uint32_t value);
-uint32_t do_load_msr (void);
-void do_store_msr (uint32_t msr_value);
+void do_load_cr (void);
+void do_store_cr (uint32_t mask);
+void do_load_xer (void);
+void do_store_xer (void);
+void do_load_msr (void);
+void do_store_msr (void);
 void do_load_fpscr (void);
 void do_store_fpscr (uint32_t mask);
 
-int32_t do_sraw(int32_t Ta, uint32_t Tb);
-void do_lmw (int reg, uint32_t src);
-void do_stmw (int reg, uint32_t dest);
-void do_lsw (uint32_t reg, int count, uint32_t src);
-void do_stsw (uint32_t reg, int count, uint32_t dest);
-
-void do_dcbz (void);
+void do_sraw(void);
+
+void do_fctiw (void);
+void do_fctiwz (void);
+void do_fnmadd (void);
+void do_fnmsub (void);
+void do_fnmadds (void);
+void do_fnmsubs (void);
+void do_fsqrt (void);
+void do_fsqrts (void);
+void do_fres (void);
+void do_fsqrte (void);
+void do_fsel (void);
+void do_fcmpu (void);
+void do_fcmpo (void);
+void do_fabs (void);
+void do_fnabs (void);
+
+void do_check_reservation (void);
 void do_icbi (void);
+void do_store_sr (uint32_t srnum);
+void do_store_ibat (int ul, int nr);
+void do_store_dbat (int ul, int nr);
+void do_tlbia (void);
+void do_tlbie (void);
+
+void dump_state (void);
+void dump_rfi (void);
+void dump_store_sr (int srnum);
+void dump_store_ibat (int ul, int nr);
+void dump_store_dbat (int ul, int nr);
+void dump_store_tb (int ul);
+void dump_update_tb(uint32_t param);
 
 #endif /* !defined (__PPC_H__) */