diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index 635b8f4de81..59d9e1d0df9 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -504,13 +504,12 @@ USHORT WINAPI RtlCaptureStackBackTrace( ULONG skip, ULONG count, PVOID *buffer, */ __ASM_GLOBAL_FUNC( signal_start_thread, "movl 4(%esp),%esi\n\t" /* context */ - "leal -12(%esi),%ecx\n\t" + "leal -12(%esi),%edi\n\t" /* clear the thread stack */ - "andl $~0xfff,%ecx\n\t" /* round down to page size */ - "movl %fs:8,%edi\n\t" /* NtCurrentTeb()->Tib.StackLimit */ - "addl $0x1000,%edi\n\t" + "andl $~0xfff,%edi\n\t" /* round down to page size */ + "movl $0xf0000,%ecx\n\t" + "subl %ecx,%edi\n\t" "movl %edi,%esp\n\t" - "subl %edi,%ecx\n\t" "xorl %eax,%eax\n\t" "shrl $2,%ecx\n\t" "rep; stosl\n\t" diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index d88f7ae553a..c5a6666f4d2 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -1544,9 +1544,7 @@ __ASM_GLOBAL_FUNC( signal_start_thread, "movq %rcx,%rbx\n\t" /* context */ /* clear the thread stack */ "andq $~0xfff,%rcx\n\t" /* round down to page size */ - "movq %gs:0x30,%rax\n\t" - "movq 0x10(%rax),%rdi\n\t" /* NtCurrentTeb()->Tib.StackLimit */ - "addq $0x2000,%rdi\n\t" + "leaq -0xf0000(%rcx),%rdi\n\t" "movq %rdi,%rsp\n\t" "subq %rdi,%rcx\n\t" "xorl %eax,%eax\n\t"