X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-alpha.h;h=40d6e4cec80977eaf908c262c4e1616439e632b2;hb=d0b97d4bd5f42978987b4ae1d7cad18bedd3b393;hp=15a844b65dafa2bef64be69ef3874e8c0e1ed2a1;hpb=a3ea7ceb4d4f5e2cb8ea421313e8939640fb898c;p=mono.git diff --git a/mono/mini/mini-alpha.h b/mono/mini/mini-alpha.h index 15a844b65da..40d6e4cec80 100644 --- a/mono/mini/mini-alpha.h +++ b/mono/mini/mini-alpha.h @@ -5,8 +5,9 @@ #include +#define MONO_ARCH_CPU_SPEC alpha_desc + /* Parameters used by the register allocator */ -#define MONO_ARCH_HAS_XP_LOCAL_REGALLOC /* Max number of integer registers (all int regs). Required definition */ #define MONO_MAX_IREGS 31 @@ -50,9 +51,6 @@ typedef struct MonoCompileArch gint32 params_stack_size; // Stack size reserved for call params by this compile method gpointer got_data; - -// gpointer litpool; -// glong litsize; glong bwx; } MonoCompileArch; @@ -67,6 +65,9 @@ struct MonoLMF guint64 eip; // RA ? or caller PC guint64 rsp; // SP ? caller SP guint64 rgp; // GP + guint64 r14; + guint64 r13; + guint64 r12; }; #define MONO_ARCH_FRAME_ALIGNMENT 8 @@ -74,7 +75,12 @@ struct MonoLMF // Regs available for allocation in compile unit // For Alpha: r1-r14, r22-r25 -#define MONO_ARCH_CALLEE_REGS ((regmask_t)0x03C07FFF) +// 1111 1111 1111 1111 1111 1111 1111 1111 +// 098 7654 3210 9876 5432 1098 7654 3210 +// RRRR RRLL LLAA AAAA RLLL LLLL LLLL LLLL - No global regs +// RRRR RRLL LLAA AAAA RGGG LLLL LLLL LLLL - 3 global regs +//#define MONO_ARCH_CALLEE_REGS ((regmask_t)0x03C07FFF) +#define MONO_ARCH_CALLEE_REGS ((regmask_t)0x03C00FFF) #define MONO_ARCH_CALLEE_FREGS ((regmask_t)0x03C07FFF) // These are the regs that are considered global @@ -86,8 +92,8 @@ struct MonoLMF // For Alpha - r9-r14. Actually later we could use some of the // upper "t" regs, since local reg allocator doesn't like registers // very much, so we could safely keep vars in them -//#define MONO_ARCH_CALLEE_SAVED_REGS ((regmask_t)0xFC0080000) -#define MONO_ARCH_CALLEE_SAVED_REGS ((regmask_t)0x3C00FE00) +//#define MONO_ARCH_CALLEE_SAVED_REGS ((regmask_t)0x3C00FE00) +#define MONO_ARCH_CALLEE_SAVED_REGS ((regmask_t)0x3C00F000) #define MONO_ARCH_CALLEE_SAVED_FREGS 0 #define ALPHA_IS_CALLEE_SAVED_REG(reg) (MONO_ARCH_CALLEE_SAVED_REGS & (1 << (reg))) @@ -107,13 +113,11 @@ struct MonoLMF mono_arch_flush_register_windows (); \ MONO_CONTEXT_SET_IP ((ctx), (start_func)); \ MONO_CONTEXT_SET_BP ((ctx), __builtin_frame_address (0)); \ + MONO_CONTEXT_SET_SP ((ctx), __builtin_frame_address (0)); \ } while (0) #define MONO_ARCH_USE_SIGACTION 1 -/* Use prerefered create trampoline callback method */ -#define MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE - //#define MONO_ARCH_INST_FIXED_REG(desc) ((desc == 'r') ? IA64_R8 : ((desc == 'g') ? 8 : -1)) //#define MONO_ARCH_INST_IS_FLOAT(desc) ((desc == 'f') || (desc == 'g')) #define MONO_ARCH_INST_SREG2_MASK(ins) (0) @@ -125,10 +129,6 @@ struct MonoLMF //#define MONO_ARCH_INST_FIXED_REG(desc) (-1) #define MONO_ARCH_INST_FIXED_REG(desc) ((desc == 'o') ? alpha_at : ( (desc == 'a') ? alpha_r0 : -1) ) -//#define MONO_ARCH_IS_GLOBAL_IREG(reg) (is_hard_ireg (reg) && ((reg) >= cfg->arch.reg_local0) && ((reg) < cfg->arch.reg_out0)) - -#define MONO_ARCH_HAVE_CREATE_VARS 1 - #if 0 /* r8..r11, r14..r29 */ @@ -272,40 +272,37 @@ mono_ia64_context_get_fp (MonoContext *ctx) #define MONO_ARCH_USE_SIGACTION 1 #ifdef HAVE_WORKING_SIGALTSTACK -#define MONO_ARCH_SIGSEGV_ON_ALTSTACK +/*#define MONO_ARCH_SIGSEGV_ON_ALTSTACK*/ #endif unw_dyn_region_info_t* mono_ia64_create_unwind_region (Ia64CodegenState *code); -#define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS 1 #define MONO_ARCH_NO_EMULATE_MUL_IMM 1 #define MONO_ARCH_HAVE_IS_INT_OVERFLOW 1 -#define MONO_ARCH_ENABLE_EMIT_STATE_OPT 1 #define MONO_ARCH_HAVE_INVALIDATE_METHOD 1 -#define MONO_ARCH_HAVE_THROW_CORLIB_EXCEPTION 1 -#define MONO_ARCH_HAVE_PIC_AOT 1 -#define MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN 1 -#define MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE 1 -#define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE 1 #define MONO_ARCH_HAVE_SAVE_UNWIND_INFO 1 #endif -#define MONO_ARCH_HAVE_THROW_CORLIB_EXCEPTION 1 +#define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS 1 #define MONO_ARCH_EMULATE_CONV_R8_UN 1 #define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1 -#define MONO_ARCH_EMULATE_LCONV_TO_R8 1 +//#define MONO_ARCH_EMULATE_LCONV_TO_R8 1 #define MONO_ARCH_EMULATE_FREM 1 #define MONO_ARCH_EMULATE_MUL_DIV 1 #define MONO_ARCH_EMULATE_LONG_MUL_OPTS 1 #define MONO_ARCH_NEED_DIV_CHECK 1 -#define MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN 1 #define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE 1 +typedef struct { + guint8 *address; + guint8 *saved_byte; +} MonoBreakpointInfo; +extern MonoBreakpointInfo mono_breakpoint_info[MONO_BREAKPOINT_ARRAY_SIZE]; #endif /* __MONO_MINI_ALPHA_H__ */