Alexandre Julliard (@julliard) commented about dlls/ntdll/unix/signal_x86_64.c:
"leaq 0x70(%rcx),%rsp\n\t" /* %rsp > frame means no longer inside syscall */
+#ifdef __linux__
"testl $12,%r14d\n\t" /* SYSCALL_HAVE_PTHREAD_TEB | SYSCALL_HAVE_WRFSGSBASE */
"jz 1f\n\t"
"movw %gs:0x338,%fs\n" /* amd64_thread_data()->fs */
"1:\n\t"
+#endif +#ifdef __APPLE__
"movq 0x88(%rcx),%rsp\n\t" /* use the user stack for this call */
"pushq %rax\n\t"
"pushq %rcx\n\t"
"movq 0xb8(%rcx),%rdi\n\t" /* frame->teb */
"call " __ASM_NAME("_thread_set_tsd_base") "\n\t"
"popq %rcx\n\t"
"popq %rax\n\t"
"leaq 0x70(%rcx),%rsp\n\t" /* %rsp > frame means no longer inside syscall */
I don't think we should be touching the user stack at that point.