[x86/Linux] 16-byte aligned UMThunkStubs (dotnet/coreclr#9997)
authorJonghyun Park <parjong@gmail.com>
Thu, 9 Mar 2017 01:19:57 +0000 (10:19 +0900)
committerJan Vorlicek <janvorli@microsoft.com>
Thu, 9 Mar 2017 01:19:57 +0000 (02:19 +0100)
Commit migrated from https://github.com/dotnet/coreclr/commit/fc588bec4852a1beedf9a13b78b28b550696b9eb

src/coreclr/src/vm/i386/asmhelpers.S

index 790c063..08d3bc8 100644 (file)
@@ -546,7 +546,11 @@ NESTED_ENTRY UM2MThunk_WrapperHelper, _TEXT, NoHandler
     mov     eax, [esp + 20] // pEntryThunk
     mov     ecx, [esp + 24] // pThread
     mov     ebx, [esp + 8]  // pThunkArgs
-    call    [esp + 16]      // pAddr
+
+    sub     esp, 8
+    CHECK_STACK_ALIGNMENT
+    call    [esp + 16 + 8]      // pAddr
+    add     esp, 8
 
     pop     ebx
 
@@ -557,9 +561,12 @@ NESTED_ENTRY UMThunkStubRareDisable, _TEXT, NoHandler
     push    eax
     push    ecx
 
+    sub     esp, 12
     push    eax          // Push the UMEntryThunk
     push    ecx          // Push thread
+    CHECK_STACK_ALIGNMENT
     call    C_FUNC(UMThunkStubRareDisableWorker)
+    add     esp, 12
 
     pop     ecx
     pop     eax