1 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_AMD64_KE_H 2 #define __NTOSKRNL_INCLUDE_INTERNAL_AMD64_KE_H 4 #define X86_EFLAGS_TF 0x00000100 5 #define X86_EFLAGS_IF 0x00000200 6 #define X86_EFLAGS_IOPL 0x00003000 7 #define X86_EFLAGS_NT 0x00004000 8 #define X86_EFLAGS_RF 0x00010000 9 #define X86_EFLAGS_VM 0x00020000 10 #define X86_EFLAGS_ID 0x00200000 12 #define X86_CR0_PE 0x00000001 13 #define X86_CR0_NE 0x00000020 14 #define X86_CR0_TS 0x00000008 15 #define X86_CR0_EM 0x00000004 16 #define X86_CR0_MP 0x00000002 17 #define X86_CR0_WP 0x00010000 18 #define X86_CR0_PG 0x80000000 20 #define X86_CR4_PAE 0x00000020 21 #define X86_CR4_PGE 0x00000080 22 #define X86_CR4_OSFXSR 0x00000200 23 #define X86_CR4_OSXMMEXCPT 0x00000400 26 #define X86_FEATURE_FPU 0x00000001 27 #define X86_FEATURE_VME 0x00000002 28 #define X86_FEATURE_DBG 0x00000004 29 #define X86_FEATURE_PSE 0x00000008 30 #define X86_FEATURE_TSC 0x00000010 31 #define X86_FEATURE_PAE 0x00000040 32 #define X86_FEATURE_CX8 0x00000100 33 #define X86_FEATURE_SYSCALL 0x00000800 34 #define X86_FEATURE_MTTR 0x00001000 35 #define X86_FEATURE_PGE 0x00002000 36 #define X86_FEATURE_CMOV 0x00008000 37 #define X86_FEATURE_PAT 0x00010000 38 #define X86_FEATURE_DS 0x00200000 39 #define X86_FEATURE_MMX 0x00800000 40 #define X86_FEATURE_FXSR 0x01000000 41 #define X86_FEATURE_SSE 0x02000000 42 #define X86_FEATURE_SSE2 0x04000000 43 #define X86_FEATURE_HT 0x10000000 46 #define X86_FEATURE_SSE3 0x00000001 47 #define X86_FEATURE_MONITOR 0x00000008 48 #define X86_FEATURE_VMX 0x00000020 49 #define X86_FEATURE_SSSE3 0x00000200 50 #define X86_FEATURE_FMA3 0x00001000 51 #define X86_FEATURE_CX16 0x00002000 52 #define X86_FEATURE_PCID 0x00020000 53 #define X86_FEATURE_SSE41 0x00080000 54 #define X86_FEATURE_SSE42 0x00100000 55 #define X86_FEATURE_POPCNT 0x00800000 56 #define X86_FEATURE_XSAVE 0x04000000 59 #define X86_FEATURE_NX 0x00100000 61 #define X86_EXT_FEATURE_SSE3 0x00000001 62 #define X86_EXT_FEATURE_3DNOW 0x40000000 64 #define FRAME_EDITED 0xFFF8 66 #define X86_MSR_GSBASE 0xC0000101 67 #define X86_MSR_KERNEL_GSBASE 0xC0000102 68 #define X86_MSR_EFER 0xC0000080 69 #define X86_MSR_STAR 0xC0000081 70 #define X86_MSR_LSTAR 0xC0000082 71 #define X86_MSR_CSTAR 0xC0000083 72 #define X86_MSR_SFMASK 0xC0000084 74 #define EFER_SCE 0x0001 75 #define EFER_LME 0x0100 76 #define EFER_LMA 0x0400 77 #define EFER_NXE 0x0800 78 #define EFER_SVME 0x1000 79 #define EFER_FFXSR 0x4000 83 #define APIC_EOI_REGISTER 0xFFFFFFFFFFFE00B0ULL 117 #define KD_BREAKPOINT_TYPE UCHAR 118 #define KD_BREAKPOINT_SIZE sizeof(UCHAR) 119 #define KD_BREAKPOINT_VALUE 0xCC 177 return TrapFrame->
Rip;
191 return TrapFrame->
Rsp;
198 return TrapFrame->
Rbp;
204 #define KeGetTrapFrame(Thread) \ 205 (PKTRAP_FRAME)((ULONG_PTR)((Thread)->InitialStack) - \ 212 #define KeGetContextSwitches(Prcb) \ 213 (Prcb->KeContextSwitches) 219 #define KiGetSecondLevelDCacheSize() ((PKIPCR)KeGetPcr())->SecondLevelCacheSize 221 #define KeGetExceptionFrame(Thread) \ 222 (PKEXCEPTION_FRAME)((ULONG_PTR)KeGetTrapFrame(Thread) - \ 223 sizeof(KEXCEPTION_FRAME)) 229 #define KeGetTrapFrameInterruptState(TrapFrame) \ 230 BooleanFlagOn((TrapFrame)->EFlags, EFLAGS_INTERRUPT_MASK) 354 ASSERT(TrapFrame->ErrorCode == 0xc10c4);
366 #define Ki386PerfEnd() 418 #define KeArchInitThreadWithContext(Thread,SystemRoutine,StartRoutine,StartContext,Context) \ 419 Ke386InitThreadWithContext(Thread,SystemRoutine,StartRoutine,StartContext,Context) VOID KiSetTrapContext(_Out_ PKTRAP_FRAME TrapFrame, _In_ PCONTEXT Context, _In_ KPROCESSOR_MODE RequestorMode)
struct _KI_INTERRUPT_DISPATCH_ENTRY * PKI_INTERRUPT_DISPATCH_ENTRY
VOID KiSegmentNotPresentFault(VOID)
VOID KeFreeGdtSelector(ULONG Entry)
VOID Ki386SetProcessorFeatures(VOID)
FORCEINLINE VOID KeSetContextFrameRegister(PCONTEXT Context, ULONG_PTR Frame)
_Out_ PULONG NumberOfMapRegisters
FORCEINLINE PKTRAP_FRAME KiGetLinkedTrapFrame(PKTRAP_FRAME TrapFrame)
#define PsGetCurrentThread()
VOID KiGdtPrepareForApplicationProcessorInit(ULONG Id)
DECLSPEC_NORETURN VOID KiSwitchToBootStack(IN ULONG_PTR InitialStack)
struct _KIDT_INIT * PKIDT_INIT
VOID KiGeneralProtectionFault(VOID)
_In_ ULONG _In_opt_ POBJECT_ATTRIBUTES _In_opt_ HANDLE _Out_opt_ PCLIENT_ID _In_ PKSTART_ROUTINE StartRoutine
#define UNREFERENCED_PARAMETER(P)
VOID KiDivideErrorFault(VOID)
void __cdecl _enable(void)
ULONG KiGetFeatureBits(VOID)
VOID KiInvalidOpcodeFault(VOID)
ULONG KeAllocateGdtSelector(ULONG Desc[2])
VOID KiDebugTrapOrFault(VOID)
__INTRIN_INLINE unsigned long __readcr3(void)
union _KIDTENTRY64 * IdtBase
FORCEINLINE PULONG_PTR KiGetUserModeStackAddress(void)
#define DECLSPEC_NORETURN
FORCEINLINE PVOID KeQueryInterruptHandler(IN ULONG Vector)
__INTRIN_INLINE void __writecr3(unsigned int Data)
VOID(NTAPI * PKSYSTEM_ROUTINE)(PKSTART_ROUTINE StartRoutine, PVOID StartContext)
__INTRIN_INLINE uintptr_t __readeflags(void)
UINT32 void void ** ReturnValue
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
KSTART_ROUTINE * PKSTART_ROUTINE
FORCEINLINE VOID KeSetContextPc(PCONTEXT Context, ULONG_PTR ProgramCounter)
VOID KiApcInterrupt(VOID)
VOID KiNpxSegmentOverrunAbort(VOID)
VOID KiIpiInterrupt(VOID)
FORCEINLINE BOOLEAN KeDisableInterrupts(VOID)
FORCEINLINE ULONG_PTR KeGetTrapFrameStackRegister(PKTRAP_FRAME TrapFrame)
VOID KiInitializeCpuFeatures(VOID)
VOID KiDoubleFaultAbort(VOID)
FORCEINLINE VOID KeInvalidateTlbEntry(IN PVOID Address)
VOID KiNmiInterrupt(VOID)
struct _KIDT_INIT KIDT_INIT
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
_Must_inspect_result_ _In_ ULONG Flags
FORCEINLINE ULONG_PTR KeGetContextStackRegister(PCONTEXT Context)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
VOID KiGetCacheInformation(VOID)
VOID KiInvalidTssFault(VOID)
PPC_QUAL void __wbinvd(void)
FORCEINLINE ULONG_PTR KeGetContextPc(PCONTEXT Context)
VOID KiNpxNotAvailableFault(VOID)
#define APIC_EOI_REGISTER
VOID KiDpcInterrupt(VOID)
NTKERNELAPI volatile KSYSTEM_TIME KeTickCount
FORCEINLINE VOID KeSetContextReturnRegister(PCONTEXT Context, ULONG_PTR ReturnValue)
VOID KiXmmException(VOID)
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
VOID Ke386InitThreadWithContext(PKTHREAD Thread, PKSYSTEM_ROUTINE SystemRoutine, PKSTART_ROUTINE StartRoutine, PVOID StartContext, PCONTEXT Context)
FORCEINLINE PKPCR KeGetPcr(VOID)
FORCEINLINE VOID KiSendEOI(VOID)
FORCEINLINE VOID KeRegisterInterruptHandler(IN ULONG Vector, IN PVOID Handler)
FORCEINLINE ULONG_PTR KeGetTrapFramePc(PKTRAP_FRAME TrapFrame)
FORCEINLINE ULONG_PTR KeGetContextReturnRegister(PCONTEXT Context)
VOID KiAlignmentFault(VOID)
VOID KeCreateApplicationProcessorIdleThread(ULONG Id)
FORCEINLINE ULONG_PTR KeGetContextFrameRegister(PCONTEXT Context)
VOID KiBreakpointTrap(VOID)
FORCEINLINE VOID KeRestoreInterrupts(BOOLEAN WereEnabled)
VOID Ki386InitializeLdt(VOID)
FORCEINLINE VOID KiRundownThread(IN PKTHREAD Thread)
struct _KI_INTERRUPT_DISPATCH_ENTRY KI_INTERRUPT_DISPATCH_ENTRY
VOID KiFloatingErrorFault(VOID)
FORCEINLINE VOID KiEndInterrupt(IN KIRQL Irql, IN PKTRAP_FRAME TrapFrame)
FORCEINLINE VOID KeFlushProcessTb(VOID)
__INTRIN_INLINE void __invlpg(void *Address)
VOID NTAPI KiThreadStartup(VOID)
_In_ PDEVICE_OBJECT _In_ ULONG _In_ PDRIVER_CONTROL ExecutionRoutine
void __cdecl _disable(void)
FORCEINLINE ULONG_PTR KeGetTrapFrameFrameRegister(PKTRAP_FRAME TrapFrame)
VOID NtEarlyInitVdm(VOID)
DRIVER_CONTROL * PDRIVER_CONTROL
VOID KiDebugServiceTrap(VOID)
VOID KiSetProcessorType(VOID)
VOID KiOverflowTrap(VOID)
VOID KiRaiseAssertion(VOID)
VOID KeApplicationProcessorInitDispatcher(VOID)
base of all file and directory entries
FORCEINLINE VOID KeSweepICache(IN PVOID BaseAddress, IN SIZE_T FlushSize)
#define EFLAGS_INTERRUPT_MASK
NTHALAPI NTSTATUS NTAPI HalAllocateAdapterChannel(IN PADAPTER_OBJECT AdapterObject, IN PWAIT_CONTEXT_BLOCK Wcb, IN ULONG NumberOfMapRegisters, IN PDRIVER_CONTROL ExecutionRoutine)
#define HalVectorToIDTEntry