Implement ARCH_STORE_REGS for msvc.
authorJonathan Chambers <joncham@gmail.com>
Fri, 31 Aug 2012 01:39:49 +0000 (21:39 -0400)
committerJonathan Chambers <joncham@gmail.com>
Fri, 31 Aug 2012 01:39:49 +0000 (21:39 -0400)
mono/metadata/sgen-archdep.h

index 616b5831ad42d74e0710c5d9a7f3d669b7af5228..5da555bf5b4bfba3c0ed7e0c740a60f760196e6c 100644 (file)
 #ifdef MONO_ARCH_HAS_MONO_CONTEXT
 #define USE_MONO_CTX
 #else
+#ifdef _MSC_VER
+#define ARCH_STORE_REGS(ptr) __asm {   \
+               __asm mov [ptr], edi \
+               __asm mov [ptr+4], esi \
+               __asm mov [ptr+8], ebx \
+               __asm mov [ptr+12], edx \
+               __asm mov [ptr+16], ecx \
+               __asm mov [ptr+20], eax \
+               __asm mov [ptr+24], ebp \
+               __asm mov [ptr+28], esp \
+       }
+#else
 #define ARCH_STORE_REGS(ptr)   \
        __asm__ __volatile__(   \
                "mov %%edi,0(%0)\n"     \
@@ -53,6 +65,7 @@
                : "r" (ptr)     \
        )
 #endif
+#endif
 
 /*FIXME, move this to mono-sigcontext as this is generaly useful.*/
 #define ARCH_SIGCTX_SP(ctx)    (UCONTEXT_REG_ESP ((ctx)))