[sgen] Move the independent parts of SGen to a separate library.
[mono.git] / mono / mini / mini-amd64.h
old mode 100755 (executable)
new mode 100644 (file)
index f5c5282..059ce67
@@ -207,12 +207,13 @@ typedef struct MonoCompileArch {
 #endif
        gpointer seq_point_info_var;
        gpointer ss_trigger_page_var;
+       gpointer ss_tramp_var;
        gpointer lmf_var;
 } MonoCompileArch;
 
 
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
 #define PARAM_REGS 4
 #else
 #define PARAM_REGS 6
@@ -220,8 +221,7 @@ typedef struct MonoCompileArch {
 
 /* Structure used by the sequence points in AOTed code */
 typedef struct {
-       gpointer ss_trigger_page;
-       gpointer bp_trigger_page;
+       gpointer ss_tramp_addr;
        gpointer bp_addrs [MONO_ZERO_LEN_ARRAY];
 } SeqPointInfo;
 
@@ -231,8 +231,8 @@ typedef struct {
        guint8 *ret;
 } DynCallArgs;
 
-
 #define MONO_CONTEXT_SET_LLVM_EXC_REG(ctx, exc) do { (ctx)->rax = (gsize)exc; } while (0)
+#define MONO_CONTEXT_SET_LLVM_EH_SELECTOR_REG(ctx, sel) do { (ctx)->rdx = (gsize)(sel); } while (0)
 
 #define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf)
 
@@ -270,7 +270,7 @@ typedef struct {
  */
 #define MONO_ARCH_VARARG_ICALLS 1
 
-#if !defined( HOST_WIN32 ) && !defined(__native_client__) && !defined(__native_client_codegen__)
+#if (!defined( HOST_WIN32 ) && !defined(__native_client__) && !defined(__native_client_codegen__)) && defined (HAVE_SIGACTION)
 
 #define MONO_ARCH_USE_SIGACTION 1
 
@@ -286,14 +286,16 @@ typedef struct {
 #define MONO_ARCH_NOMAP32BIT 1
 #endif
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
 #define MONO_AMD64_ARG_REG1 AMD64_RCX
 #define MONO_AMD64_ARG_REG2 AMD64_RDX
 #define MONO_AMD64_ARG_REG3 AMD64_R8
+#define MONO_AMD64_ARG_REG4 AMD64_R9
 #else
 #define MONO_AMD64_ARG_REG1 AMD64_RDI
 #define MONO_AMD64_ARG_REG2 AMD64_RSI
 #define MONO_AMD64_ARG_REG3 AMD64_RDX
+#define MONO_AMD64_ARG_REG4 AMD64_RCX
 #endif
 
 #define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS
@@ -317,6 +319,7 @@ typedef struct {
  * clobbered across method call boundaries.
  */
 #define MONO_ARCH_RGCTX_REG MONO_ARCH_IMT_REG
+#define MONO_ARCH_EXC_REG AMD64_RAX
 #define MONO_ARCH_HAVE_CMOV_OPS 1
 #define MONO_ARCH_HAVE_NOTIFY_PENDING_EXC 1
 #define MONO_ARCH_HAVE_EXCEPTIONS_INIT 1
@@ -325,6 +328,7 @@ typedef struct {
 #define MONO_ARCH_HAVE_LIVERANGE_OPS 1
 #define MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX 1
 #define MONO_ARCH_MONITOR_OBJECT_REG MONO_AMD64_ARG_REG1
+#define MONO_ARCH_MONITOR_LOCK_TAKEN_REG MONO_AMD64_ARG_REG2
 #define MONO_ARCH_HAVE_GET_TRAMPOLINES 1
 
 #define MONO_ARCH_AOT_SUPPORTED 1
@@ -332,8 +336,6 @@ typedef struct {
 #define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1
 #endif
 
-#define MONO_ARCH_ENABLE_MONITOR_IL_FASTPATH 1
-
 #define MONO_ARCH_SUPPORT_TASKLETS 1
 
 #define MONO_ARCH_GSHARED_SUPPORTED 1
@@ -352,6 +354,8 @@ typedef struct {
 #define MONO_ARCH_HAVE_OP_TAIL_CALL 1
 #define MONO_ARCH_HAVE_TRANSLATE_TLS_OFFSET 1
 #define MONO_ARCH_HAVE_DUMMY_INIT 1
+#define MONO_ARCH_HAVE_SDB_TRAMPOLINES 1
+#define MONO_ARCH_HAVE_PATCH_CODE_NEW 1
 
 #if defined(TARGET_OSX) || defined(__linux__)
 #define MONO_ARCH_HAVE_TLS_GET_REG 1
@@ -371,31 +375,31 @@ typedef struct {
        } while (0)
 
 void 
-mono_amd64_patch (unsigned char* code, gpointer target) MONO_INTERNAL;
+mono_amd64_patch (unsigned char* code, gpointer target);
 
 void
 mono_amd64_throw_exception (guint64 dummy1, guint64 dummy2, guint64 dummy3, guint64 dummy4,
                                                        guint64 dummy5, guint64 dummy6,
                                                        mgreg_t *regs, mgreg_t rip,
-                                                       MonoObject *exc, gboolean rethrow) MONO_INTERNAL;
+                                                       MonoObject *exc, gboolean rethrow);
 
 void
 mono_amd64_throw_corlib_exception (guint64 dummy1, guint64 dummy2, guint64 dummy3, guint64 dummy4,
                                                                   guint64 dummy5, guint64 dummy6,
                                                                   mgreg_t *regs, mgreg_t rip,
-                                                                  guint32 ex_token_index, gint64 pc_offset) MONO_INTERNAL;
+                                                                  guint32 ex_token_index, gint64 pc_offset);
 
 guint64
-mono_amd64_get_original_ip (void) MONO_INTERNAL;
+mono_amd64_get_original_ip (void);
 
 guint8*
-mono_amd64_emit_tls_get (guint8* code, int dreg, int tls_offset) MONO_INTERNAL;
+mono_amd64_emit_tls_get (guint8* code, int dreg, int tls_offset);
 
 gboolean
-mono_amd64_have_tls_get (void) MONO_INTERNAL;
+mono_amd64_have_tls_get (void);
 
 GSList*
-mono_amd64_get_exception_trampolines (gboolean aot) MONO_INTERNAL;
+mono_amd64_get_exception_trampolines (gboolean aot);
 
 int
 mono_amd64_get_tls_gs_offset (void) MONO_LLVM_INTERNAL;
@@ -407,7 +411,7 @@ typedef struct {
 
 extern MonoBreakpointInfo mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
 
 void mono_arch_unwindinfo_add_push_nonvol (gpointer* monoui, gpointer codebegin, gpointer nextip, guchar reg );
 void mono_arch_unwindinfo_add_set_fpreg (gpointer* monoui, gpointer codebegin, gpointer nextip, guchar reg );