2008-07-09 Bill Holmes <billholmes54@gmail.com>
[mono.git] / mono / mini / mini-amd64.h
index ad91173881b5a8eafe5ecc75bdd1597d0afc096d..f28ac132b6d62cb413d150b3c99e43a6b7848051 100644 (file)
@@ -154,6 +154,9 @@ typedef struct MonoCompileArch {
        gpointer cinfo;
        gint32 async_point_count;
        gpointer vret_addr_loc;
+#ifdef PLATFORM_WIN32
+       gpointer        unwindinfo;
+#endif
 } MonoCompileArch;
 
 typedef struct {
@@ -293,6 +296,15 @@ typedef struct {
 void 
 mono_amd64_patch (unsigned char* code, gpointer target) MONO_INTERNAL;
 
+void
+mono_amd64_throw_exception (guint64 dummy1, guint64 dummy2, guint64 dummy3, guint64 dummy4,
+                                                       guint64 dummy5, guint64 dummy6,
+                                                       MonoObject *exc, guint64 rip, guint64 rsp,
+                                                       guint64 rbx, guint64 rbp, guint64 r12, guint64 r13, 
+                                                       guint64 r14, guint64 r15, guint64 rdi, guint64 rsi, 
+                                                       guint64 rax, guint64 rcx, guint64 rdx,
+                                                       guint64 rethrow);
+
 typedef struct {
        guint8 *address;
        guint8 saved_byte;
@@ -300,5 +312,16 @@ typedef struct {
 
 extern MonoBreakpointInfo mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
 
+#ifdef PLATFORM_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 );
+void mono_arch_unwindinfo_add_alloc_stack (gpointer* monoui, gpointer codebegin, gpointer nextip, guint size );
+guint mono_arch_unwindinfo_get_size (gpointer* monoui);
+void mono_arch_unwindinfo_install_unwind_info (gpointer* monoui, gpointer code, guint code_size);
+
+#define MONO_ARCH_HAVE_UNWIND_TABLE 1
+#endif
+
 #endif /* __MONO_MINI_AMD64_H__ */