e6b91303bdac4642e6fbc5205f17e928c6f64340
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
)
38 UNIMPLEMENTED_DBGBREAK();
43 __writecr3(NewProcess
->DirectoryTableBase
[0]);
48 /* Update IOPM offset */
49 Pcr
->TSS
->IoMapBase
= NewProcess
->IopmOffset
;