//
#define RPL_MASK 0x0003
#define MODE_MASK 0x0001
-#define KGDT_64_R0_CODE 0x0010
-#define KGDT_64_R0_SS 0x0018
-#define KGDT_64_DATA 0x0028 // 2b
-#define KGDT_64_R3_CODE 0x0030 // 33
-#define KGDT_TSS 0x0040
-#define KGDT_32_R3_TEB 0x0050 // 53
+#define KGDT64_NULL 0x0000
+#define KGDT64_R0_CODE 0x0010
+#define KGDT64_R0_DATA 0x0018
+#define KGDT64_R3_CMCODE 0x0020
+#define KGDT64_R3_DATA 0x0028
+#define KGDT64_R3_CODE 0x0030
+#define KGDT64_SYS_TSS 0x0040
+#define KGDT64_R3_CMTEB 0x0050
+
//
// CR4
//
// HAL Variables
//
-#define INITIAL_STALL_COUNT 0x64
+#define INITIAL_STALL_COUNT 100
//
// IOPM Definitions
LONG CodePatchCycle;
} KTRAP_FRAME, *PKTRAP_FRAME;
+//
+// Defines the Callback Stack Layout for User Mode Callbacks
+//
+typedef struct _KCALLOUT_FRAME
+{
+ ULONG64 InitialStack;
+ ULONG64 TrapFrame;
+ ULONG64 CallbackStack;
+ ULONG64 Rdi;
+ ULONG64 Rsi;
+ ULONG64 Rbx;
+ ULONG64 Rbp;
+ ULONG64 ReturnAddress;
+ ULONG64 Result;
+ ULONG64 ResultLength;
+} KCALLOUT_FRAME, *PKCALLOUT_FRAME;
+
//
// Dummy LDT_ENTRY
//
-#ifndef _LDT_ENTRY_DEFINED
-#define _LDT_ENTRY_DEFINED
typedef ULONG LDT_ENTRY;
-#endif
//
// GDT Entry Definition