projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2010-03-01 Zoltan Varga <vargaz@gmail.com>
[mono.git]
/
mono
/
mini
/
mini-ia64.h
diff --git
a/mono/mini/mini-ia64.h
b/mono/mini/mini-ia64.h
index 45d4b37cc8935ff20a49a56a985ef5040e3b9f06..34ac5c0b8022deec943f9ebaed9dcf3ae81d92ed 100644
(file)
--- a/
mono/mini/mini-ia64.h
+++ b/
mono/mini/mini-ia64.h
@@
-5,6
+5,8
@@
#include <mono/arch/ia64/ia64-codegen.h>
#include <mono/arch/ia64/ia64-codegen.h>
+#define MONO_ARCH_CPU_SPEC ia64_desc
+
/* FIXME: regset -> 128 bits ! */
#define MONO_MAX_IREGS 128
/* FIXME: regset -> 128 bits ! */
#define MONO_MAX_IREGS 128
@@
-12,10
+14,8
@@
/* Parameters used by the register allocator */
/* Parameters used by the register allocator */
-#define MONO_ARCH_HAS_XP_LOCAL_REGALLOC
-
/* r8..r11, r14..r29 */
/* r8..r11, r14..r29 */
-#define MONO_ARCH_CALLEE_REGS ((regmask_t)(0x
7
00UL) | (regmask_t)(0x3fffc000UL))
+#define MONO_ARCH_CALLEE_REGS ((regmask_t)(0x
f
00UL) | (regmask_t)(0x3fffc000UL))
/* f6..f15, f34..f127 */
/* FIXME: Use the upper 64 bits as well */
/* 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;
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 {
} 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);
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
}
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_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);
#endif
unw_dyn_region_info_t* mono_ia64_create_unwind_region (Ia64CodegenState *code);
@@
-175,14
+182,11
@@
unw_dyn_region_info_t* mono_ia64_create_unwind_region (Ia64CodegenState *code);
#define MONO_ARCH_HAVE_IS_INT_OVERFLOW 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_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_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
#endif /* __MONO_MINI_IA64_H__ */
#endif /* __MONO_MINI_IA64_H__ */