2 * PROJECT: ReactOS Kernel
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: ntoskrnl/ke/i386/context.c
5 * PURPOSE: Context Switching Related Code
6 * PROGRAMMERS: ReactOS Portable Systems Group
9 /* INCLUDES *******************************************************************/
15 /* GLOBALS ********************************************************************/
17 /* FUNCTIONS ******************************************************************/
21 KiSwapProcess(IN PKPROCESS NewProcess
,
22 IN PKPROCESS OldProcess
)
24 PKIPCR Pcr
= (PKIPCR
)KeGetPcr();
28 /* Update active processor mask */
29 SetMember
= (LONG
)Pcr
->SetMember
;
30 InterlockedXor((PLONG
)&NewProcess
->ActiveProcessors
, SetMember
);
31 InterlockedXor((PLONG
)&OldProcess
->ActiveProcessors
, SetMember
);
34 /* Check for new LDT */
35 if (NewProcess
->LdtDescriptor
.LimitLow
!= OldProcess
->LdtDescriptor
.LimitLow
)
43 __writecr3(NewProcess
->DirectoryTableBase
[0]);
48 /* Update IOPM offset */
49 Pcr
->TSS
->IoMapBase
= NewProcess
->IopmOffset
;