Alexandre Julliard : ntdll: Fix stack alignment in relay calls on ARM.

Alexandre Julliard julliard at winehq.org
Mon Nov 27 15:05:39 CST 2017


Module: wine
Branch: master
Commit: 74b50e27e184d8b08998ae2c565ca642a2bfe5a3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=74b50e27e184d8b08998ae2c565ca642a2bfe5a3

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Nov 27 16:15:05 2017 +0100

ntdll: Fix stack alignment in relay calls on ARM.

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

---

 dlls/ntdll/relay.c | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/dlls/ntdll/relay.c b/dlls/ntdll/relay.c
index c50d23d..b4dc884 100644
--- a/dlls/ntdll/relay.c
+++ b/dlls/ntdll/relay.c
@@ -469,30 +469,21 @@ __ASM_GLOBAL_FUNC( call_entry_point,
                    "mov r4, r0\n\t"
                    "mov r5, SP\n\t"
                    "lsl r3, r1, #2\n\t"
-                   "cmp r3, #0\n\t"
-                   "beq 5f\n\t"
                    "sub SP, SP, r3\n\t"
-                   "tst r1, #1\n\t"
-                   "subeq SP, SP, #4\n\t"
+                   "and SP, SP, #~7\n"
                    "1:\tsub r3, r3, #4\n\t"
                    "ldr r0, [r2, r3]\n\t"
                    "str r0, [SP, r3]\n\t"
                    "cmp r3, #0\n\t"
                    "bgt 1b\n\t"
-                   "cmp r1, #1\n\t"
+                   "cmp r1, #0\n\t"
+                   "beq 3f\n\t"
+                   "cmp r1, #2\n\t"
                    "bgt 2f\n\t"
-                   "pop {r0}\n\t"
-                   "b 5f\n\t"
-                   "2:\tcmp r1, #2\n\t"
-                   "bgt 3f\n\t"
                    "pop {r0-r1}\n\t"
-                   "b 5f\n\t"
-                   "3:\tcmp r1, #3\n\t"
-                   "bgt 4f\n\t"
-                   "pop {r0-r2}\n\t"
-                   "b 5f\n\t"
-                   "4:\tpop {r0-r3}\n\t"
-                   "5:\tblx r4\n\t"
+                   "b 3f\n"
+                   "2:\tpop {r0-r3}\n"
+                   "3:\tblx r4\n\t"
                    "mov SP, r5\n\t"
                    "pop {r4, r5, PC}" )
 




More information about the wine-cvs mailing list