[llvm] Fix LLVM support after e7166e4f9cee4eb896f1a2ff0290e0b9d8fedacb.
[mono.git] / mono / mini / mini-amd64.h
index 25d9d57fc64cb7388e977f44d1925ee1a43a7620..526e5b00c195d3652e55a35ef1766472b3ed90b5 100644 (file)
@@ -171,7 +171,8 @@ struct MonoLMF {
         * the caller ip is saved.
         * If the second lowest bit is set, then this is a MonoLMFExt structure, and
         * the other fields are not valid.
-        * If the third lowest bit is set, then this is a MonoLMFTramp structure.
+        * If the third lowest bit is set, then this is a MonoLMFTramp structure, and
+        * the 'rbp' field is not valid.
         */
        gpointer    previous_lmf;
 #if defined(__default_codegen__) || defined(HOST_WIN32)
@@ -188,7 +189,7 @@ struct MonoLMF {
 /* LMF structure used by the JIT trampolines */
 typedef struct {
        struct MonoLMF lmf;
-       guint64 *regs;
+       MonoContext *ctx;
        gpointer lmf_addr;
 } MonoLMFTramp;
 
@@ -208,17 +209,20 @@ typedef struct MonoCompileArch {
        gpointer seq_point_info_var;
        gpointer ss_trigger_page_var;
        gpointer ss_tramp_var;
+       gpointer bp_tramp_var;
        gpointer lmf_var;
 } MonoCompileArch;
 
-
-
 #ifdef TARGET_WIN32
 #define PARAM_REGS 4
 #else
 #define PARAM_REGS 6
 #endif
 
+typedef struct {
+       int dummy;
+} GSharedVtCallInfo;
+
 /* Structure used by the sequence points in AOTed code */
 typedef struct {
        gpointer ss_tramp_addr;
@@ -229,6 +233,7 @@ typedef struct {
        mgreg_t regs [PARAM_REGS];
        mgreg_t res;
        guint8 *ret;
+       guint8 buffer [256];
 } DynCallArgs;
 
 #define MONO_CONTEXT_SET_LLVM_EXC_REG(ctx, exc) do { (ctx)->gregs [AMD64_RAX] = (gsize)exc; } while (0)
@@ -320,13 +325,10 @@ typedef struct {
 #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
 #define MONO_ARCH_HAVE_GENERALIZED_IMT_THUNK 1
 #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
@@ -340,7 +342,6 @@ typedef struct {
 #define MONO_ARCH_DYN_CALL_SUPPORTED 1
 #define MONO_ARCH_DYN_CALL_PARAM_AREA 0
 
-#define MONO_ARCH_HAVE_LLVM_IMT_TRAMPOLINE 1
 #define MONO_ARCH_LLVM_SUPPORTED 1
 #define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD 1
 #define MONO_ARCH_HAVE_CARD_TABLE_WBARRIER 1
@@ -356,10 +357,19 @@ typedef struct {
 #define MONO_ARCH_HAVE_PATCH_CODE_NEW 1
 #define MONO_ARCH_HAVE_OP_GENERIC_CLASS_INIT 1
 
+#if defined(TARGET_OSX) || defined(__linux__)
+#define MONO_ARCH_HAVE_UNWIND_BACKTRACE 1
+#endif
+
 #if defined(TARGET_OSX) || defined(__linux__)
 #define MONO_ARCH_HAVE_TLS_GET_REG 1
 #endif
 
+#if defined(TARGET_APPLETVOS)
+/* No signals */
+#define MONO_ARCH_NEED_DIV_CHECK 1
+#endif
+
 /* Used for optimization, not complete */
 #define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)
 
@@ -386,6 +396,11 @@ mono_amd64_throw_corlib_exception (guint64 dummy1, guint64 dummy2, guint64 dummy
                                                                   guint64 dummy5, guint64 dummy6,
                                                                   MonoContext *mctx, guint32 ex_token_index, gint64 pc_offset);
 
+void
+mono_amd64_resume_unwind (guint64 dummy1, guint64 dummy2, guint64 dummy3, guint64 dummy4,
+                                                 guint64 dummy5, guint64 dummy6,
+                                                 MonoContext *mctx, guint32 dummy7, gint64 dummy8);
+
 guint64
 mono_amd64_get_original_ip (void);
 
@@ -401,13 +416,6 @@ mono_amd64_get_exception_trampolines (gboolean aot);
 int
 mono_amd64_get_tls_gs_offset (void) MONO_LLVM_INTERNAL;
 
-typedef struct {
-       guint8 *address;
-       guint8 saved_byte;
-} MonoBreakpointInfo;
-
-extern MonoBreakpointInfo mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
-
 #ifdef TARGET_WIN32
 
 void mono_arch_unwindinfo_add_push_nonvol (gpointer* monoui, gpointer codebegin, gpointer nextip, guchar reg );