xref: /openbmc/qemu/contrib/elf2dmp/kdbg.h (revision 3e29da9fd81002a0c03041aaa26dea6d9dd9bd65)
1  /*
2   * Copyright (c) 2018 Virtuozzo International GmbH
3   *
4   * This work is licensed under the terms of the GNU GPL, version 2 or later.
5   *
6   */
7  
8  #ifndef KDBG_H
9  #define KDBG_H
10  
11  typedef struct DBGKD_GET_VERSION64 {
12      uint16_t  MajorVersion;
13      uint16_t  MinorVersion;
14      uint8_t   ProtocolVersion;
15      uint8_t   KdSecondaryVersion;
16      uint16_t  Flags;
17      uint16_t  MachineType;
18      uint8_t   MaxPacketType;
19      uint8_t   MaxStateChange;
20      uint8_t   MaxManipulate;
21      uint8_t   Simulation;
22      uint16_t  Unused[1];
23      uint64_t KernBase;
24      uint64_t PsLoadedModuleList;
25      uint64_t DebuggerDataList;
26  } DBGKD_GET_VERSION64;
27  
28  #ifndef _WIN32
29  typedef struct LIST_ENTRY64 {
30      struct LIST_ENTRY64 *Flink;
31      struct LIST_ENTRY64 *Blink;
32  } LIST_ENTRY64;
33  #endif
34  
35  typedef struct DBGKD_DEBUG_DATA_HEADER64 {
36      LIST_ENTRY64    List;
37      uint32_t           OwnerTag;
38      uint32_t           Size;
39  } DBGKD_DEBUG_DATA_HEADER64;
40  
41  typedef struct KDDEBUGGER_DATA64 {
42      DBGKD_DEBUG_DATA_HEADER64 Header;
43  
44      uint64_t KernBase;
45      uint64_t BreakpointWithStatus;
46      uint64_t SavedContext;
47      uint16_t ThCallbackStack;
48      uint16_t NextCallback;
49      uint16_t FramePointer;
50      uint16_t PaeEnabled:1;
51      uint64_t KiCallUserMode;
52      uint64_t KeUserCallbackDispatcher;
53      uint64_t PsLoadedModuleList;
54      uint64_t PsActiveProcessHead;
55      uint64_t PspCidTable;
56      uint64_t ExpSystemResourcesList;
57      uint64_t ExpPagedPoolDescriptor;
58      uint64_t ExpNumberOfPagedPools;
59      uint64_t KeTimeIncrement;
60      uint64_t KeBugCheckCallbackListHead;
61      uint64_t KiBugcheckData;
62      uint64_t IopErrorLogListHead;
63      uint64_t ObpRootDirectoryObject;
64      uint64_t ObpTypeObjectType;
65      uint64_t MmSystemCacheStart;
66      uint64_t MmSystemCacheEnd;
67      uint64_t MmSystemCacheWs;
68      uint64_t MmPfnDatabase;
69      uint64_t MmSystemPtesStart;
70      uint64_t MmSystemPtesEnd;
71      uint64_t MmSubsectionBase;
72      uint64_t MmNumberOfPagingFiles;
73      uint64_t MmLowestPhysicalPage;
74      uint64_t MmHighestPhysicalPage;
75      uint64_t MmNumberOfPhysicalPages;
76      uint64_t MmMaximumNonPagedPoolInBytes;
77      uint64_t MmNonPagedSystemStart;
78      uint64_t MmNonPagedPoolStart;
79      uint64_t MmNonPagedPoolEnd;
80      uint64_t MmPagedPoolStart;
81      uint64_t MmPagedPoolEnd;
82      uint64_t MmPagedPoolInformation;
83      uint64_t MmPageSize;
84      uint64_t MmSizeOfPagedPoolInBytes;
85      uint64_t MmTotalCommitLimit;
86      uint64_t MmTotalCommittedPages;
87      uint64_t MmSharedCommit;
88      uint64_t MmDriverCommit;
89      uint64_t MmProcessCommit;
90      uint64_t MmPagedPoolCommit;
91      uint64_t MmExtendedCommit;
92      uint64_t MmZeroedPageListHead;
93      uint64_t MmFreePageListHead;
94      uint64_t MmStandbyPageListHead;
95      uint64_t MmModifiedPageListHead;
96      uint64_t MmModifiedNoWritePageListHead;
97      uint64_t MmAvailablePages;
98      uint64_t MmResidentAvailablePages;
99      uint64_t PoolTrackTable;
100      uint64_t NonPagedPoolDescriptor;
101      uint64_t MmHighestUserAddress;
102      uint64_t MmSystemRangeStart;
103      uint64_t MmUserProbeAddress;
104      uint64_t KdPrintCircularBuffer;
105      uint64_t KdPrintCircularBufferEnd;
106      uint64_t KdPrintWritePointer;
107      uint64_t KdPrintRolloverCount;
108      uint64_t MmLoadedUserImageList;
109  
110      /* NT 5.1 Addition */
111  
112      uint64_t NtBuildLab;
113      uint64_t KiNormalSystemCall;
114  
115      /* NT 5.0 hotfix addition */
116  
117      uint64_t KiProcessorBlock;
118      uint64_t MmUnloadedDrivers;
119      uint64_t MmLastUnloadedDriver;
120      uint64_t MmTriageActionTaken;
121      uint64_t MmSpecialPoolTag;
122      uint64_t KernelVerifier;
123      uint64_t MmVerifierData;
124      uint64_t MmAllocatedNonPagedPool;
125      uint64_t MmPeakCommitment;
126      uint64_t MmTotalCommitLimitMaximum;
127      uint64_t CmNtCSDVersion;
128  
129      /* NT 5.1 Addition */
130  
131      uint64_t MmPhysicalMemoryBlock;
132      uint64_t MmSessionBase;
133      uint64_t MmSessionSize;
134      uint64_t MmSystemParentTablePage;
135  
136      /* Server 2003 addition */
137  
138      uint64_t MmVirtualTranslationBase;
139      uint16_t OffsetKThreadNextProcessor;
140      uint16_t OffsetKThreadTeb;
141      uint16_t OffsetKThreadKernelStack;
142      uint16_t OffsetKThreadInitialStack;
143      uint16_t OffsetKThreadApcProcess;
144      uint16_t OffsetKThreadState;
145      uint16_t OffsetKThreadBStore;
146      uint16_t OffsetKThreadBStoreLimit;
147      uint16_t SizeEProcess;
148      uint16_t OffsetEprocessPeb;
149      uint16_t OffsetEprocessParentCID;
150      uint16_t OffsetEprocessDirectoryTableBase;
151      uint16_t SizePrcb;
152      uint16_t OffsetPrcbDpcRoutine;
153      uint16_t OffsetPrcbCurrentThread;
154      uint16_t OffsetPrcbMhz;
155      uint16_t OffsetPrcbCpuType;
156      uint16_t OffsetPrcbVendorString;
157      uint16_t OffsetPrcbProcStateContext;
158      uint16_t OffsetPrcbNumber;
159      uint16_t SizeEThread;
160      uint64_t KdPrintCircularBufferPtr;
161      uint64_t KdPrintBufferSize;
162      uint64_t KeLoaderBlock;
163      uint16_t SizePcr;
164      uint16_t OffsetPcrSelfPcr;
165      uint16_t OffsetPcrCurrentPrcb;
166      uint16_t OffsetPcrContainedPrcb;
167      uint16_t OffsetPcrInitialBStore;
168      uint16_t OffsetPcrBStoreLimit;
169      uint16_t OffsetPcrInitialStack;
170      uint16_t OffsetPcrStackLimit;
171      uint16_t OffsetPrcbPcrPage;
172      uint16_t OffsetPrcbProcStateSpecialReg;
173      uint16_t GdtR0Code;
174      uint16_t GdtR0Data;
175      uint16_t GdtR0Pcr;
176      uint16_t GdtR3Code;
177      uint16_t GdtR3Data;
178      uint16_t GdtR3Teb;
179      uint16_t GdtLdt;
180      uint16_t GdtTss;
181      uint16_t Gdt64R3CmCode;
182      uint16_t Gdt64R3CmTeb;
183      uint64_t IopNumTriageDumpDataBlocks;
184      uint64_t IopTriageDumpDataBlocks;
185  
186      /* Longhorn addition */
187  
188      uint64_t VfCrashDataBlock;
189      uint64_t MmBadPagesDetected;
190      uint64_t MmZeroedPageSingleBitErrorsDetected;
191  
192      /* Windows 7 addition */
193  
194      uint64_t EtwpDebuggerData;
195      uint16_t OffsetPrcbContext;
196  } KDDEBUGGER_DATA64;
197  
198  #endif /* KDBG_H */
199