Alexandre Julliard : vcomp: Fix vcomp_fork() implementation on ARM64.

Alexandre Julliard julliard at winehq.org
Mon Nov 4 16:40:25 CST 2019


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Nov  4 15:14:28 2019 +0100

vcomp: Fix vcomp_fork() implementation on ARM64.

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

---

 dlls/vcomp/main.c | 52 ++++++++++++++++++----------------------------------
 1 file changed, 18 insertions(+), 34 deletions(-)

diff --git a/dlls/vcomp/main.c b/dlls/vcomp/main.c
index fe87ca06fc..686984709a 100644
--- a/dlls/vcomp/main.c
+++ b/dlls/vcomp/main.c
@@ -239,40 +239,24 @@ __ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
                    "stp x29, x30, [SP,#-16]!\n\t"
                    "mov x29, SP\n\t"
                    "mov x9, x0\n\t"
-                   "cbz w1, 2f\n\t"
-                   "mov w10, w1\n\t"
-                   "mov x11, x2\n\t"
-                   "ldr w12, [x11, #24]\n\t"
-                   "ldr x13, [x11, #8]\n\t"
-                   "ldr x0, [x13, w12, sxtw]\n\t"
-                   "add w12, w12, #8\n\t"
-                   "ldr x1, [x13, w12, sxtw]\n\t"
-                   "add w12, w12, #8\n\t"
-                   "ldr x2, [x13, w12, sxtw]\n\t"
-                   "add w12, w12, #8\n\t"
-                   "ldr x3, [x13, w12, sxtw]\n\t"
-                   "add w12, w12, #8\n\t"
-                   "ldr x4, [x13, w12, sxtw]\n\t"
-                   "add w12, w12, #8\n\t"
-                   "ldr x5, [x13, w12, sxtw]\n\t"
-                   "add w12, w12, #8\n\t"
-                   "ldr x6, [x13, w12, sxtw]\n\t"
-                   "add w12, w12, #8\n\t"
-                   "ldr x7, [x13, w12, sxtw]\n\t"
-                   "add w12, w12, #8\n\t"
-                   "add x13, x13, w12, sxtw\n\t"
-                   "subs w12, w10, #8\n\t"
-                   "b.le 2f\n\t"
-                   "ldr x11, [x11]\n\t"
-                   "lsl w12, w12, #3\n\t"
-                   "sub SP, SP, w12, sxtw\n\t"
-                   "tbz w12, #3, 1f\n\t"
-                   "sub SP, SP, #8\n\t"
-                   "1: sub w12, w12, #8\n\t"
-                   "ldr x14, [x13, w12, sxtw]\n\t"
-                   "str x14, [SP,  w12, sxtw]\n\t"
-                   "cbnz w12, 1b\n\t"
-                   "2: blr x9\n\t"
+                   "cbz w1, 4f\n\t"
+                   "lsl w8, w1, #3\n\t"
+                   "cmp w8, #64\n\t"
+                   "b.ge 1f\n\t"
+                   "mov w8, #64\n"
+                   "1:\ttbz w8, #3, 2f\n\t"
+                   "add w8, w8, #8\n"
+                   "2:\tsub x10, x29, x8\n\t"
+                   "mov sp, x10\n"
+                   "3:\tldr x0, [x2], #8\n\t"
+                   "str x0, [x10], #8\n\t"
+                   "subs w1, w1, #1\n\t"
+                   "b.ne 3b\n\t"
+                   "ldp x0, x1, [sp], #16\n\t"
+                   "ldp x2, x3, [sp], #16\n\t"
+                   "ldp x4, x5, [sp], #16\n\t"
+                   "ldp x6, x7, [sp], #16\n"
+                   "4:\tblr x9\n\t"
                    "mov SP, x29\n\t"
                    "ldp x29, x30, [SP], #16\n\t"
                    "ret\n" )




More information about the wine-cvs mailing list