19#if defined(_WIN64) && defined(BUILD_WOW64_ENABLED)
20extern void KiReloadWow64Fs();
59 Thread->InitialStack = InitialStack;
62 Thread->StateSaveArea = InitialStack;
80 XSaveArea->Header.CompactionMask |= 0x8000000000000000ULL |
107 ContextFlags =
Context->ContextFlags & ~CONTEXT_DEBUG_REGISTERS;
168 TrapFrame->
Rsp -= 5 *
sizeof(
PVOID);
211 ULONG64 CurrentCycleTime, ElapsedCycles;
218 if (OldThread->NpxState != 0)
220 KiSaveXState(OldThread->StateSaveArea, OldThread->NpxState);
224 if (NewThread->NpxState != 0)
230 OldProcess = OldThread->ApcState.Process;
231 NewProcess = NewThread->ApcState.Process;
232 if (OldProcess != NewProcess)
244 ((
PETHREAD)OldThread)->CycleTime += ElapsedCycles;
255#if defined(_WIN64) && defined(BUILD_WOW64_ENABLED)
258 if (ENewProcess->Wow64Process !=
NULL)
264 CmTebEntry->
Bits.LimitHigh = 0xFFFF;
267 CmTebEntry->
Bits.BaseMiddle = (
Base & 0xFF0000) >> 16;
268 CmTebEntry->
Bits.BaseHigh = (
Base & 0xFF000000) >> 24;
277 NewThread->ContextSwitches++;
291 OldThread->SwapBusy =
FALSE;
294 if (NewThread->ApcState.KernelApcPending)
297 if ((NewThread->SpecialApcDisable == 0) &&
#define EFLAGS_INTERRUPT_MASK
FORCEINLINE VOID KiRestoreXState(_In_ PVOID Buffer, _In_ ULONG64 ComponentMask)
FORCEINLINE PKGDTENTRY64 KiGetGdtEntry(PVOID pGdt, USHORT Selector)
FORCEINLINE VOID KiSaveXState(_Out_ PVOID Buffer, _In_ ULONG64 ComponentMask)
BOOLEAN KiSwapContextResume(_In_ BOOLEAN ApcBypass, _In_ PKTHREAD OldThread, _In_ PKTHREAD NewThread)
VOID NTAPI KiInitializeContextThread(IN PKTHREAD Thread, IN PKSYSTEM_ROUTINE SystemRoutine, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext, IN PCONTEXT Context)
void KiInvalidSystemThreadStartupExit(void)
struct _KKINIT_FRAME KKINIT_FRAME
void KiUserThreadStartupExit(void)
void KiServiceExit3(void)
struct _KUINIT_FRAME * PKUINIT_FRAME
struct _KKINIT_FRAME * PKKINIT_FRAME
struct _KUINIT_FRAME KUINIT_FRAME
DECLSPEC_NORETURN VOID NTAPI KeBugCheckEx(IN ULONG BugCheckCode, IN ULONG_PTR BugCheckParameter1, IN ULONG_PTR BugCheckParameter2, IN ULONG_PTR BugCheckParameter3, IN ULONG_PTR BugCheckParameter4)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
VOID FASTCALL HalRequestSoftwareInterrupt(IN KIRQL Irql)
PPC_QUAL void __writemsr(const unsigned long Value)
PPC_QUAL unsigned long long __rdtsc(void)
__INTRIN_INLINE void __writecr3(unsigned int Data)
#define EFLAGS_USER_THREAD_SANITIZE
VOID(NTAPI * PKSYSTEM_ROUTINE)(PKSTART_ROUTINE StartRoutine, PVOID StartContext)
struct _EPROCESS * PEPROCESS
struct _ETHREAD * PETHREAD
VOID NTAPI KiThreadStartup(VOID)
union _KGDTENTRY64 * GdtBase
KSWITCH_FRAME CtxSwitchFrame
ULONG_PTR DirectoryTableBase
KEXCEPTION_FRAME ExceptionFrame
KSWITCH_FRAME CtxSwitchFrame
#define RtlZeroMemory(Destination, Length)
#define ALIGN_DOWN_POINTER_BY(ptr, align)
struct _KGDTENTRY64::@2539::@2541::@2544 Bits
KSTART_ROUTINE * PKSTART_ROUTINE
#define XSTATE_MASK_LEGACY_FLOATING_POINT
_In_ ULONG _In_opt_ POBJECT_ATTRIBUTES _In_opt_ HANDLE _Out_opt_ PCLIENT_ID _In_ PKSTART_ROUTINE StartRoutine