Alexandre Julliard : ntdll: Avoid pushl %esp instruction in RtlUnwind prolog.

Alexandre Julliard julliard at winehq.org
Fri Mar 9 16:11:51 CST 2018


Module: wine
Branch: master
Commit: 342e2cabd21c5a836683ac30e260ec4944eeac6b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=342e2cabd21c5a836683ac30e260ec4944eeac6b

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Mar  9 13:47:01 2018 -0600

ntdll: Avoid pushl %esp instruction in RtlUnwind prolog.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/signal_i386.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 71eff66..17c42cd 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -2441,7 +2441,9 @@ __ASM_STDCALL_FUNC( RtlUnwind, 16,
                     "movl %esp,%ebp\n\t"
                     __ASM_CFI(".cfi_def_cfa_register %ebp\n\t")
                     "leal -(0x2cc+8)(%esp),%esp\n\t" /* sizeof(CONTEXT) + alignment */
-                    "pushl %esp\n\t"                 /* context */
+                    "pushl %eax\n\t"
+                    "leal 4(%esp),%eax\n\t"          /* context */
+                    "xchgl %eax,(%esp)\n\t"
                     "call " __ASM_NAME("RtlCaptureContext") __ASM_STDCALL(4) "\n\t"
                     "leal 24(%ebp),%eax\n\t"
                     "movl %eax,0xc4(%esp)\n\t"       /* context->Esp */




More information about the wine-cvs mailing list