1 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_I386_KE_H
2 #define __NTOSKRNL_INCLUDE_INTERNAL_I386_KE_H
9 extern ULONG Ke386CacheAlignment
;
11 #define IMAGE_FILE_MACHINE_ARCHITECTURE IMAGE_FILE_MACHINE_I386
14 // INT3 is 1 byte long
16 #define KD_BREAKPOINT_TYPE UCHAR
17 #define KD_BREAKPOINT_SIZE sizeof(UCHAR)
18 #define KD_BREAKPOINT_VALUE 0xCC
21 // Macros for getting and setting special purpose registers in portable code
23 #define KeGetContextPc(Context) \
26 #define KeSetContextPc(Context, ProgramCounter) \
27 ((Context)->Eip = (ProgramCounter))
29 #define KeGetTrapFramePc(TrapFrame) \
32 #define KeGetContextReturnRegister(Context) \
35 #define KeSetContextReturnRegister(Context, ReturnValue) \
36 ((Context)->Eax = (ReturnValue))
39 // Returns the Interrupt State from a Trap Frame.
40 // ON = TRUE, OFF = FALSE
42 #define KeGetTrapFrameInterruptState(TrapFrame) \
43 BooleanFlagOn((TrapFrame)->EFlags, EFLAGS_INTERRUPT_MASK)
46 // Invalidates the TLB entry for a specified address
50 KeInvalidateTlbEntry(IN PVOID Address
)
52 /* Invalidate the TLB entry for this address */
70 KiGetCacheInformation(VOID
);
86 KiSetProcessorType(VOID
);
90 KiGetFeatureBits(VOID
);
92 #ifdef _NTOSKRNL_ /* FIXME: Move flags above to NDK instead of here */
95 KiThreadStartup(PKSYSTEM_ROUTINE SystemRoutine
,
96 PKSTART_ROUTINE StartRoutine
,
99 KTRAP_FRAME TrapFrame
);
104 Ke386GetGdtEntryThread(
107 IN PKGDTENTRY Descriptor
111 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_KE_H */