Merge pull request #2802 from BrzVlad/feature-evacuation-opt2
[mono.git] / mono / utils / mono-context.c
index a05c7bab76d9e0d1701bd879e4abf7f2311f1a55..632513d874f7c8069bd6a1ee0d57c23b1c06bdd3 100644 (file)
@@ -3,6 +3,7 @@
  *
  *
  * Copyright (c) 2011 Novell, Inc (http://www.novell.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
  */
 
 #include <mono/utils/mono-sigcontext.h>
@@ -34,7 +35,7 @@
 void
 mono_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
 {
-#if defined (__native_client__)
+#if defined (__native_client__) || defined (HOST_WATCHOS)
        printf("WARNING: mono_arch_sigctx_to_monoctx() called!\n");
        mctx->eax = 0xDEADBEEF;
        mctx->ebx = 0xDEADBEEF;
@@ -45,7 +46,9 @@ mono_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
        mctx->esi = 0xDEADBEEF;
        mctx->edi = 0xDEADBEEF;
        mctx->eip = 0xDEADBEEF;
-#elif defined(MONO_SIGNAL_USE_SIGACTION)
+#elif MONO_CROSS_COMPILE
+       g_assert_not_reached ();
+#elif defined(MONO_SIGNAL_USE_UCONTEXT_T)
        ucontext_t *ctx = (ucontext_t*)sigctx;
        
        mctx->eax = UCONTEXT_REG_EAX (ctx);
@@ -87,9 +90,11 @@ mono_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
 void
 mono_monoctx_to_sigctx (MonoContext *mctx, void *sigctx)
 {
-#if defined(__native_client__)
+#if defined(__native_client__) || defined(HOST_WATCHOS)
        printf("WARNING: mono_arch_monoctx_to_sigctx() called!\n");
-#elif defined(MONO_SIGNAL_USE_SIGACTION)
+#elif MONO_CROSS_COMPILE
+       g_assert_not_reached ();
+#elif defined(MONO_SIGNAL_USE_UCONTEXT_T)
        ucontext_t *ctx = (ucontext_t*)sigctx;
 
        UCONTEXT_REG_EAX (ctx) = mctx->eax;
@@ -143,7 +148,9 @@ mono_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
        printf("WARNING: mono_arch_sigctx_to_monoctx() called!\n");
 #endif
 
-#if defined(MONO_SIGNAL_USE_SIGACTION)
+#ifdef MONO_CROSS_COMPILE
+       g_assert_not_reached ();
+#elif defined(MONO_SIGNAL_USE_UCONTEXT_T)
        ucontext_t *ctx = (ucontext_t*)sigctx;
 
        mctx->gregs [AMD64_RAX] = UCONTEXT_REG_RAX (ctx);
@@ -184,25 +191,7 @@ mono_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
        mctx->gregs [AMD64_R14] = context->R14;
        mctx->gregs [AMD64_R15] = context->R15;
 #else
-       MonoContext *ctx = (MonoContext *)sigctx;
-
-       mctx->gregs [AMD64_RAX] = ctx->gregs [AMD64_RAX];
-       mctx->gregs [AMD64_RBX] = ctx->gregs [AMD64_RBX];
-       mctx->gregs [AMD64_RCX] = ctx->gregs [AMD64_RCX];
-       mctx->gregs [AMD64_RDX] = ctx->gregs [AMD64_RDX];
-       mctx->gregs [AMD64_RBP] = ctx->gregs [AMD64_RBP];
-       mctx->gregs [AMD64_RSP] = ctx->gregs [AMD64_RSP];
-       mctx->gregs [AMD64_RSI] = ctx->gregs [AMD64_RSI];
-       mctx->gregs [AMD64_RDI] = ctx->gregs [AMD64_RDI];
-       mctx->gregs [AMD64_R8] = ctx->gregs [AMD64_R8];
-       mctx->gregs [AMD64_R9] = ctx->gregs [AMD64_R9];
-       mctx->gregs [AMD64_R10] = ctx->gregs [AMD64_R10];
-       mctx->gregs [AMD64_R11] = ctx->gregs [AMD64_R11];
-       mctx->gregs [AMD64_R12] = ctx->gregs [AMD64_R12];
-       mctx->gregs [AMD64_R13] = ctx->gregs [AMD64_R13];
-       mctx->gregs [AMD64_R14] = ctx->gregs [AMD64_R14];
-       mctx->gregs [AMD64_R15] = ctx->gregs [AMD64_R15];
-       mctx->gregs [AMD64_RIP] = ctx->gregs [AMD64_RIP];
+       g_assert_not_reached ();
 #endif
 }
 
@@ -213,7 +202,9 @@ mono_monoctx_to_sigctx (MonoContext *mctx, void *sigctx)
   printf("WARNING: mono_arch_monoctx_to_sigctx() called!\n");
 #endif
 
-#if defined(MONO_SIGNAL_USE_SIGACTION)
+#ifdef MONO_CROSS_COMPILE
+       g_assert_not_reached ();
+#elif defined(MONO_SIGNAL_USE_UCONTEXT_T)
        ucontext_t *ctx = (ucontext_t*)sigctx;
 
        UCONTEXT_REG_RAX (ctx) = mctx->gregs [AMD64_RAX];
@@ -254,25 +245,7 @@ mono_monoctx_to_sigctx (MonoContext *mctx, void *sigctx)
        context->R14 = mctx->gregs [AMD64_R14];
        context->R15 = mctx->gregs [AMD64_R15];
 #else
-       MonoContext *ctx = (MonoContext *)sigctx;
-
-       ctx->gregs [AMD64_RAX] = mctx->gregs [AMD64_RAX];
-       ctx->gregs [AMD64_RBX] = mctx->gregs [AMD64_RBX];
-       ctx->gregs [AMD64_RCX] = mctx->gregs [AMD64_RCX];
-       ctx->gregs [AMD64_RDX] = mctx->gregs [AMD64_RDX];
-       ctx->gregs [AMD64_RBP] = mctx->gregs [AMD64_RBP];
-       ctx->gregs [AMD64_RSP] = mctx->gregs [AMD64_RSP];
-       ctx->gregs [AMD64_RSI] = mctx->gregs [AMD64_RSI];
-       ctx->gregs [AMD64_RDI] = mctx->gregs [AMD64_RDI];
-       ctx->gregs [AMD64_R8] = mctx->gregs [AMD64_R8];
-       ctx->gregs [AMD64_R9] = mctx->gregs [AMD64_R9];
-       ctx->gregs [AMD64_R10] = mctx->gregs [AMD64_R10];
-       ctx->gregs [AMD64_R11] = mctx->gregs [AMD64_R11];
-       ctx->gregs [AMD64_R12] = mctx->gregs [AMD64_R12];
-       ctx->gregs [AMD64_R13] = mctx->gregs [AMD64_R13];
-       ctx->gregs [AMD64_R14] = mctx->gregs [AMD64_R14];
-       ctx->gregs [AMD64_R15] = mctx->gregs [AMD64_R15];
-       ctx->gregs [AMD64_RIP] = mctx->gregs [AMD64_RIP];
+       g_assert_not_reached ();
 #endif
 }