Align stack to 16 bytes on mips
authorHervé Poussineau <hpoussin@reactos.org>
Mon, 3 Sep 2007 10:22:13 +0000 (10:22 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Mon, 3 Sep 2007 10:22:13 +0000 (10:22 +0000)
svn path=/trunk/; revision=28810

reactos/lib/3rdparty/mingw/crt1.c
reactos/lib/3rdparty/mingw/wcrt1.c

index 706f6f5..d7961b8 100644 (file)
@@ -215,9 +215,16 @@ __mingw_CRTStartup (void)
    /* Adust references to dllimported data that have non-zero offsets.  */
   _pei386_runtime_relocator ();
 
+#if defined(__i386__)
   /* Align the stack to 16 bytes for the sake of SSE ops in main
      or in functions inlined into main.  */
   asm  __volatile__  ("andl $-16, %%esp" : : : "%esp");
+#elif defined(__mips__)
+  /* Align the stack to 16 bytes */
+  asm  __volatile__  ("andi %sp,%sp,-16" : : : "%sp");
+#else
+#error Unsupported architecture
+#endif
 
   /*
    * Call the main function. If the user does not supply one
index a9a71db..25a6306 100644 (file)
@@ -216,10 +216,13 @@ __mingw_wCRTStartup (void)
    /* Adust references to dllimported data that have non-zero offsets.  */
   _pei386_runtime_relocator ();
 
+#if defined(__i386__)
   /* Align the stack to 16 bytes for the sake of SSE ops in main
      or in functions inlined into main.  */
-#if defined(__i386__)
   asm  __volatile__  ("andl $-16, %%esp" : : : "%esp");
+#elif defined(__mips__)
+  /* Align the stack to 16 bytes */
+  asm  __volatile__  ("andi %sp,%sp,-16" : : : "%sp");
 #else
 #error Unsupported architecture
 #endif