// Debugger State\r
//\r
KD_CONTEXT KdpContext;\r
-BOOLEAN KdpControlCPressed;\r
-BOOLEAN KdpControlCWaiting;\r
BOOLEAN KdpPortLocked;\r
KSPIN_LOCK KdpDebuggerLock;\r
+BOOLEAN KdpControlCPressed;\r
\r
//\r
// Debug Trap Handlers\r
ULONG KdDisableCount;\r
LARGE_INTEGER KdPerformanceCounterRate;\r
\r
+//\r
+// Breakpoint Data\r
+//\r
+BREAKPOINT_ENTRY KdpBreakpointTable[20];\r
+ULONG KdpBreakpointInstruction = 0xCC;\r
+BOOLEAN KdpOweBreakpoint;\r
+BOOLEAN BreakpointsSuspended;\r
+ULONG KdpNumInternalBreakpoints;\r
+\r
+ULONG KdpCurrentSymbolStart, KdpCurrentSymbolEnd;\r
+\r
+//\r
+// Tracepoint Data\r
+//\r
+ULONG TraceDataBuffer[40];\r
+ULONG TraceDataBufferPosition = 1;\r
+\r
//\r
// Time Slip Support\r
//\r
DBGKD_64BIT_PROTOCOL_VERSION2,\r
KD_SECONDARY_VERSION_DEFAULT,\r
DBGKD_VERS_FLAG_DATA,\r
+#if defined(_M_IX86)\r
IMAGE_FILE_MACHINE_I386,\r
+#elif defined (_M_AMD64)\r
+ IMAGE_FILE_MACHINE_AMD64,\r
+#elif defined(_M_PPC)\r
+ IMAGE_FILE_MACHINE_POWERPC,\r
+#elif defined(_M_MIPS)\r
+ IMAGE_FILE_MACHINE_R4000,\r
+#else\r
+#error Unknown platform\r
+#endif\r
PACKET_TYPE_MAX,\r
0,\r
0,\r
{\r
{{0}},\r
0,\r
- {PtrToUlong(RtlpBreakWithStatusInstruction)},\r
+ {(ULONG_PTR)RtlpBreakWithStatusInstruction},\r
0,\r
FIELD_OFFSET(KTHREAD, CallbackStack),\r
CBSTACK_CALLBACK_STACK,\r
+#if defined(_M_X86)\r
CBSTACK_EBP,\r
+#elif defined (_M_AMD64)\r
+ CBSTACK_RBP,\r
+#else\r
+#error Invalid architecture\r
+#endif\r
0,\r
- {PtrToUlong(KiCallUserMode)},\r
+ {(ULONG_PTR)KiCallUserMode},\r
{0},\r
- {PtrToUlong(&PsLoadedModuleList)},\r
- {PtrToUlong(&PsActiveProcessHead)},\r
- {PtrToUlong(&PspCidTable)},\r
- {PtrToUlong(&ExpSystemResourcesList)},\r
+ {(ULONG_PTR)&PsLoadedModuleList},\r
+ {(ULONG_PTR)&PsActiveProcessHead},\r
+ {(ULONG_PTR)&PspCidTable},\r
+ {(ULONG_PTR)&ExpSystemResourcesList},\r
{0}, // ExpPagedPoolDescriptor\r
{0}, // ExpNumberOfPagedPools\r
- {PtrToUlong(&KeTimeIncrement)},\r
- {PtrToUlong(&KeBugcheckCallbackListHead)},\r
- {PtrToUlong(KiBugCheckData)},\r
- {PtrToUlong(&IopErrorLogListHead)},\r
- {PtrToUlong(&ObpRootDirectoryObject)},\r
- {PtrToUlong(&ObpTypeObjectType)},\r
+ {(ULONG_PTR)&KeTimeIncrement},\r
+ {(ULONG_PTR)&KeBugcheckCallbackListHead},\r
+ {(ULONG_PTR)KiBugCheckData},\r
+ {(ULONG_PTR)&IopErrorLogListHead},\r
+ {(ULONG_PTR)&ObpRootDirectoryObject},\r
+ {(ULONG_PTR)&ObpTypeObjectType},\r
{0}, // MmSystemCacheStart\r
{0}, // MmSystemCacheEnd\r
{0}, // MmSystemCacheWs\r
{0}, // MmResidentAvailablePages\r
{0}, // PoolTrackTable\r
{0}, // NonPagedPoolDescriptor\r
- {PtrToUlong(&MmHighestUserAddress)},\r
- {PtrToUlong(&MmSystemRangeStart)},\r
- {PtrToUlong(&MmUserProbeAddress)},\r
- {PtrToUlong(KdPrintDefaultCircularBuffer)},\r
- {PtrToUlong(KdPrintDefaultCircularBuffer + 1)},\r
- {PtrToUlong(&KdPrintWritePointer)},\r
- {PtrToUlong(&KdPrintRolloverCount)},\r
+ {(ULONG_PTR)&MmHighestUserAddress},\r
+ {(ULONG_PTR)&MmSystemRangeStart},\r
+ {(ULONG_PTR)&MmUserProbeAddress},\r
+ {(ULONG_PTR)KdPrintDefaultCircularBuffer},\r
+ {(ULONG_PTR)(KdPrintDefaultCircularBuffer + 1)},\r
+ {(ULONG_PTR)&KdPrintWritePointer},\r
+ {(ULONG_PTR)&KdPrintRolloverCount},\r
{0}, // MmLoadedUserImageList\r
- {PtrToUlong(&NtBuildLab)},\r
+ {(ULONG_PTR)&NtBuildLab},\r
{0},\r
- {PtrToUlong(KiProcessorBlock)},\r
+ {(ULONG_PTR)KiProcessorBlock},\r
{0}, // MmUnloadedDrivers\r
{0}, // MmLastUnloadedDrivers\r
{0}, // MmTriageActionTaken\r
{0}, // MmAllocatedNonPagedPool\r
{0}, // MmPeakCommitment\r
{0}, // MmtotalCommitLimitMaximum\r
- {PtrToUlong(&CmNtCSDVersion)},\r
+ {(ULONG_PTR)&CmNtCSDVersion},\r
{0}, // MmPhysicalMemoryBlock\r
{0}, // MmSessionBase\r
{0}, // MmSessionSize\r
FIELD_OFFSET(KPRCB, ProcessorState.ContextFrame),\r
FIELD_OFFSET(KPRCB, Number),\r
sizeof(ETHREAD),\r
- {PtrToUlong(KdPrintDefaultCircularBuffer)},\r
- {PtrToUlong(&KdPrintBufferSize)},\r
- {PtrToUlong(&KeLoaderBlock)},\r
+ {(ULONG_PTR)KdPrintDefaultCircularBuffer},\r
+ {(ULONG_PTR)&KdPrintBufferSize},\r
+ {(ULONG_PTR)&KeLoaderBlock},\r
sizeof(KIPCR) + sizeof(KPRCB),\r
FIELD_OFFSET(KIPCR, Self),\r
+#if defined(_M_X86)\r
FIELD_OFFSET(KPCR, Prcb),\r
+#elif defined(_M_AMD64)\r
+ FIELD_OFFSET(KPCR, CurrentPrcb),\r
+#else\r
+ #error Invalid architecture\r
+#endif\r
+#if defined(_M_X86)\r
FIELD_OFFSET(KIPCR, PrcbData),\r
+#elif defined(_M_AMD64)\r
+ FIELD_OFFSET(KIPCR, Prcb),\r
+#else\r
+ #error Invalid architecture\r
+#endif\r
0,\r
0,\r
0,\r
0,\r
0,\r
+#if defined(_M_X86)\r
FIELD_OFFSET(KIPCR, PrcbData) +\r
FIELD_OFFSET(KPRCB, ProcessorState.SpecialRegisters),\r
KGDT_R0_CODE,\r
KGDT_R3_TEB,\r
KGDT_LDT,\r
KGDT_TSS,\r
+#elif defined(_M_AMD64)\r
+ FIELD_OFFSET(KIPCR, Prcb) +\r
+ FIELD_OFFSET(KPRCB, ProcessorState.SpecialRegisters),\r
+ KGDT_64_R0_CODE,\r
+ KGDT_64_DATA,\r
+ KGDT_64_DATA,\r
+ KGDT_64_R3_CODE,\r
+ KGDT_64_DATA,\r
+ KGDT_64_DATA,\r
+ 0,\r
+ KGDT_TSS,\r
+#else\r
+ #error Invalid architecture\r
+#endif\r
0,\r
0,\r
{0}, // IopNumTriagDumpDataBlocks\r