// 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
//
//
typedef struct _KD_CONTEXT
{
- ULONG KdpDefaultRetries;
- BOOLEAN KdpControlCPending;
+ ULONG RetryCount;
+ BOOLEAN BreakInRequested;
} KD_CONTEXT, *PKD_CONTEXT;
//
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;
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>
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
//
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
{
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
//
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
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
} u;
} DBGKD_TRACE_IO, *PDBGKD_TRACE_IO;
-FORCEINLINE
+static
+__inline
VOID
+NTAPI
ExceptionRecord32To64(IN PEXCEPTION_RECORD32 Ex32,
OUT PEXCEPTION_RECORD64 Ex64)
{
}
}
-#ifdef _WIN64
-#define ExceptionRecordTo64(Ex, Ex64) \
- (*(Ex64)) = (*(PEXCEPTION_RECORD64)(Ex))
-#else
-#define ExceptionRecordTo64(Ex, Ex64) \
- ExceptionRecord32To64((PEXCEPTION_RECORD32)Ex, Ex64)
-#endif
-
#endif