};
#endif // sun, Solaris x86
-#define MONO_ARCH_SIGNAL_STACK_SIZE (64 * 1024)
+#define MONO_ARCH_SIGNAL_STACK_SIZE (16 * 1024)
#define MONO_ARCH_CPU_SPEC amd64_desc
#define MONO_MAX_FREGS AMD64_XMM_NREG
-#define MONO_ARCH_HAS_XP_LOCAL_REGALLOC
-
/* xmm15 is reserved for use by some opcodes */
#define MONO_ARCH_CALLEE_FREGS 0xef
#define MONO_ARCH_CALLEE_SAVED_FREGS 0
gint32 stack_alloc_size;
gboolean omit_fp, omit_fp_computed;
gpointer cinfo;
+ gint32 async_point_count;
} MonoCompileArch;
typedef struct {
#else
+/*
+ * __builtin_frame_address () is broken on some older gcc versions in the presence of
+ * frame pointer elimination, see bug #82095.
+ */
#define MONO_INIT_CONTEXT_FROM_FUNC(ctx,start_func) do { \
+ int tmp; \
+ guint64 stackptr = (guint64)&tmp; \
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)); \
+ MONO_CONTEXT_SET_BP ((ctx), stackptr); \
+ MONO_CONTEXT_SET_SP ((ctx), stackptr); \
} while (0)
#endif
#define MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE 1
#define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE 1
#define MONO_ARCH_HAVE_CREATE_VARS 1
+#define MONO_ARCH_HAVE_IMT 1
+#define MONO_ARCH_IMT_REG AMD64_R11
+#define MONO_ARCH_COMMON_VTABLE_TRAMPOLINE 1
+
+#define MONO_ARCH_AOT_SUPPORTED 1
gboolean
-mono_amd64_is_sse2 (void);
+mono_amd64_is_sse2 (void) MONO_INTERNAL;
+
+void
+mono_amd64_patch (unsigned char* code, gpointer target) MONO_INTERNAL;
#endif /* __MONO_MINI_AMD64_H__ */