Module: wine Branch: master Commit: 94f22b56a8139b9648094dad520d8a09466f6560 URL: https://source.winehq.org/git/wine.git/?a=commit;h=94f22b56a8139b9648094dad5...
Author: Paul Gofman pgofman@codeweavers.com Date: Tue Oct 27 14:01:55 2020 +0300
kernel32: Align stack in get_proc_address_wrapper().
Fixes crash on start in Nier Automata after switching kernel32 to PE.
Signed-off-by: Paul Gofman pgofman@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/module.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/dlls/kernel32/module.c b/dlls/kernel32/module.c index 12100c1fe23..9b3a3952307 100644 --- a/dlls/kernel32/module.c +++ b/dlls/kernel32/module.c @@ -320,18 +320,18 @@ __ASM_GLOBAL_FUNC( get_proc_address_wrapper, "movq %rsp,%rbp\n\t" __ASM_SEH(".seh_setframe %rbp,0\n\t") __ASM_CFI(".cfi_def_cfa_register %rbp\n\t") - "subq $0x40,%rsp\n\t" - __ASM_SEH(".seh_stackalloc 0x40\n\t") __ASM_SEH(".seh_endprologue\n\t") - "movaps %xmm0,-0x10(%rbp)\n\t" - "movaps %xmm1,-0x20(%rbp)\n\t" - "movaps %xmm2,-0x30(%rbp)\n\t" - "movaps %xmm3,-0x40(%rbp)\n\t" + "subq $0x60,%rsp\n\t" + "andq $~15,%rsp\n\t" + "movaps %xmm0,0x20(%rsp)\n\t" + "movaps %xmm1,0x30(%rsp)\n\t" + "movaps %xmm2,0x40(%rsp)\n\t" + "movaps %xmm3,0x50(%rsp)\n\t" "call " __ASM_NAME("get_proc_address") "\n\t" - "movaps -0x40(%rbp), %xmm3\n\t" - "movaps -0x30(%rbp), %xmm2\n\t" - "movaps -0x20(%rbp), %xmm1\n\t" - "movaps -0x10(%rbp), %xmm0\n\t" + "movaps 0x50(%rsp), %xmm3\n\t" + "movaps 0x40(%rsp), %xmm2\n\t" + "movaps 0x30(%rsp), %xmm1\n\t" + "movaps 0x20(%rsp), %xmm0\n\t" "leaq 0(%rbp),%rsp\n\t" __ASM_CFI(".cfi_def_cfa_register %rsp\n\t") "popq %rbp\n\t"