Alexandre Julliard (@julliard) commented about dlls/ntdll/unix/signal_i386.c:
"movzbl (%eax,%edx,1),%ecx\n\t" "movl (%ebx),%eax\n\t" /* table->ServiceTable */ "subl %ecx,%esp\n\t" "shrl $2,%ecx\n\t" "andl $~15,%esp\n\t" "movl %esp,%edi\n\t" "cld\n\t" "rep; movsl\n\t" "call *(%eax,%edx,4)\n\t"
"leal -0x34(%ebp),%esp\n\t" "\n.L__wine_syscall_dispatcher_restore:\n\t"
"leal -0x34(%ebp),%esp\n\t"
/* remember state when $ebp is pointing to "frame" */
__ASM_CFI(".cfi_remember_state\n\t") __ASM_CFI_CFA_IS_AT1(esp, 0x0c)
I don't understand why you are changing this. The frame is pointed to by %esp, we don't use %ebp at all, except as a way to get %esp back to the syscall frame after calling the entry point.