Make winkd somewhat portable.
[reactos.git] / reactos / ntoskrnl / kd64 / kddata.c
index 746fe98..9e9c25a 100644 (file)
@@ -328,6 +328,8 @@ DBGKD_GET_VERSION64 KdVersionBlock =
     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
@@ -348,26 +350,32 @@ KDDEBUGGER_DATA64 KdDebuggerDataBlock =
 {\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
@@ -404,17 +412,17 @@ KDDEBUGGER_DATA64 KdDebuggerDataBlock =
     {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
@@ -424,7 +432,7 @@ KDDEBUGGER_DATA64 KdDebuggerDataBlock =
     {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
@@ -451,18 +459,31 @@ KDDEBUGGER_DATA64 KdDebuggerDataBlock =
     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
@@ -473,6 +494,20 @@ KDDEBUGGER_DATA64 KdDebuggerDataBlock =
     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