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>
This commit is contained in:
Paul Gofman 2020-10-27 14:01:55 +03:00 committed by Alexandre Julliard
parent 6abf518ece
commit 94f22b56a8
1 changed files with 10 additions and 10 deletions

View File

@ -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"