+#define M_IST_INTERN(a,b,disp) M_ITYPE(0x2b,b,a,disp) /* 32 store */
+
+#define M_IST(a,b,disp) \
+ do { \
+ s4 lo = (short) (disp); \
+ s4 hi = (short) (((disp) - lo) >> 16); \
+ if (hi == 0) { \
+ M_IST_INTERN(a,b,lo); \
+ } else { \
+ M_LUI(REG_ITMP3, hi); \
+ M_AADD(b, REG_ITMP3, REG_ITMP3); \
+ M_IST_INTERN(a, REG_ITMP3, lo); \
+ } \
+ } while (0)
+
+#if SIZEOF_VOID_P == 8
+
+#define M_LST_INTERN(a,b,disp) M_ITYPE(0x3f,b,a,disp) /* 64 store */
+
+#else /* SIZEOF_VOID_P == 8 */
+
+#if WORDS_BIGENDIAN == 1
+
+#define M_LST_INTERN(a,b,disp) \
+ do { \
+ M_IST_INTERN(GET_HIGH_REG(a), b, disp); \
+ M_IST_INTERN(GET_LOW_REG(a), b, disp + 4); \
+ } while (0)
+
+#else /* if WORDS_BIGENDIAN == 1 */
+
+#define M_LST_INTERN(a,b,disp) \
+ do { \
+ M_IST_INTERN(GET_HIGH_REG(a), b, disp + 4); \
+ M_IST_INTERN(GET_LOW_REG(a), b, disp); \
+ } while (0)
+
+#endif /* if WORDS_BIGENDIAN == 1 */
+
+#endif /* SIZEOF_VOID_P == 8 */
+
+#define M_LST(a,b,disp) \
+ do { \
+ s4 lo = (short) (disp); \
+ s4 hi = (short) (((disp) - lo) >> 16); \
+ if (hi == 0) { \
+ M_LST_INTERN(a,b,lo); \
+ } else { \
+ M_LUI(REG_ITMP3, hi); \
+ M_AADD(b, REG_ITMP3, REG_ITMP3); \
+ M_LST_INTERN(a, REG_ITMP3, lo); \
+ } \
+ } while (0)
+
+#define M_FLD_INTERN(a,b,disp) M_ITYPE(0x31,b,a,disp) /* load flt */
+#define M_DLD_INTERN(a,b,disp) M_ITYPE(0x35,b,a,disp) /* load dbl */
+
+#define M_FLD(a,b,disp) \
+ do { \
+ s4 lo = (short) (disp); \
+ s4 hi = (short) (((disp) - lo) >> 16); \
+ if (hi == 0) { \
+ M_FLD_INTERN(a,b,lo); \
+ } else { \
+ M_LUI(REG_ITMP3, hi); \
+ M_AADD(b, REG_ITMP3, REG_ITMP3); \
+ M_FLD_INTERN(a, REG_ITMP3, lo); \
+ } \
+ } while (0)
+
+#define M_DLD(a,b,disp) \
+ do { \
+ s4 lo = (short) (disp); \
+ s4 hi = (short) (((disp) - lo) >> 16); \
+ if (hi == 0) { \
+ M_DLD_INTERN(a,b,lo); \
+ } else { \
+ M_LUI(REG_ITMP3, hi); \
+ M_AADD(b, REG_ITMP3, REG_ITMP3); \
+ M_DLD_INTERN(a, REG_ITMP3, lo); \
+ } \
+ } while (0)
+
+#define M_FST_INTERN(a,b,disp) M_ITYPE(0x39,b,a,disp) /* store flt */
+#define M_DST_INTERN(a,b,disp) M_ITYPE(0x3d,b,a,disp) /* store dbl */
+
+#define M_FST(a,b,disp) \
+ do { \
+ s4 lo = (short) (disp); \
+ s4 hi = (short) (((disp) - lo) >> 16); \
+ if (hi == 0) { \
+ M_FST_INTERN(a,b,lo); \
+ } else { \
+ M_LUI(REG_ITMP3, hi); \
+ M_AADD(b, REG_ITMP3, REG_ITMP3); \
+ M_FST_INTERN(a, REG_ITMP3, lo); \
+ } \
+ } while (0)
+
+#define M_DST(a,b,disp) \
+ do { \
+ s4 lo = (short) (disp); \
+ s4 hi = (short) (((disp) - lo) >> 16); \
+ if (hi == 0) { \
+ M_DST_INTERN(a,b,lo); \
+ } else { \
+ M_LUI(REG_ITMP3, hi); \
+ M_AADD(b, REG_ITMP3, REG_ITMP3); \
+ M_DST_INTERN(a, REG_ITMP3, lo); \
+ } \
+ } while (0)