Module: wine Branch: master Commit: ca4451fa1379d5c5e80dbbeb3bc252a524caa727 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ca4451fa1379d5c5e80dbbeb3b...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Jun 16 14:26:34 2009 +0200
ntdll: Add unwind annotations to the call_entry_point function for x86_64.
---
dlls/ntdll/relay.c | 58 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 34 insertions(+), 24 deletions(-)
diff --git a/dlls/ntdll/relay.c b/dlls/ntdll/relay.c index 6eeb453..0f74c41 100644 --- a/dlls/ntdll/relay.c +++ b/dlls/ntdll/relay.c @@ -342,30 +342,40 @@ __ASM_GLOBAL_FUNC( call_entry_point, "\tret" ) #else __ASM_GLOBAL_FUNC( call_entry_point, - "\tpushq %rbp\n" - "\tmovq %rsp,%rbp\n" - "\tpushq %rsi\n" - "\tpushq %rdi\n" - "\tmovq %rcx,%rax\n" - "\tmovq $4,%rcx\n" - "\tcmp %rcx,%rdx\n" - "\tcmovgq %rdx,%rcx\n" - "\tleaq 0(,%rcx,8),%rdx\n" - "\tsubq %rdx,%rsp\n" - "\tandq $~15,%rsp\n" - "\tmovq %rsp,%rdi\n" - "\tmovq %r8,%rsi\n" - "\trep; movsq\n" - "\tmovq 0(%rsp),%rcx\n" - "\tmovq 8(%rsp),%rdx\n" - "\tmovq 16(%rsp),%r8\n" - "\tmovq 24(%rsp),%r9\n" - "\tcallq *%rax\n" - "\tleaq -16(%rbp),%rsp\n" - "\tpopq %rdi\n" - "\tpopq %rsi\n" - "\tpopq %rbp\n" - "\tret\n" ) + "pushq %rbp\n\t" + ".cfi_adjust_cfa_offset 8\n\t" + ".cfi_rel_offset %rbp,0\n\t" + "movq %rsp,%rbp\n\t" + ".cfi_def_cfa_register %rbp\n\t" + "pushq %rsi\n\t" + ".cfi_rel_offset %rsi,-8\n\t" + "pushq %rdi\n\t" + ".cfi_rel_offset %rdi,-16\n\t" + "movq %rcx,%rax\n\t" + "movq $4,%rcx\n\t" + "cmp %rcx,%rdx\n\t" + "cmovgq %rdx,%rcx\n\t" + "leaq 0(,%rcx,8),%rdx\n\t" + "subq %rdx,%rsp\n\t" + "andq $~15,%rsp\n\t" + "movq %rsp,%rdi\n\t" + "movq %r8,%rsi\n\t" + "rep; movsq\n\t" + "movq 0(%rsp),%rcx\n\t" + "movq 8(%rsp),%rdx\n\t" + "movq 16(%rsp),%r8\n\t" + "movq 24(%rsp),%r9\n\t" + "callq *%rax\n\t" + "leaq -16(%rbp),%rsp\n\t" + "popq %rdi\n\t" + ".cfi_same_value %rdi\n\t" + "popq %rsi\n\t" + ".cfi_same_value %rsi\n\t" + ".cfi_def_cfa_register %rsp\n\t" + "popq %rbp\n\t" + ".cfi_adjust_cfa_offset -8\n\t" + ".cfi_same_value %rbp\n\t" + "ret") #endif