15 #define DR_MASK(x) (1 << (x)) 16 #define DR_REG_MASK 0x4F 21 #define KD_BREAKPOINT_TYPE UCHAR 22 #define KD_BREAKPOINT_SIZE sizeof(UCHAR) 23 #define KD_BREAKPOINT_VALUE 0xCC 74 return TrapFrame->
Eip;
98 return TrapFrame->
Ebp;
104 #define KeGetTrapFrame(Thread) \ 105 (PKTRAP_FRAME)((ULONG_PTR)((Thread)->InitialStack) - \ 106 sizeof(KTRAP_FRAME) - \ 107 sizeof(FX_SAVE_AREA)) 109 #define KeGetExceptionFrame(Thread) \ 116 #define KeGetContextSwitches(Prcb) \ 117 CONTAINING_RECORD(Prcb, KIPCR, PrcbData)->ContextSwitches 123 #define KiGetSecondLevelDCacheSize() ((PKIPCR)KeGetPcr())->SecondLevelCacheSize 129 #define KeGetTrapFrameInterruptState(TrapFrame) \ 130 BooleanFlagOn((TrapFrame)->EFlags, EFLAGS_INTERRUPT_MASK) 135 #define KTE_SKIP_PM_BIT (((KTRAP_EXIT_SKIP_BITS) { { .SkipPreviousMode = TRUE } }).Bits) 136 #define KTE_SKIP_SEG_BIT (((KTRAP_EXIT_SKIP_BITS) { { .SkipSegments = TRUE } }).Bits) 137 #define KTE_SKIP_VOL_BIT (((KTRAP_EXIT_SKIP_BITS) { { .SkipVolatiles = TRUE } }).Bits) 155 #define PFX_FLAG_ES 0x00000100 156 #define PFX_FLAG_CS 0x00000200 157 #define PFX_FLAG_SS 0x00000400 158 #define PFX_FLAG_DS 0x00000800 159 #define PFX_FLAG_FS 0x00001000 160 #define PFX_FLAG_GS 0x00002000 161 #define PFX_FLAG_OPER32 0x00004000 162 #define PFX_FLAG_ADDR32 0x00008000 163 #define PFX_FLAG_LOCK 0x00010000 164 #define PFX_FLAG_REPNE 0x00020000 165 #define PFX_FLAG_REP 0x00040000 189 #define KiVdmSetVdmEFlags(x) InterlockedOr((PLONG)KiNtVdmState, (x)); 190 #define KiVdmClearVdmEFlags(x) InterlockedAnd((PLONG)KiNtVdmState, ~(x)) 191 #define KiCallVdmHandler(x) KiVdmOpcode##x(TrapFrame, Flags) 192 #define KiCallVdmPrefixHandler(x) KiVdmOpcodePrefix(TrapFrame, Flags | x) 193 #define KiVdmUnhandledOpcode(x) \ 196 KiVdmOpcode##x(IN PKTRAP_FRAME TrapFrame, \ 200 UNIMPLEMENTED_DBGBREAK(); \ 804 if (!
Thread->ApcState.UserApcPending)
break;
838 "jmp _KiSystemStartupBootStack@0" 846 #elif defined(_MSC_VER) 849 mov esp, InitialStack
855 #error Unknown Compiler 869 #if defined(__GNUC__) 874 #elif defined(_MSC_VER) 880 #error Unsupported compiler 912 DbgPrint(
"Interrupts: %u System Calls: %u Context Switches: %u\n",
VOID NTAPI ExpInterlockedPopEntrySListResume(VOID)
#define MM_HIGHEST_USER_ADDRESS
VOID NTAPI HalEndSystemInterrupt(IN KIRQL OldIrql, IN PKTRAP_FRAME TrapFrame)
FORCEINLINE VOID KeSetContextFrameRegister(PCONTEXT Context, ULONG_PTR Frame)
BOOLEAN KiI386PentiumLockErrataPresent
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
FORCEINLINE DECLSPEC_NORETURN VOID KiDispatchException2Args(IN NTSTATUS Code, IN ULONG_PTR Address, IN ULONG P1, IN ULONG P2, IN PKTRAP_FRAME TrapFrame)
FORCEINLINE PKTRAP_FRAME KiGetLinkedTrapFrame(PKTRAP_FRAME TrapFrame)
DECLSPEC_NORETURN VOID KiSwitchToBootStack(IN ULONG_PTR InitialStack)
VOID NTAPI KiSetCR0Bits(VOID)
#define UNREFERENCED_PARAMETER(P)
struct _KV8086_STACK_FRAME * PKV8086_STACK_FRAME
ULONG KiFastSystemCallDisable
BOOLEAN NTAPI Ki386CreateIdentityMap(IN PLARGE_IDENTITY_MAP IdentityMap, IN PVOID StartPtr, IN ULONG Length)
FORCEINLINE ULONG Ke386SanitizeFlags(IN ULONG Eflags, IN KPROCESSOR_MODE Mode)
void __cdecl _enable(void)
BOOLEAN FASTCALL Ki386HandleOpcodeV86(IN PKTRAP_FRAME TrapFrame)
ULONG KiGetFeatureBits(VOID)
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
ULONG KeI386EFlagsOrMaskV86
DECLSPEC_NORETURN VOID NTAPI KiSystemStartupBootStack(VOID)
VOID NTAPI Ki386AdjustEsp0(IN PKTRAP_FRAME TrapFrame)
DECLSPEC_NORETURN VOID NTAPI KiDispatchExceptionFromTrapFrame(IN NTSTATUS Code, IN ULONG Flags, IN ULONG_PTR Address, IN ULONG ParameterCount, IN ULONG_PTR Parameter1, IN ULONG_PTR Parameter2, IN ULONG_PTR Parameter3, IN PKTRAP_FRAME TrapFrame)
PPC_QUAL unsigned long long __rdtsc(void)
VOID NTAPI KiInitializeMTRR(IN BOOLEAN FinalCpu)
FORCEINLINE PVOID Ke386SanitizeDr(IN PVOID DrAddress, IN KPROCESSOR_MODE Mode)
union _KGDTENTRY::@2399 HighWord
BOOLEAN NTAPI KiIsNpxErrataPresent(VOID)
__asm__("\n\t \
NewInt3Handler:\n\t \
pushl $" STR(REASON_INT3) "\n\t \
// call debugger loop\n\t \
jmp NewInt31Handler\n\t \
")
__INTRIN_INLINE unsigned long __readcr3(void)
union _KTRAP_EXIT_SKIP_BITS KTRAP_EXIT_SKIP_BITS
ULONG_PTR NTAPI Ki386EnableGlobalPage(IN ULONG_PTR Context)
FORCEINLINE PULONG_PTR KiGetUserModeStackAddress(void)
ULONG_PTR NTAPI Ki386EnableDE(IN ULONG_PTR Context)
union _KTRAP_EXIT_SKIP_BITS * PKTRAP_EXIT_SKIP_BITS
DECLSPEC_NORETURN VOID FASTCALL KiEoiHelper(IN PKTRAP_FRAME TrapFrame)
#define DECLSPEC_NORETURN
FORCEINLINE PVOID KeQueryInterruptHandler(IN ULONG Vector)
BOOLEAN NTAPI KiIsNpxPresent(VOID)
__INTRIN_INLINE void __writecr3(unsigned int Data)
__INTRIN_INLINE uintptr_t __readeflags(void)
UINT32 void void ** ReturnValue
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
FORCEINLINE VOID KeSetContextPc(PCONTEXT Context, ULONG_PTR ProgramCounter)
NTKERNELAPI KIRQL NTAPI KfRaiseIrql(IN KIRQL NewIrql)
FORCEINLINE PRKTHREAD KeGetCurrentThread(VOID)
#define EFLAGS_USER_SANITIZE
NTSTATUS NTAPI KiConvertToGuiThread(VOID)
VOID NTAPI KiInitializePAT(VOID)
struct _KV86_FRAME KV86_FRAME
struct _FLOATING_SAVE_CONTEXT * PFLOATING_SAVE_CONTEXT
VOID NTAPI Ki386FreeIdentityMap(IN PLARGE_IDENTITY_MAP IdentityMap)
FORCEINLINE BOOLEAN KeDisableInterrupts(VOID)
FORCEINLINE VOID Ki386PerfEnd(VOID)
FORCEINLINE VOID Ke386SetGdtEntryBase(PKGDTENTRY GdtEntry, PVOID BaseAddress)
FORCEINLINE ULONG_PTR KeGetTrapFrameStackRegister(PKTRAP_FRAME TrapFrame)
VOID __cdecl CopyParams(VOID)
VOID NTAPI ExpInterlockedPopEntrySListFault(VOID)
FORCEINLINE PFX_SAVE_AREA KiGetThreadNpxArea(IN PKTHREAD Thread)
PFX_SAVE_AREA PfxSaveArea
UCHAR KiDebugRegisterTrapOffsets[9]
FORCEINLINE VOID KiCheckForApcDelivery(IN PKTRAP_FRAME TrapFrame)
VOID FASTCALL Ki386InitializeTss(IN PKTSS Tss, IN PKIDTENTRY Idt, IN PKGDTENTRY Gdt)
FORCEINLINE VOID KeInvalidateTlbEntry(IN PVOID Address)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
_Must_inspect_result_ _In_ ULONG Flags
C_ASSERT(NPX_FRAME_LENGTH==sizeof(FX_SAVE_AREA))
VOID NTAPI KiRestoreFastSyscallReturnState(VOID)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
VOID KiGetCacheInformation(VOID)
PPC_QUAL void __wbinvd(void)
BOOLEAN FASTCALL KiVdmOpcodePrefix(IN PKTRAP_FRAME TrapFrame, IN ULONG Flags)
FORCEINLINE DECLSPEC_NORETURN VOID KiIret(VOID)
FORCEINLINE ULONG_PTR KeGetContextPc(PCONTEXT Context)
NTSTATUS NTAPI KiSystemCallTrampoline(_In_ PVOID Handler, _In_ PVOID Arguments, _In_ ULONG StackBytes)
NTSTATUS NTAPI Ke386GetGdtEntryThread(IN PKTHREAD Thread, IN ULONG Offset, IN PKGDTENTRY Descriptor)
VOID NTAPI Ki386SetupAndExitToV86Mode(OUT PTEB VdmTeb)
VOID __cdecl KiTrap13(VOID)
struct _KV8086_STACK_FRAME KV8086_STACK_FRAME
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
VOID FASTCALL Ki386BiosCallReturnAddress(IN PKTRAP_FRAME TrapFrame)
_In_ UCHAR _In_ UCHAR _In_ ULONG Code
FORCEINLINE VOID KeSetContextReturnRegister(PCONTEXT Context, ULONG_PTR ReturnValue)
ULONG_PTR FASTCALL KiExitV86Mode(IN PKTRAP_FRAME TrapFrame)
ULONG_PTR NTAPI Ki386EnableXMMIExceptions(IN ULONG_PTR Context)
struct _LARGE_IDENTITY_MAP LARGE_IDENTITY_MAP
FORCEINLINE BOOLEAN KiUserTrap(IN PKTRAP_FRAME TrapFrame)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER Handler
UCHAR KiDebugRegisterContextOffsets[9]
FORCEINLINE ULONG Ke386SanitizeSeg(IN ULONG Cs, IN KPROCESSOR_MODE Mode)
FORCEINLINE PKPCR KeGetPcr(VOID)
FORCEINLINE VOID KeRegisterInterruptHandler(IN ULONG Vector, IN PVOID Handler)
_In_ ULONG _In_ ULONG Offset
KIDTENTRY KiIdt[MAXIMUM_IDTVECTOR+1]
ULONG PreviousPreviousMode
FORCEINLINE ULONG_PTR KeGetTrapFramePc(PKTRAP_FRAME TrapFrame)
VOID __cdecl ReadBatch(VOID)
FORCEINLINE DECLSPEC_NORETURN VOID KiDispatchException0Args(IN NTSTATUS Code, IN ULONG_PTR Address, IN PKTRAP_FRAME TrapFrame)
struct _KV86_FRAME * PKV86_FRAME
FORCEINLINE VOID KiSetTebBase(PKPCR Pcr, PNT_TIB TebAddress)
FORCEINLINE ULONG_PTR KeGetContextReturnRegister(PCONTEXT Context)
FORCEINLINE DECLSPEC_NORETURN VOID KiDispatchException1Args(IN NTSTATUS Code, IN ULONG_PTR Address, IN ULONG P1, IN PKTRAP_FRAME TrapFrame)
VOID __cdecl KiTrap08(VOID)
PHARDWARE_PTE TopLevelDirectory
BOOLEAN NTAPI VdmDispatchPageFault(_In_ PKTRAP_FRAME TrapFrame)
ULONG KeI386EFlagsAndMaskV86
NTKERNELAPI VOID NTAPI KfLowerIrql(IN KIRQL NewIrql)
FORCEINLINE ULONG_PTR KeGetContextFrameRegister(PCONTEXT Context)
VOID NTAPI KiFlushNPXState(IN FLOATING_SAVE_AREA *SaveArea)
FORCEINLINE VOID KeRestoreInterrupts(BOOLEAN WereEnabled)
FORCEINLINE VOID KiRundownThread(IN PKTHREAD Thread)
VOID NTAPI KiAmdK6InitializeMTRR(VOID)
BOOLEAN NTAPI VdmDispatchBop(IN PKTRAP_FRAME TrapFrame)
FORCEINLINE VOID KiEndInterrupt(IN KIRQL Irql, IN PKTRAP_FRAME TrapFrame)
KDESCRIPTOR KiIdtDescriptor
FORCEINLINE VOID KeFlushProcessTb(VOID)
struct _FLOATING_SAVE_CONTEXT FLOATING_SAVE_CONTEXT
__INTRIN_INLINE void __invlpg(void *Address)
VOID NTAPI KeI386VdmInitialize(VOID)
VOID __cdecl KiTrap02(VOID)
VOID NTAPI Ki386EnableCurrentLargePage(IN ULONG_PTR StartAddress, IN ULONG Cr3)
VOID NTAPI KiThreadStartup(VOID)
void __cdecl _disable(void)
FORCEINLINE ULONG_PTR KeGetTrapFrameFrameRegister(PKTRAP_FRAME TrapFrame)
CHAR KiSystemCallExitBranch[]
struct _LARGE_IDENTITY_MAP * PLARGE_IDENTITY_MAP
VOID __cdecl KiFastCallEntry(VOID)
#define KTRAP_FRAME_LENGTH
ULONG_PTR NTAPI Ki386EnableTargetLargePage(IN ULONG_PTR Context)
static void push(calc_node_t *op)
VOID KiSetProcessorType(VOID)
BOOLEAN KeI386VirtualIntExtensions
ULONG_PTR NTAPI Ki386EnableFxsr(IN ULONG_PTR Context)
#define KTRAP_FRAME_ALIGN
VOID NTAPI KiDeliverApc(IN KPROCESSOR_MODE DeliveryMode, IN PKEXCEPTION_FRAME ExceptionFrame, IN PKTRAP_FRAME TrapFrame)
#define KeGetContextSwitches(Prcb)
#define MAXIMUM_IDTVECTOR
base of all file and directory entries
FORCEINLINE VOID KeSweepICache(IN PVOID BaseAddress, IN SIZE_T FlushSize)
struct _KGDTENTRY::@2399::@2400 Bytes
VOID NTAPI KiI386PentiumLockErrataFixup(VOID)
#define EFLAGS_INTERRUPT_MASK
#define HalVectorToIDTEntry