2005-02-05 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mono / mini / mini-amd64.h
index ae18f44e8d230898e1e5dd4e72ecedea462fd5c3..ff75a455d3aeb1fe41d1f3bd2f4c6061f345149f 100644 (file)
@@ -78,7 +78,7 @@ struct sigcontext {
 
 #define MONO_MAX_IREGS 16
 
-#define MONO_MAX_FREGS 6
+#define MONO_MAX_FREGS AMD64_XMM_NREG
 
 #define MONO_ARCH_FRAME_ALIGNMENT 16
 
@@ -173,6 +173,12 @@ typedef struct {
 #define MONO_CONTEXT_GET_BP(ctx) ((gpointer)((ctx)->rbp))
 #define MONO_CONTEXT_GET_SP(ctx) ((gpointer)((ctx)->rsp))
 
+#define MONO_INIT_CONTEXT_FROM_FUNC(ctx,start_func) do {       \
+               mono_arch_flush_register_windows ();    \
+               MONO_CONTEXT_SET_IP ((ctx), (start_func));      \
+               MONO_CONTEXT_SET_BP ((ctx), __builtin_frame_address (0));       \
+       } while (0)
+
 #define MONO_ARCH_USE_SIGACTION 1
 
 /*
@@ -205,9 +211,16 @@ typedef struct {
 
 #define MONO_ARCH_EMULATE_CONV_R8_UN    1
 #define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1
+#define MONO_ARCH_EMULATE_FREM 1
 #define MONO_ARCH_NEED_DIV_CHECK 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_OUT_OF_LINE_BBLOCKS 1
+#define MONO_ARCH_HAVE_PIC_AOT 1
+#define MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN 1
 
 gpointer*
 mono_amd64_get_vcall_slot_addr (guint8* code, guint64 *regs);
@@ -215,6 +228,9 @@ mono_amd64_get_vcall_slot_addr (guint8* code, guint64 *regs);
 void
 mono_amd64_exceptions_init (void);
 
+void
+mono_amd64_tramp_init (void);
+
 /* FIXME: */
 //#define MONO_ARCH_BIGMUL_INTRINS 1