Merge trunk head (r43756)
[reactos.git] / reactos / include / reactos / windbgkd.h
index c956970..d53195a 100644 (file)
 // Control Report Flags
 //
 #define REPORT_INCLUDES_SEGS                0x0001
-#define REPORT_INCLUDES_CS                  0x0002
+#define REPORT_STANDARD_CS                  0x0002
 
 //
 // Protocol Versions
 // Fill Memory Flags
 //
 #define DBGKD_FILL_MEMORY_VIRTUAL           0x01
-#define DBGKD_FILL_MEMORY_PHYSICAL          0x002
+#define DBGKD_FILL_MEMORY_PHYSICAL          0x02
 
 //
 // Physical Memory Caching Flags
 #define DBGKD_PARTITION_DEFAULT             0x00
 #define DBGKD_PARTITION_ALTERNATE           0x01
 
+//
+// AMD64 Control Space types
+//
+#define AMD64_DEBUG_CONTROL_SPACE_KPCR 0
+#define AMD64_DEBUG_CONTROL_SPACE_KPRCB 1
+#define AMD64_DEBUG_CONTROL_SPACE_KSPECIAL 2
+#define AMD64_DEBUG_CONTROL_SPACE_KTHREAD 3
+
+
 //
 // KD Packet Structure
 //
@@ -211,8 +220,8 @@ typedef struct _KD_PACKET
 //
 typedef struct _KD_CONTEXT
 {
-    ULONG KdpDefaultRetries;
-    BOOLEAN KdpControlCPending;
+    ULONG RetryCount;
+    BOOLEAN BreakInRequested;
 } KD_CONTEXT, *PKD_CONTEXT;
 
 //
@@ -227,6 +236,11 @@ typedef struct _X86_DBGKD_CONTROL_SET
     ULONG CurrentSymbolEnd;
 } X86_DBGKD_CONTROL_SET, *PX86_DBGKD_CONTROL_SET;
 
+typedef struct _ALPHA_DBGKD_CONTROL_SET
+{
+    ULONG __padding;
+} ALPHA_DBGKD_CONTROL_SET, *PALPHA_DBGKD_CONTROL_SET;
+
 typedef struct _IA64_DBGKD_CONTROL_SET
 {
     ULONG Continue;
@@ -254,9 +268,10 @@ typedef struct _DBGKD_ANY_CONTROL_SET
     union
     {
         X86_DBGKD_CONTROL_SET X86ControlSet;
+        ALPHA_DBGKD_CONTROL_SET AlphaControlSet;
         IA64_DBGKD_CONTROL_SET IA64ControlSet;
         AMD64_DBGKD_CONTROL_SET Amd64ControlSet;
-        ARM_DBGKD_CONTROL_SET ArmControlSet;
+        ARM_DBGKD_CONTROL_SET ARMControlSet;
     };
 } DBGKD_ANY_CONTROL_SET, *PDBGKD_ANY_CONTROL_SET;
 #include <poppack.h>
@@ -265,8 +280,10 @@ typedef struct _DBGKD_ANY_CONTROL_SET
 typedef X86_DBGKD_CONTROL_SET DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
 #elif defined(_M_AMD64)
 typedef AMD64_DBGKD_CONTROL_SET DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
+#elif defined(_M_ARM)
+typedef ARM_DBGKD_CONTROL_SET DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
 #else
-#error unsupported architecture
+#error Unsupported Architecture
 #endif
 
 //
@@ -327,13 +344,12 @@ typedef struct _AMD64_DBGKD_CONTROL_REPORT
     USHORT SegFs;
 } AMD64_DBGKD_CONTROL_REPORT, *PAMD64_DBGKD_CONTROL_REPORT;
 
-#if defined(_M_IX86)
-typedef X86_DBGKD_CONTROL_REPORT DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
-#elif defined(_M_AMD64)
-typedef AMD64_DBGKD_CONTROL_REPORT DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
-#else
-#error unsupported architecture
-#endif
+typedef struct _ARM_DBGKD_CONTROL_REPORT
+{
+    ULONG Cpsr;
+    ULONG InstructionCount;
+    UCHAR InstructionStream[DBGKD_MAXSTREAM];
+} ARM_DBGKD_CONTROL_REPORT, *PARM_DBGKD_CONTROL_REPORT;
 
 typedef struct _DBGKD_ANY_CONTROL_REPORT
 {
@@ -343,9 +359,20 @@ typedef struct _DBGKD_ANY_CONTROL_REPORT
         ALPHA_DBGKD_CONTROL_REPORT AlphaControlReport;
         IA64_DBGKD_CONTROL_REPORT IA64ControlReport;
         AMD64_DBGKD_CONTROL_REPORT Amd64ControlReport;
+        ARM_DBGKD_CONTROL_REPORT ARMControlReport;
     };
 } DBGKD_ANY_CONTROL_REPORT, *PDBGKD_ANY_CONTROL_REPORT;
 
+#if defined(_M_IX86)
+typedef X86_DBGKD_CONTROL_REPORT DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+#elif defined(_M_AMD64)
+typedef AMD64_DBGKD_CONTROL_REPORT DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+#elif defined(_M_ARM)
+typedef ARM_DBGKD_CONTROL_REPORT DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+#else
+#error Unsupported Architecture
+#endif
+
 //
 // DBGKD Structure for Debug I/O Type Print String
 //
@@ -428,8 +455,6 @@ typedef struct _DBGKD_WAIT_STATE_CHANGE32
         DBGKM_EXCEPTION32 Exception;
         DBGKD_LOAD_SYMBOLS32 LoadSymbols;
     } u;
-    DBGKD_CONTROL_REPORT ControlReport;
-    CONTEXT Context;
 } DBGKD_WAIT_STATE_CHANGE32, *PDBGKD_WAIT_STATE_CHANGE32;
 
 typedef struct _DBGKD_WAIT_STATE_CHANGE64
@@ -445,8 +470,6 @@ typedef struct _DBGKD_WAIT_STATE_CHANGE64
         DBGKM_EXCEPTION64 Exception;
         DBGKD_LOAD_SYMBOLS64 LoadSymbols;
     } u;
-    DBGKD_CONTROL_REPORT ControlReport;
-    CONTEXT Context;
 } DBGKD_WAIT_STATE_CHANGE64, *PDBGKD_WAIT_STATE_CHANGE64;
 
 typedef struct _DBGKD_ANY_WAIT_STATE_CHANGE
@@ -846,8 +869,10 @@ typedef struct _DBGKD_TRACE_IO
    } u;
 } DBGKD_TRACE_IO, *PDBGKD_TRACE_IO;
 
-FORCEINLINE
+static
+__inline
 VOID
+NTAPI
 ExceptionRecord32To64(IN PEXCEPTION_RECORD32 Ex32,
                       OUT PEXCEPTION_RECORD64 Ex64)
 {
@@ -865,12 +890,4 @@ ExceptionRecord32To64(IN PEXCEPTION_RECORD32 Ex32,
     }
 }
 
-#ifdef _WIN64
-#define ExceptionRecordTo64(Ex, Ex64) \
-            (*(Ex64)) = (*(PEXCEPTION_RECORD64)(Ex))
-#else
-#define ExceptionRecordTo64(Ex, Ex64) \
-            ExceptionRecord32To64((PEXCEPTION_RECORD32)Ex, Ex64)
-#endif
-
 #endif