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
26#define X86_FEATURE_SSE3 0x00000001
27#define X86_FEATURE_SSSE3 0x00000200
28#define X86_FEATURE_SSE4_1 0x00080000
29#define X86_FEATURE_SSE4_2 0x00100000
30#define X86_FEATURE_XSAVE 0x04000000
31#define X86_FEATURE_RDRAND 0x40000000
34#define X86_FEATURE_FPU 0x00000001
35#define X86_FEATURE_VME 0x00000002
36#define X86_FEATURE_DBG 0x00000004
37#define X86_FEATURE_PSE 0x00000008
38#define X86_FEATURE_TSC 0x00000010
39#define X86_FEATURE_PAE 0x00000040
40#define X86_FEATURE_CX8 0x00000100
41#define X86_FEATURE_APIC 0x00000200
42#define X86_FEATURE_SYSCALL 0x00000800
43#define X86_FEATURE_MTTR 0x00001000
44#define X86_FEATURE_PGE 0x00002000
45#define X86_FEATURE_CMOV 0x00008000
46#define X86_FEATURE_PAT 0x00010000
47#define X86_FEATURE_DS 0x00200000
48#define X86_FEATURE_MMX 0x00800000
49#define X86_FEATURE_FXSR 0x01000000
50#define X86_FEATURE_SSE 0x02000000
51#define X86_FEATURE_SSE2 0x04000000
52#define X86_FEATURE_HT 0x10000000
55#define X86_FEATURE_NX 0x00100000
106 return TrapFrame->
Eip;
130 return TrapFrame->
Ebp;
136#define KeGetTrapFrame(Thread) \
137 (PKTRAP_FRAME)((ULONG_PTR)((Thread)->InitialStack) - \
138 sizeof(KTRAP_FRAME) - \
139 sizeof(FX_SAVE_AREA))
141#define KeGetExceptionFrame(Thread) \
148#define KeGetContextSwitches(Prcb) \
149 CONTAINING_RECORD(Prcb, KIPCR, PrcbData)->ContextSwitches
155#define KiGetSecondLevelDCacheSize() ((PKIPCR)KeGetPcr())->SecondLevelCacheSize
161#define KeGetTrapFrameInterruptState(TrapFrame) \
162 BooleanFlagOn((TrapFrame)->EFlags, EFLAGS_INTERRUPT_MASK)
167#define KTE_SKIP_PM_BIT (((KTRAP_EXIT_SKIP_BITS) { { .SkipPreviousMode = TRUE } }).Bits)
168#define KTE_SKIP_SEG_BIT (((KTRAP_EXIT_SKIP_BITS) { { .SkipSegments = TRUE } }).Bits)
169#define KTE_SKIP_VOL_BIT (((KTRAP_EXIT_SKIP_BITS) { { .SkipVolatiles = TRUE } }).Bits)
187#define PFX_FLAG_ES 0x00000100
188#define PFX_FLAG_CS 0x00000200
189#define PFX_FLAG_SS 0x00000400
190#define PFX_FLAG_DS 0x00000800
191#define PFX_FLAG_FS 0x00001000
192#define PFX_FLAG_GS 0x00002000
193#define PFX_FLAG_OPER32 0x00004000
194#define PFX_FLAG_ADDR32 0x00008000
195#define PFX_FLAG_LOCK 0x00010000
196#define PFX_FLAG_REPNE 0x00020000
197#define PFX_FLAG_REP 0x00040000
221#define KiVdmSetVdmEFlags(x) InterlockedOr((PLONG)KiNtVdmState, (x));
222#define KiVdmClearVdmEFlags(x) InterlockedAnd((PLONG)KiNtVdmState, ~(x))
223#define KiCallVdmHandler(x) KiVdmOpcode##x(TrapFrame, Flags)
224#define KiCallVdmPrefixHandler(x) KiVdmOpcodePrefix(TrapFrame, Flags | x)
225#define KiVdmUnhandledOpcode(x) \
228 KiVdmOpcode##x(IN PKTRAP_FRAME TrapFrame, \
232 UNIMPLEMENTED_DBGBREAK(); \
480KiReportCpuFeatures(
VOID);
874 if (!
Thread->ApcState.UserApcPending)
break;
908 "jmp _KiSystemStartupBootStack@0"
916#elif defined(_MSC_VER)
919 mov esp, InitialStack
925#error Unknown Compiler
944#elif defined(_MSC_VER)
950#error Unsupported compiler
982 DbgPrint(
"Interrupts: %u System Calls: %u Context Switches: %u\n",
#define EFLAGS_INTERRUPT_MASK
UINT32 void void ** ReturnValue
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx 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
DECLSPEC_NORETURN VOID NTAPI KiSystemStartupBootStack(VOID)
#define MM_HIGHEST_USER_ADDRESS
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
VOID NTAPI HalEndSystemInterrupt(IN KIRQL OldIrql, IN PKTRAP_FRAME TrapFrame)
VOID FASTCALL KfLowerIrql(IN KIRQL NewIrql)
KIRQL FASTCALL KfRaiseIrql(IN KIRQL NewIrql)
#define KeGetCurrentThread
void __cdecl _disable(void)
void __cdecl _enable(void)
PPC_QUAL void __wbinvd(void)
PPC_QUAL unsigned long long __rdtsc(void)
__INTRIN_INLINE unsigned long __readcr3(void)
__INTRIN_INLINE uintptr_t __readeflags(void)
__INTRIN_INLINE void __invlpg(void *Address)
__INTRIN_INLINE void __writecr3(unsigned int Data)
#define EFLAGS_USER_SANITIZE
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
#define MAXIMUM_IDTVECTOR
#define HalVectorToIDTEntry
#define KTRAP_FRAME_LENGTH
#define KTRAP_FRAME_ALIGN
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
#define DECLSPEC_NORETURN
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
FORCEINLINE ULONG_PTR KeGetTrapFrameFrameRegister(PKTRAP_FRAME TrapFrame)
DECLSPEC_NORETURN VOID KiSwitchToBootStack(IN ULONG_PTR InitialStack)
#define KeGetContextSwitches(Prcb)
FORCEINLINE ULONG_PTR KeGetContextFrameRegister(PCONTEXT Context)
FORCEINLINE VOID KeInvalidateTlbEntry(IN PVOID Address)
FORCEINLINE VOID KeFlushProcessTb(VOID)
FORCEINLINE VOID KeSetContextFrameRegister(PCONTEXT Context, ULONG_PTR Frame)
DECLSPEC_NORETURN VOID KiExceptionExit(_In_ PKTRAP_FRAME TrapFrame, _In_ PKEXCEPTION_FRAME ExceptionFrame)
FORCEINLINE ULONG_PTR KeGetTrapFrameStackRegister(PKTRAP_FRAME TrapFrame)
VOID KiGetCacheInformation(VOID)
FORCEINLINE BOOLEAN KeDisableInterrupts(VOID)
ULONG64 KiGetFeatureBits(VOID)
Evaluates the KeFeatureFlag bits for the current CPU.
FORCEINLINE PVOID KeQueryInterruptHandler(IN ULONG Vector)
FORCEINLINE VOID KeRestoreInterrupts(BOOLEAN WereEnabled)
VOID KiSetProcessorType(VOID)
FORCEINLINE VOID KiRundownThread(IN PKTHREAD Thread)
FORCEINLINE BOOLEAN KiUserTrap(IN PKTRAP_FRAME TrapFrame)
FORCEINLINE VOID KeSweepICache(IN PVOID BaseAddress, IN SIZE_T FlushSize)
FORCEINLINE VOID KeRegisterInterruptHandler(IN ULONG Vector, IN PVOID Handler)
FORCEINLINE PULONG_PTR KiGetUserModeStackAddress(void)
#define KeSetContextReturnRegister(Context, ReturnValue)
#define KiGetLinkedTrapFrame(x)
#define KeSetContextPc(Context, ProgramCounter)
#define KeGetContextPc(Context)
#define KeGetContextReturnRegister(Context)
#define KeGetTrapFramePc(TrapFrame)
#define KiEndInterrupt(x, y)
struct _LARGE_IDENTITY_MAP LARGE_IDENTITY_MAP
BOOLEAN NTAPI VdmDispatchPageFault(_In_ PKTRAP_FRAME TrapFrame)
BOOLEAN NTAPI VdmDispatchBop(IN PKTRAP_FRAME TrapFrame)
FORCEINLINE ULONG Ke386SanitizeFlags(IN ULONG Eflags, IN KPROCESSOR_MODE Mode)
FORCEINLINE DECLSPEC_NORETURN VOID KiDispatchException2Args(IN NTSTATUS Code, IN ULONG_PTR Address, IN ULONG P1, IN ULONG P2, IN PKTRAP_FRAME TrapFrame)
VOID NTAPI KiInitializePAT(VOID)
VOID NTAPI ExpInterlockedPopEntrySListResume(VOID)
BOOLEAN FASTCALL KiVdmOpcodePrefix(IN PKTRAP_FRAME TrapFrame, IN ULONG Flags)
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)
VOID FASTCALL Ki386InitializeTss(IN PKTSS Tss, IN PKIDTENTRY Idt, IN PKGDTENTRY Gdt)
BOOLEAN FASTCALL Ki386HandleOpcodeV86(IN PKTRAP_FRAME TrapFrame)
ULONG_PTR NTAPI Ki386EnableTargetLargePage(IN ULONG_PTR Context)
VOID NTAPI KiFlushNPXState(IN FLOATING_SAVE_AREA *SaveArea)
ULONG KiFastSystemCallDisable
struct _KV86_FRAME KV86_FRAME
VOID __cdecl KiTrap13(VOID)
UCHAR KiDebugRegisterContextOffsets[9]
VOID __cdecl KiTrap02(VOID)
UCHAR KiDebugRegisterTrapOffsets[9]
VOID __cdecl KiTrap08(VOID)
struct _KV8086_STACK_FRAME KV8086_STACK_FRAME
union _KTRAP_EXIT_SKIP_BITS * PKTRAP_EXIT_SKIP_BITS
BOOLEAN KeI386VirtualIntExtensions
struct _LARGE_IDENTITY_MAP * PLARGE_IDENTITY_MAP
ULONG KeI386EFlagsAndMaskV86
struct _FLOATING_SAVE_CONTEXT * PFLOATING_SAVE_CONTEXT
NTSTATUS NTAPI Ke386GetGdtEntryThread(IN PKTHREAD Thread, IN ULONG Offset, IN PKGDTENTRY Descriptor)
DECLSPEC_NORETURN VOID FASTCALL KiEoiHelper(IN PKTRAP_FRAME TrapFrame)
union _KTRAP_EXIT_SKIP_BITS KTRAP_EXIT_SKIP_BITS
VOID __cdecl KiFastCallEntry(VOID)
VOID NTAPI KiI386PentiumLockErrataFixup(VOID)
BOOLEAN NTAPI KiIsNpxErrataPresent(VOID)
CHAR KiSystemCallExitBranch[]
struct _KV86_FRAME * PKV86_FRAME
ULONG_PTR NTAPI Ki386EnableXMMIExceptions(IN ULONG_PTR Context)
VOID NTAPI KiAmdK6InitializeMTRR(VOID)
ULONG_PTR NTAPI Ki386EnableFxsr(IN ULONG_PTR Context)
VOID __cdecl ReadBatch(VOID)
BOOLEAN NTAPI Ki386CreateIdentityMap(IN PLARGE_IDENTITY_MAP IdentityMap, IN PVOID StartPtr, IN ULONG Length)
FORCEINLINE DECLSPEC_NORETURN VOID KiDispatchException0Args(IN NTSTATUS Code, IN ULONG_PTR Address, IN PKTRAP_FRAME TrapFrame)
ULONG KeI386EFlagsOrMaskV86
VOID NTAPI Ki386EnableCurrentLargePage(IN ULONG_PTR StartAddress, IN ULONG Cr3)
VOID NTAPI KiRestoreFastSyscallReturnState(VOID)
FORCEINLINE VOID KiSetTebBase(PKPCR Pcr, PNT_TIB TebAddress)
BOOLEAN KiI386PentiumLockErrataPresent
VOID __cdecl CopyParams(VOID)
ULONG_PTR NTAPI Ki386EnableGlobalPage(IN ULONG_PTR Context)
VOID NTAPI Ki386FreeIdentityMap(IN PLARGE_IDENTITY_MAP IdentityMap)
VOID NTAPI KiInitializeMTRR(IN BOOLEAN FinalCpu)
NTSTATUS NTAPI KiSystemCallTrampoline(_In_ PVOID Handler, _In_ PVOID Arguments, _In_ ULONG StackBytes)
VOID NTAPI KiSetCR0Bits(VOID)
VOID NTAPI Ki386SetupAndExitToV86Mode(OUT PTEB VdmTeb)
FORCEINLINE DECLSPEC_NORETURN VOID KiDispatchException1Args(IN NTSTATUS Code, IN ULONG_PTR Address, IN ULONG P1, IN PKTRAP_FRAME TrapFrame)
KIDTENTRY KiIdt[MAXIMUM_IDTVECTOR+1]
VOID NTAPI Ki386AdjustEsp0(IN PKTRAP_FRAME TrapFrame)
FORCEINLINE PFX_SAVE_AREA KiGetThreadNpxArea(IN PKTHREAD Thread)
VOID NTAPI KiInitializePcr(IN ULONG ProcessorNumber, IN PKIPCR Pcr, IN PKIDTENTRY Idt, IN PKGDTENTRY Gdt, IN PKTSS Tss, IN PKTHREAD IdleThread, IN PVOID DpcStack)
FORCEINLINE PVOID Ke386SanitizeDr(IN PVOID DrAddress, IN KPROCESSOR_MODE Mode)
ULONG_PTR FASTCALL KiExitV86Mode(IN PKTRAP_FRAME TrapFrame)
NTSTATUS NTAPI KiConvertToGuiThread(VOID)
struct _FLOATING_SAVE_CONTEXT FLOATING_SAVE_CONTEXT
FORCEINLINE DECLSPEC_NORETURN VOID KiIret(VOID)
struct _KV8086_STACK_FRAME * PKV8086_STACK_FRAME
FORCEINLINE VOID Ke386SetGdtEntryBase(PKGDTENTRY GdtEntry, PVOID BaseAddress)
DECLSPEC_NORETURN VOID FASTCALL KiServiceExit(IN PKTRAP_FRAME TrapFrame, IN NTSTATUS Status)
BOOLEAN NTAPI KiIsNpxPresent(VOID)
VOID FASTCALL Ki386BiosCallReturnAddress(IN PKTRAP_FRAME TrapFrame)
KDESCRIPTOR KiIdtDescriptor
ULONG_PTR NTAPI Ki386EnableDE(IN ULONG_PTR Context)
FORCEINLINE ULONG Ke386SanitizeSeg(IN ULONG Cs, IN KPROCESSOR_MODE Mode)
VOID NTAPI KeI386VdmInitialize(VOID)
FORCEINLINE VOID KiCheckForApcDelivery(IN PKTRAP_FRAME TrapFrame)
VOID NTAPI ExpInterlockedPopEntrySListFault(VOID)
VOID NTAPI KiThreadStartup(VOID)
VOID NTAPI KiDeliverApc(IN KPROCESSOR_MODE DeliveryMode, IN PKEXCEPTION_FRAME ExceptionFrame, IN PKTRAP_FRAME TrapFrame)
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
static void push(calc_node_t *op)
base of all file and directory entries
PFX_SAVE_AREA PfxSaveArea
ULONG PreviousPreviousMode
PHARDWARE_PTE TopLevelDirectory
_In_ UCHAR _In_ UCHAR _In_ ULONG Code
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _In_ ULONG Flags
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql