New mach support code to support setting thread context.
[mono.git] / mono / utils / mach-support-amd64.c
index 7c4e6112ef2d42ea9bf293ef37278147bfbc2a49..4fe13c94b8887523fe18f16d79660232070f1431 100644 (file)
@@ -47,6 +47,15 @@ mono_mach_arch_thread_state_to_mcontext (thread_state_t state, mcontext_t contex
        ctx->__ss = *arch_state;
 }
 
+void
+mono_mach_arch_mcontext_to_thread_state (mcontext_t context, thread_state_t state)
+{
+       x86_thread_state64_t *arch_state = (x86_thread_state64_t *) state;
+       struct __darwin_mcontex64 *ctx = (struct __darwin_mcontex64 *) context;
+
+       *arch_state = ctx->__ss;
+}
+
 int
 mono_mach_arch_get_thread_state_size ()
 {
@@ -66,6 +75,12 @@ mono_mach_arch_get_thread_state (thread_port_t thread, thread_state_t state, mac
        return ret;
 }
 
+kern_return_t
+mono_mach_arch_set_thread_state (thread_port_t thread, thread_state_t state, mach_msg_type_number_t count)
+{
+       return thread_set_state (thread, x86_THREAD_STATE64, state, count);
+}
+
 void *
 mono_mach_arch_get_tls_value_from_thread (pthread_t thread, guint32 key)
 {