X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-ia64.h;h=56d142d4bbe877ab9ed40d8d844b2a77ee6be4c6;hb=0ca24d9297eede82775503cb58ffca7efee2159d;hp=45d4b37cc8935ff20a49a56a985ef5040e3b9f06;hpb=d470e0ca31c5aeae86f8f2bb816eb8e2d78f6471;p=mono.git diff --git a/mono/mini/mini-ia64.h b/mono/mini/mini-ia64.h index 45d4b37cc89..56d142d4bbe 100644 --- a/mono/mini/mini-ia64.h +++ b/mono/mini/mini-ia64.h @@ -5,6 +5,8 @@ #include +#define MONO_ARCH_CPU_SPEC ia64_desc + /* FIXME: regset -> 128 bits ! */ #define MONO_MAX_IREGS 128 @@ -12,10 +14,8 @@ /* Parameters used by the register allocator */ -#define MONO_ARCH_HAS_XP_LOCAL_REGALLOC - /* r8..r11, r14..r29 */ -#define MONO_ARCH_CALLEE_REGS ((regmask_t)(0x700UL) | (regmask_t)(0x3fffc000UL)) +#define MONO_ARCH_CALLEE_REGS ((regmask_t)(0xf00UL) | (regmask_t)(0x3fffc000UL)) /* f6..f15, f34..f127 */ /* FIXME: Use the upper 64 bits as well */ @@ -51,6 +51,9 @@ struct MonoLMF { typedef struct MonoContext { unw_cursor_t cursor; + /* Whenever the ip in 'cursor' points to the ip where the exception happened */ + /* This is true for the initial context for exceptions thrown from signal handlers */ + gboolean precise_ip; } MonoContext; typedef struct MonoCompileArch { @@ -84,8 +87,12 @@ mono_ia64_context_get_ip (MonoContext *ctx) err = unw_get_reg (&ctx->cursor, UNW_IA64_IP, &ip); g_assert (err == 0); - /* Subtrack 1 so ip points into the actual instruction */ - return ip - 1; + if (ctx->precise_ip) { + return ip; + } else { + /* Subtrack 1 so ip points into the actual instruction */ + return ip - 1; + } } static inline unw_word_t @@ -157,7 +164,7 @@ 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); @@ -175,14 +182,12 @@ unw_dyn_region_info_t* mono_ia64_create_unwind_region (Ia64CodegenState *code); #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 -#define MONO_ARCH_HAVE_CREATE_VARS 1 +#define MONO_ARCH_HAVE_ATOMIC_EXCHANGE 1 +#define MONO_ARCH_HAVE_IMT 1 +#define MONO_ARCH_HAVE_GENERALIZED_IMT_THUNK 1 #endif /* __MONO_MINI_IA64_H__ */