Alexandre Julliard : ntdll: Preserve registers in call_thread_entry_point on x86_64.
Module: wine Branch: master Commit: 39d54523a31594d25a2fcda44f4fe75f2d4fc97d URL: http://source.winehq.org/git/wine.git/?a=commit;h=39d54523a31594d25a2fcda44f... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Sun May 16 12:34:07 2010 +0200 ntdll: Preserve registers in call_thread_entry_point on x86_64. --- dlls/ntdll/signal_x86_64.c | 25 +++++++++++++++++++++---- 1 files changed, 21 insertions(+), 4 deletions(-) diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index f3344ad..3411110 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -2992,16 +2992,33 @@ void call_thread_func( LPTHREAD_START_ROUTINE entry, void *arg, void *frame ) extern void DECLSPEC_NORETURN call_thread_entry_point( LPTHREAD_START_ROUTINE entry, void *arg ); __ASM_GLOBAL_FUNC( call_thread_entry_point, - "subq $8,%rsp\n\t" - __ASM_CFI(".cfi_adjust_cfa_offset 8\n\t") + "subq $56,%rsp\n\t" + __ASM_CFI(".cfi_adjust_cfa_offset 56\n\t") + "movq %rbp,48(%rsp)\n\t" + __ASM_CFI(".cfi_rel_offset %rbp,48\n\t") + "movq %rbx,40(%rsp)\n\t" + __ASM_CFI(".cfi_rel_offset %rbx,40\n\t") + "movq %r12,32(%rsp)\n\t" + __ASM_CFI(".cfi_rel_offset %r12,32\n\t") + "movq %r13,24(%rsp)\n\t" + __ASM_CFI(".cfi_rel_offset %r13,24\n\t") + "movq %r14,16(%rsp)\n\t" + __ASM_CFI(".cfi_rel_offset %r14,16\n\t") + "movq %r15,8(%rsp)\n\t" + __ASM_CFI(".cfi_rel_offset %r15,8\n\t") "movq %rsp,%rdx\n\t" "call " __ASM_NAME("call_thread_func") ); extern void DECLSPEC_NORETURN call_thread_exit_func( int status, void (*func)(int), void *frame ); __ASM_GLOBAL_FUNC( call_thread_exit_func, - "subq $8,%rsp\n\t" - __ASM_CFI(".cfi_adjust_cfa_offset 8\n\t") "movq %rdx,%rsp\n\t" + __ASM_CFI(".cfi_adjust_cfa_offset 56\n\t") + __ASM_CFI(".cfi_rel_offset %rbp,48\n\t") + __ASM_CFI(".cfi_rel_offset %rbx,40\n\t") + __ASM_CFI(".cfi_rel_offset %r12,32\n\t") + __ASM_CFI(".cfi_rel_offset %r13,24\n\t") + __ASM_CFI(".cfi_rel_offset %r14,16\n\t") + __ASM_CFI(".cfi_rel_offset %r15,8\n\t") "call *%rsi" ); /***********************************************************************
participants (1)
-
Alexandre Julliard