Brendan Shanks : ntdll: Fix floating point and extended registers not being restored under Wow64.

Alexandre Julliard julliard at winehq.org
Wed Aug 3 15:31:40 CDT 2022


Module: wine
Branch: master
Commit: bc90f8715f2c640be4c5965eb59fef96907e7ccb
URL:    https://gitlab.winehq.org/wine/wine/-/commit/bc90f8715f2c640be4c5965eb59fef96907e7ccb

Author: Brendan Shanks <bshanks at codeweavers.com>
Date:   Mon Aug  1 11:03:32 2022 -0700

ntdll: Fix floating point and extended registers not being restored under Wow64.

---

 dlls/ntdll/unix/signal_x86_64.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
index 8d85525b224..1c2db47c95d 100644
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -2078,10 +2078,12 @@ NTSTATUS set_thread_wow64_context( HANDLE handle, const void *ctx, ULONG size )
     if (flags & CONTEXT_I386_EXTENDED_REGISTERS)
     {
         memcpy( &frame->xsave, context->ExtendedRegisters, sizeof(frame->xsave) );
+        frame->restore_flags |= CONTEXT_FLOATING_POINT;
     }
     else if (flags & CONTEXT_I386_FLOATING_POINT)
     {
         fpu_to_fpux( &frame->xsave, &context->FloatSave );
+        frame->restore_flags |= CONTEXT_FLOATING_POINT;
     }
     if (flags & CONTEXT_I386_XSTATE)
     {




More information about the wine-cvs mailing list