diff --git a/sdk/xtdk/amd64/ketypes.h b/sdk/xtdk/amd64/ketypes.h index ac1e213..f4dbbbd 100644 --- a/sdk/xtdk/amd64/ketypes.h +++ b/sdk/xtdk/amd64/ketypes.h @@ -445,6 +445,8 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK ULONG MxCsr; UCHAR Number; PKTHREAD CurrentThread; + PKTHREAD IdleThread; + PKTHREAD NextThread; ULONG64 RspBase; ULONG_PTR SetMember; KPROCESSOR_STATE ProcessorState; diff --git a/sdk/xtdk/i686/ketypes.h b/sdk/xtdk/i686/ketypes.h index eaf05f8..b88e166 100644 --- a/sdk/xtdk/i686/ketypes.h +++ b/sdk/xtdk/i686/ketypes.h @@ -348,6 +348,8 @@ typedef struct _KPROCESSOR_STATE typedef struct _KPROCESSOR_CONTROL_BLOCK { PKTHREAD CurrentThread; + PKTHREAD IdleThread; + PKTHREAD NextThread; UCHAR Number; ULONG_PTR SetMember; KPROCESSOR_STATE ProcessorState; diff --git a/xtoskrnl/ar/amd64/procsup.c b/xtoskrnl/ar/amd64/procsup.c index 76a0dba..7c33d54 100644 --- a/xtoskrnl/ar/amd64/procsup.c +++ b/xtoskrnl/ar/amd64/procsup.c @@ -214,9 +214,11 @@ ArpInitializeProcessorBlock(OUT PKPROCESSOR_BLOCK ProcessorBlock, ProcessorBlock->Prcb.ProcessorState.SpecialRegisters.KernelDr6 = 0; ProcessorBlock->Prcb.ProcessorState.SpecialRegisters.KernelDr7 = 0; - /* Set current process and thread */ + /* Set process and thread information */ ProcessorBlock->Prcb.CurrentThread = &KeInitialThread.ThreadControlBlock; ProcessorBlock->Prcb.CurrentThread->ApcState.Process = &KeInitialProcess.ProcessControlBlock; + ProcessorBlock->Prcb.IdleThread = &KeInitialThread.ThreadControlBlock; + ProcessorBlock->Prcb.NextThread = NULL; /* Set initial MXCSR register value */ ProcessorBlock->Prcb.MxCsr = INITIAL_MXCSR; diff --git a/xtoskrnl/ar/i686/procsup.c b/xtoskrnl/ar/i686/procsup.c index 2aac25e..2528cf1 100644 --- a/xtoskrnl/ar/i686/procsup.c +++ b/xtoskrnl/ar/i686/procsup.c @@ -215,9 +215,11 @@ ArpInitializeProcessorBlock(OUT PKPROCESSOR_BLOCK ProcessorBlock, ProcessorBlock->Prcb.ProcessorState.SpecialRegisters.KernelDr6 = 0; ProcessorBlock->Prcb.ProcessorState.SpecialRegisters.KernelDr7 = 0; - /* Set current process and thread */ + /* Set process and thread information */ ProcessorBlock->Prcb.CurrentThread = &KeInitialThread.ThreadControlBlock; ProcessorBlock->Prcb.CurrentThread->ApcState.Process = &KeInitialProcess.ProcessControlBlock; + ProcessorBlock->Prcb.IdleThread = &KeInitialThread.ThreadControlBlock; + ProcessorBlock->Prcb.NextThread = NULL; } /**