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