[NDK]
[reactos.git] / reactos / include / ndk / amd64 / ketypes.h
index 583669c..8e4d421 100644 (file)
@@ -58,12 +58,14 @@ Author:
 //
 #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
 
 
 //
@@ -116,7 +118,7 @@ Author:
 //
 // HAL Variables
 //
-#define INITIAL_STALL_COUNT     0x64
+#define INITIAL_STALL_COUNT     100
 
 //
 // IOPM Definitions
@@ -164,30 +166,45 @@ typedef struct _KTRAP_FRAME
     UINT64 R9;
     UINT64 R10;
     UINT64 R11;
-    UINT64 GsBase;
-    UINT64 GsSwap;
+    union
+    {
+        UINT64 GsBase;
+        UINT64 GsSwap;
+    };
     M128A Xmm0;
     M128A Xmm1;
     M128A Xmm2;
     M128A Xmm3;
     M128A Xmm4;
     M128A Xmm5;
-    UINT64 FaultAddress;
-    UINT64 ContextRecord;
-    UINT64 TimeStampCKCL;
+    union
+    {
+        UINT64 FaultAddress;
+        UINT64 ContextRecord;
+        UINT64 TimeStampCKCL;
+    };
     UINT64 Dr0;
     UINT64 Dr1;
     UINT64 Dr2;
     UINT64 Dr3;
     UINT64 Dr6;
     UINT64 Dr7;
-    UINT64 DebugControl;
-    UINT64 LastBranchToRip;
-    UINT64 LastBranchFromRip;
-    UINT64 LastExceptionToRip;
-    UINT64 LastExceptionFromRip;
-    UINT64 LastBranchControl;
-    ULONG LastBranchMSR;
+    union
+    {
+        struct
+        {
+            UINT64 DebugControl;
+            UINT64 LastBranchToRip;
+            UINT64 LastBranchFromRip;
+            UINT64 LastExceptionToRip;
+            UINT64 LastExceptionFromRip;
+        };
+        struct
+        {
+            UINT64 LastBranchControl;
+            ULONG LastBranchMSR;
+        };
+    };
     USHORT SegDs;
     USHORT SegEs;
     USHORT SegFs;
@@ -197,9 +214,12 @@ typedef struct _KTRAP_FRAME
     UINT64 Rdi;
     UINT64 Rsi;
     UINT64 Rbp;
-    UINT64 ErrorCode;
-    UINT64 ExceptionFrame;
-    UINT64 TimeStampKlog;
+    union
+    {
+        UINT64 ErrorCode;
+        UINT64 ExceptionFrame;
+        UINT64 TimeStampKlog;
+    };
     UINT64 Rip;
     USHORT SegCs;
     UCHAR Fill0;
@@ -213,6 +233,27 @@ typedef struct _KTRAP_FRAME
     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
+//
+typedef ULONG LDT_ENTRY;
 
 //
 // GDT Entry Definition