Module: wine Branch: master Commit: d4f36570cd08260d9ac66c8795f74d87a50a8592 URL: https://gitlab.winehq.org/wine/wine/-/commit/d4f36570cd08260d9ac66c8795f74d8...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Mar 24 15:44:14 2023 +0100
ntdll: Fully initialize the i386 FPU context on ARM64.
---
dlls/ntdll/unix/signal_arm64.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c index 2736c43e3b5..da78a7a8036 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c @@ -1615,6 +1615,7 @@ void DECLSPEC_HIDDEN call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, B
if ((i386_context = get_cpu_area( IMAGE_FILE_MACHINE_I386 ))) { + XMM_SAVE_AREA32 *fpu = (XMM_SAVE_AREA32 *)i386_context->ExtendedRegisters; i386_context->ContextFlags = CONTEXT_I386_ALL; i386_context->Eax = (ULONG_PTR)entry; i386_context->Ebx = (arg == peb ? (ULONG_PTR)wow_peb : (ULONG_PTR)arg); @@ -1627,8 +1628,9 @@ void DECLSPEC_HIDDEN call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, B i386_context->SegGs = 0x2b; i386_context->SegSs = 0x2b; i386_context->EFlags = 0x202; - i386_context->FloatSave.ControlWord = 0x27f; - ((XSAVE_FORMAT *)i386_context->ExtendedRegisters)->MxCsr = 0x1f80; + fpu->ControlWord = 0x27f; + fpu->MxCsr = 0x1f80; + fpux_to_fpu( &i386_context->FloatSave, fpu ); } else if ((arm_context = get_cpu_area( IMAGE_FILE_MACHINE_ARMNT ))) {