Alexandre Julliard : ntdll: Initialize FPU context on ARM64.

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


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Nov  4 09:45:21 2019 +0100

ntdll: Initialize FPU context on ARM64.

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

---

 dlls/ntdll/signal_arm64.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c
index 96b20d8ff6..687219ec40 100644
--- a/dlls/ntdll/signal_arm64.c
+++ b/dlls/ntdll/signal_arm64.c
@@ -1974,6 +1974,26 @@ __ASM_GLOBAL_FUNC( start_thread,
                    "bl " __ASM_NAME("virtual_clear_thread_stack") "\n\t"
                    /* switch to the initial context */
                    "mov x0, sp\n\t"
+                   "ldp q0, q1, [x0, #0x110]\n\t"      /* context->V[0,1] */
+                   "ldp q2, q3, [x0, #0x130]\n\t"      /* context->V[2,3] */
+                   "ldp q4, q5, [x0, #0x150]\n\t"      /* context->V[4,5] */
+                   "ldp q6, q7, [x0, #0x170]\n\t"      /* context->V[6,7] */
+                   "ldp q8, q9, [x0, #0x190]\n\t"      /* context->V[8,9] */
+                   "ldp q10, q11, [x0, #0x1b0]\n\t"    /* context->V[10,11] */
+                   "ldp q12, q13, [x0, #0x1d0]\n\t"    /* context->V[12,13] */
+                   "ldp q14, q15, [x0, #0x1f0]\n\t"    /* context->V[14,15] */
+                   "ldp q16, q17, [x0, #0x210]\n\t"    /* context->V[16,17] */
+                   "ldp q18, q19, [x0, #0x230]\n\t"    /* context->V[18,19] */
+                   "ldp q20, q21, [x0, #0x250]\n\t"    /* context->V[20,21] */
+                   "ldp q22, q23, [x0, #0x270]\n\t"    /* context->V[22,23] */
+                   "ldp q24, q25, [x0, #0x290]\n\t"    /* context->V[24,25] */
+                   "ldp q26, q27, [x0, #0x2b0]\n\t"    /* context->V[26,27] */
+                   "ldp q28, q29, [x0, #0x2d0]\n\t"    /* context->V[28,29] */
+                   "ldp q30, q31, [x0, #0x2f0]\n\t"    /* context->V[30,31] */
+                   "ldr w1, [x0, #0x310]\n\t"          /* context->Fpcr */
+                   "msr fpcr, x1\n\t"
+                   "ldr w1, [x0, #0x314]\n\t"          /* context->Fpsr */
+                   "msr fpsr, x1\n\t"
                    "ldp x1, x2, [x0, #0x10]\n\t"       /* context->X1,2 */
                    "ldp x3, x4, [x0, #0x20]\n\t"       /* context->X3,4 */
                    "ldp x5, x6, [x0, #0x30]\n\t"       /* context->X5,6 */




More information about the wine-cvs mailing list