From 74b50e27e184d8b08998ae2c565ca642a2bfe5a3 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 27 Nov 2017 16:15:05 +0100 Subject: [PATCH] ntdll: Fix stack alignment in relay calls on ARM. Signed-off-by: Alexandre Julliard --- 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 c50d23de28b..b4dc884dc62 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}" ) -- 2.11.4.GIT