mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-21 16:24:09 +00:00
vcomp: Add ARM64 support.
Signed-off-by: André Hentschel <nerv@dawncrow.de> Signed-off-by: Sebastian Lackner <sebastian@fds-team.de> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
18fe44c7af
commit
33a8f192b0
|
@ -229,6 +229,51 @@ __ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
|
|||
"mov SP, r5\n\t"
|
||||
"pop {r4, r5, PC}" )
|
||||
|
||||
#elif defined(__aarch64__)
|
||||
|
||||
extern void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args);
|
||||
__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"
|
||||
"mov SP, x29\n\t"
|
||||
"ldp x29, x30, [SP], #16\n\t"
|
||||
"ret\n" )
|
||||
|
||||
#else
|
||||
|
||||
static void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args)
|
||||
|
|
Loading…
Reference in a new issue