* mini-codegen.c (mono_local_regalloc): Make free mask
[mono.git] / mono / mini / mini-mips.h
index f2c9fabedd2b40bf775c41669a952377909e8c52..c07ae5a18ee1ce20138ab7425538e16339ab9076 100644 (file)
 #define MONO_ARCH_FPSTACK_SIZE 0
 
 /* Parameters used by the register allocator */
-#define MONO_ARCH_HAS_XP_LOCAL_REGALLOC
 
 /* On Mips, for regpairs, the lower-numbered reg is most significant
  * This is true in both big and little endian
  */
 
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+#define RET_REG1 mips_v0
+#define RET_REG2 mips_v1
+#else
+#define RET_REG1 mips_v1
+#define RET_REG2 mips_v0
+#endif
+
 #define MONO_ARCH_INST_SREG2_MASK(ins)         (0)
 #define MONO_ARCH_INST_IS_REGPAIR(desc)                ((desc) == 'V' || (desc) == 'l')
-#define MONO_ARCH_INST_REGPAIR_REG2(desc,hreg1) (((desc) == 'l') ? ((hreg1) + 1) : (((desc) == 'V') ? ((hreg1) - 1) : -1))
+#define MONO_ARCH_INST_REGPAIR_REG2(desc,hreg1) (((desc) == 'l') ? ((hreg1) + 1) : (((desc) == 'V') ? RET_REG2 : -1))
 #define MONO_ARCH_INST_IS_FLOAT(desc)          ((desc == 'f') || (desc == 'g'))
 
 // This define is called to get specific dest register as defined
 // by md file (letter after "dest"). Overwise return -1
 
-#define MONO_ARCH_INST_FIXED_REG(desc)         (((desc) == '0') ? mips_zero : (((desc) == 'a') ? mips_at : ((((desc) == 'v')) ? mips_v0 : (((desc) == 'V') ? mips_v1 : (((desc) == 'g') ? mips_f0 : -1)))))
+#define MONO_ARCH_INST_FIXED_REG(desc)         (((desc) == '0') ? mips_zero : (((desc) == 'a') ? mips_at : ((((desc) == 'v')) ? mips_v0 : (((desc) == 'V') ? RET_REG1 : (((desc) == 'g') ? mips_f0 : -1)))))
 
 #define MONO_ARCH_FRAME_ALIGNMENT 8
 
@@ -167,6 +174,7 @@ typedef struct MonoCompileArch {
 
 #define MONO_ARCH_USE_SIGACTION
 #define MONO_ARCH_NEED_DIV_CHECK 1
+#define MONO_ARCH_ENABLE_NORMALIZE_OPCODES 1
 
 #define MIPS_NUM_REG_ARGS (MIPS_LAST_ARG_REG-MIPS_FIRST_ARG_REG+1)
 #define MIPS_NUM_REG_FPARGS (MIPS_LAST_FPARG_REG-MIPS_FIRST_FPARG_REG+1)
@@ -231,16 +239,10 @@ typedef struct {
                MONO_CONTEXT_SET_SP ((ctx), MONO_CONTEXT_GET_BP (ctx)); \
        } while (0)
 
-#if 0
-#define mono_find_jit_info mono_arch_find_jit_info
-#define CUSTOM_STACK_WALK
-#endif
-
 /* re-attaches with gdb - sometimes causes executable to hang */
 #undef HAVE_BACKTRACE_SYMBOLS
 
 #undef DEBUG_EXCEPTIONS
-#undef CUSTOM_EXCEPTION_HANDLING
 
 #define MONO_ZERO_REG          mips_zero