1
0
Fork 0
mirror of synced 2025-03-07 03:53:26 +01:00

ntdll: Preserve untouched parts of xstate in NtSetContextThread().

This commit is contained in:
Paul Gofman 2024-02-08 14:09:12 -06:00 committed by Alexandre Julliard
parent 7ae23ad775
commit a10da8a42a
2 changed files with 4 additions and 0 deletions

View file

@ -1004,9 +1004,11 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context )
{
CONTEXT_EX *context_ex = (CONTEXT_EX *)(context + 1);
XSAVE_AREA_HEADER *xs = (XSAVE_AREA_HEADER *)((char *)context_ex + context_ex->XState.Offset);
UINT64 mask = frame->xstate.Mask;
if (xstate_compaction_enabled) frame->xstate.CompactionMask |= xstate_extended_features();
copy_xstate( &frame->xstate, xs, xs->Mask );
if (xs->CompactionMask) frame->xstate.Mask |= mask & ~xs->CompactionMask;
}
frame->restore_flags |= flags & ~CONTEXT_INTEGER;

View file

@ -1050,9 +1050,11 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context )
{
CONTEXT_EX *context_ex = (CONTEXT_EX *)(context + 1);
XSAVE_AREA_HEADER *xs = (XSAVE_AREA_HEADER *)((char *)context_ex + context_ex->XState.Offset);
UINT64 mask = frame->xstate.Mask;
if (xstate_compaction_enabled) frame->xstate.CompactionMask |= xstate_extended_features();
copy_xstate( &frame->xstate, xs, xs->Mask );
if (xs->CompactionMask) frame->xstate.Mask |= mask & ~xs->CompactionMask;
}
frame->restore_flags |= flags & ~CONTEXT_INTEGER;