ntdll: Also save unwind info for rbp in call_consolidate_callback() on x64.

Fixes Bloons TD 6 crash on start.

Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Paul Gofman 2020-08-21 23:56:41 +03:00 committed by Alexandre Julliard
parent a13f78cca7
commit 057e7f1940
1 changed files with 6 additions and 3 deletions

View File

@ -1029,9 +1029,9 @@ __ASM_GLOBAL_FUNC( call_consolidate_callback,
__ASM_SEH(".seh_pushframe\n\t")
__ASM_SEH(".seh_endprologue\n\t")
"subq $0xf8,%rsp\n\t" /* 10*16 (float regs) + 7*8 (int regs) + 32 (shadow store). */
__ASM_SEH(".seh_stackalloc 0xf8\n\t")
__ASM_CFI(".cfi_adjust_cfa_offset 0xf8\n\t")
"subq $0x108,%rsp\n\t" /* 10*16 (float regs) + 8*8 (int regs) + 32 (shadow store) + 8 (align). */
__ASM_SEH(".seh_stackalloc 0x108\n\t")
__ASM_CFI(".cfi_adjust_cfa_offset 0x108\n\t")
/* Setup CFI unwind to context. */
"movq %rcx,0x10(%rbp)\n\t"
@ -1058,6 +1058,9 @@ __ASM_GLOBAL_FUNC( call_consolidate_callback,
__ASM_CFI(".cfi_escape 0x10,0x20,0x06,0x76,0x10,0x06,0x23,0x90,0x05\n\t") /* %xmm15 */
/* Setup SEH unwind registers restore. */
"movq 0xa0(%rcx),%rax\n\t" /* context->Rbp */
"movq %rax,0x100(%rsp)\n\t"
__ASM_SEH(".seh_savereg %rbp, 0x100\n\t")
"movq 0x90(%rcx),%rax\n\t" /* context->Rbx */
"movq %rax,0x20(%rsp)\n\t"
__ASM_SEH(".seh_savereg %rbx, 0x20\n\t")