Paul Gofman : ntdll: Reset YMM state in NtSetContextThread() if that is assumed by the context being set.

Alexandre Julliard julliard at winehq.org
Wed Mar 3 15:47:29 CST 2021


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

Author: Paul Gofman <pgofman at codeweavers.com>
Date:   Wed Mar  3 14:55:00 2021 +0300

ntdll: Reset YMM state in NtSetContextThread() if that is assumed by the context being set.

Fixes test failure on testbot where compaction is not supported
(resetting YMM state if that is implied by the context being set).

Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/unix/signal_i386.c   | 2 +-
 dlls/ntdll/unix/signal_x86_64.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c
index 0153f772b6d..9e97fd9e298 100644
--- a/dlls/ntdll/unix/signal_i386.c
+++ b/dlls/ntdll/unix/signal_i386.c
@@ -1254,7 +1254,7 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context )
             xsave->xstate.mask |= XSTATE_MASK_GSSE;
             memcpy( &xsave->xstate.ymm_high, &xs->YmmContext, sizeof(xsave->xstate.ymm_high) );
         }
-        else if (xs->CompactionMask & XSTATE_MASK_GSSE)
+        else
             xsave->xstate.mask &= ~XSTATE_MASK_GSSE;
     }
 
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
index e62e958b4aa..2a030372fb7 100644
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -1864,7 +1864,7 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context )
             xsave->xstate.Mask |= XSTATE_MASK_GSSE;
             memcpy( &xsave->xstate.YmmContext, &xs->YmmContext, sizeof(xs->YmmContext) );
         }
-        else if (xs->CompactionMask & XSTATE_MASK_GSSE)
+        else
             xsave->xstate.Mask &= ~XSTATE_MASK_GSSE;
     }
     return STATUS_SUCCESS;




More information about the wine-cvs mailing list