[DDK]
[reactos.git] / include / ddk / mce.h
1 #pragma once
2
3 #if defined(_X86_) || defined(_IA64_) || defined(_AMD64_)
4
5 typedef union _MCI_ADDR {
6 struct {
7 ULONG Address;
8 ULONG Reserved;
9 } DUMMYSTRUCTNAME;
10 ULONGLONG QuadPart;
11 } MCI_ADDR, *PMCI_ADDR;
12
13 typedef enum {
14 HAL_MCE_RECORD,
15 HAL_MCA_RECORD
16 } MCA_EXCEPTION_TYPE;
17
18 #if defined(_AMD64_)
19
20 #if (NTDDI_VERSION <= NTDDI_WINXP)
21
22 typedef union _MCI_STATS {
23 struct {
24 USHORT McaCod;
25 USHORT ModelErrorCode;
26 ULONG OtherInfo:25;
27 ULONG Damage:1;
28 ULONG AddressValid:1;
29 ULONG MiscValid:1;
30 ULONG Enabled:1;
31 ULONG Uncorrected:1;
32 ULONG OverFlow:1;
33 ULONG Valid:1;
34 } MciStatus;
35 ULONG64 QuadPart;
36 } MCI_STATS, *PMCI_STATS;
37
38 #else
39
40 typedef union _MCI_STATS {
41 struct {
42 USHORT McaErrorCode;
43 USHORT ModelErrorCode;
44 ULONG OtherInformation:25;
45 ULONG ContextCorrupt:1;
46 ULONG AddressValid:1;
47 ULONG MiscValid:1;
48 ULONG ErrorEnabled:1;
49 ULONG UncorrectedError:1;
50 ULONG StatusOverFlow:1;
51 ULONG Valid:1;
52 } MciStatus;
53 ULONG64 QuadPart;
54 } MCI_STATS, *PMCI_STATS;
55
56 #endif /* (NTDDI_VERSION <= NTDDI_WINXP) */
57
58 #endif /* defined(_AMD64_) */
59
60 #if defined(_X86_)
61 typedef union _MCI_STATS {
62 struct {
63 USHORT McaCod;
64 USHORT MsCod;
65 ULONG OtherInfo:25;
66 ULONG Damage:1;
67 ULONG AddressValid:1;
68 ULONG MiscValid:1;
69 ULONG Enabled:1;
70 ULONG UnCorrected:1;
71 ULONG OverFlow:1;
72 ULONG Valid:1;
73 } MciStats;
74 ULONGLONG QuadPart;
75 } MCI_STATS, *PMCI_STATS;
76 #endif
77
78 #define MCA_EXTREG_V2MAX 24
79
80 #if defined(_X86_) || defined(_AMD64_)
81
82 #if (NTDDI_VERSION >= NTDDI_WINXP)
83
84 typedef struct _MCA_EXCEPTION {
85 ULONG VersionNumber;
86 MCA_EXCEPTION_TYPE ExceptionType;
87 LARGE_INTEGER TimeStamp;
88 ULONG ProcessorNumber;
89 ULONG Reserved1;
90 union {
91 struct {
92 UCHAR BankNumber;
93 UCHAR Reserved2[7];
94 MCI_STATS Status;
95 MCI_ADDR Address;
96 ULONGLONG Misc;
97 } Mca;
98 struct {
99 ULONGLONG Address;
100 ULONGLONG Type;
101 } Mce;
102 } u;
103 ULONG ExtCnt;
104 ULONG Reserved3;
105 ULONGLONG ExtReg[MCA_EXTREG_V2MAX];
106 } MCA_EXCEPTION, *PMCA_EXCEPTION;
107
108 #else
109
110 typedef struct _MCA_EXCEPTION {
111 ULONG VersionNumber;
112 MCA_EXCEPTION_TYPE ExceptionType;
113 LARGE_INTEGER TimeStamp;
114 ULONG ProcessorNumber;
115 ULONG Reserved1;
116 union {
117 struct {
118 UCHAR BankNumber;
119 UCHAR Reserved2[7];
120 MCI_STATS Status;
121 MCI_ADDR Address;
122 ULONGLONG Misc;
123 } Mca;
124 struct {
125 ULONGLONG Address;
126 ULONGLONG Type;
127 } Mce;
128 } u;
129 } MCA_EXCEPTION, *PMCA_EXCEPTION;
130
131 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
132
133 typedef MCA_EXCEPTION CMC_EXCEPTION, *PCMC_EXCEPTION;
134 typedef MCA_EXCEPTION CPE_EXCEPTION, *PCPE_EXCEPTION;
135
136 #if (NTDDI_VERSION >= NTDDI_WINXP)
137 #define MCA_EXCEPTION_V1_SIZE FIELD_OFFSET(MCA_EXCEPTION, ExtCnt)
138 #define MCA_EXCEPTION_V2_SIZE sizeof(struct _MCA_EXCEPTION)
139 #endif
140
141 #endif /* defined(_X86_) || defined(_AMD64_) */
142
143 #if defined(_AMD64_) || defined(_IA64_)
144
145 typedef UCHAR ERROR_SEVERITY, *PERROR_SEVERITY;
146
147 typedef enum _ERROR_SEVERITY_VALUE {
148 ErrorRecoverable = 0,
149 ErrorFatal = 1,
150 ErrorCorrected = 2,
151 ErrorOthers = 3,
152 } ERROR_SEVERITY_VALUE;
153
154 #endif
155
156 #if defined(_IA64_)
157
158 typedef union _ERROR_REVISION {
159 USHORT Revision;
160 struct {
161 UCHAR Minor;
162 UCHAR Major;
163 } DUMMYSTRUCTNAME;
164 } ERROR_REVISION, *PERROR_REVISION;
165
166 #if (NTDDI_VERSION > NTDDI_WINXP)
167 #define ERROR_MAJOR_REVISION_SAL_03_00 0
168 #define ERROR_MINOR_REVISION_SAL_03_00 2
169 #define ERROR_REVISION_SAL_03_00 {ERROR_MINOR_REVISION_SAL_03_00,ERROR_MAJOR_REVISION_SAL_03_00}
170 #define ERROR_FIXED_SECTION_REVISION {2,0}
171 #else
172 #define ERROR_REVISION_SAL_03_00 {2,0}
173 #endif /* (NTDDI_VERSION > NTDDI_WINXP) */
174
175 typedef union _ERROR_TIMESTAMP {
176 ULONGLONG TimeStamp;
177 struct {
178 UCHAR Seconds;
179 UCHAR Minutes;
180 UCHAR Hours;
181 UCHAR Reserved;
182 UCHAR Day;
183 UCHAR Month;
184 UCHAR Year;
185 UCHAR Century;
186 } DUMMYSTRUCTNAME;
187 } ERROR_TIMESTAMP, *PERROR_TIMESTAMP;
188
189 typedef struct _ERROR_GUID {
190 ULONG Data1;
191 USHORT Data2;
192 USHORT Data3;
193 UCHAR Data4[8];
194 } ERROR_GUID, *PERROR_GUID;
195
196 typedef ERROR_GUID _ERROR_DEVICE_GUID;
197 typedef _ERROR_DEVICE_GUID ERROR_DEVICE_GUID, *PERROR_DEVICE_GUID;
198
199 typedef ERROR_GUID _ERROR_PLATFORM_GUID;
200 typedef _ERROR_PLATFORM_GUID ERROR_PLATFORM_GUID, *PERROR_PLATFORM_GUID;
201
202 typedef union _ERROR_RECORD_VALID {
203 UCHAR Valid;
204 struct {
205 UCHAR OemPlatformID:1;
206 UCHAR Reserved:7;
207 } DUMMYSTRUCTNAME;
208 } ERROR_RECORD_VALID, *PERROR_RECORD_VALID;
209
210 typedef struct _ERROR_RECORD_HEADER {
211 ULONGLONG Id;
212 ERROR_REVISION Revision;
213 ERROR_SEVERITY ErrorSeverity;
214 ERROR_RECORD_VALID Valid;
215 ULONG Length;
216 ERROR_TIMESTAMP TimeStamp;
217 UCHAR OemPlatformId[16];
218 } ERROR_RECORD_HEADER, *PERROR_RECORD_HEADER;
219
220 typedef union _ERROR_RECOVERY_INFO {
221 UCHAR RecoveryInfo;
222 struct {
223 UCHAR Corrected:1;
224 UCHAR NotContained:1;
225 UCHAR Reset:1;
226 UCHAR Reserved:4;
227 UCHAR Valid:1;
228 } DUMMYSTRUCTNAME;
229 } ERROR_RECOVERY_INFO, *PERROR_RECOVERY_INFO;
230
231 typedef struct _ERROR_SECTION_HEADER {
232 ERROR_DEVICE_GUID Guid;
233 ERROR_REVISION Revision;
234 ERROR_RECOVERY_INFO RecoveryInfo;
235 UCHAR Reserved;
236 ULONG Length;
237 } ERROR_SECTION_HEADER, *PERROR_SECTION_HEADER;
238
239 #if !defined(__midl) && defined(_MSC_EXTENSIONS)
240 __inline
241 USHORT
242 NTAPI
243 GetFwMceLogProcessorNumber(
244 PERROR_RECORD_HEADER Log)
245 {
246 PERROR_SECTION_HEADER section = (PERROR_SECTION_HEADER)((ULONG64)Log + sizeof(*Log));
247 USHORT lid = (USHORT)((UCHAR)(section->Reserved));
248 lid |= (USHORT)((UCHAR)(Log->TimeStamp.Reserved) << 8);
249 return( lid );
250 }
251 #endif
252
253 #define ERROR_PROCESSOR_GUID {0xe429faf1, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
254
255 typedef union _ERROR_MODINFO_VALID {
256 ULONGLONG Valid;
257 struct {
258 ULONGLONG CheckInfo:1;
259 ULONGLONG RequestorIdentifier:1;
260 ULONGLONG ResponderIdentifier:1;
261 ULONGLONG TargetIdentifier:1;
262 ULONGLONG PreciseIP:1;
263 ULONGLONG Reserved:59;
264 } DUMMYSTRUCTNAME;
265 } ERROR_MODINFO_VALID, *PERROR_MODINFO_VALID;
266
267 typedef enum _ERROR_CHECK_IS {
268 isIA64 = 0,
269 isIA32 = 1,
270 } ERROR_CHECK_IS;
271
272 typedef enum _ERROR_CACHE_CHECK_OPERATION {
273 CacheUnknownOp = 0,
274 CacheLoad = 1,
275 CacheStore = 2,
276 CacheInstructionFetch = 3,
277 CacheDataPrefetch = 4,
278 CacheSnoop = 5,
279 CacheCastOut = 6,
280 CacheMoveIn = 7,
281 } ERROR_CACHE_CHECK_OPERATION;
282
283 typedef enum _ERROR_CACHE_CHECK_MESI {
284 CacheInvalid = 0,
285 CacheHeldShared = 1,
286 CacheHeldExclusive = 2,
287 CacheModified = 3,
288 } ERROR_CACHE_CHECK_MESI;
289
290 #if (NTDDI_VERSION >= NTDDI_VISTA)
291
292 typedef union _ERROR_CACHE_CHECK {
293 ULONGLONG CacheCheck;
294 struct {
295 ULONGLONG Operation:4;
296 ULONGLONG Level:2;
297 ULONGLONG Reserved1:2;
298 ULONGLONG DataLine:1;
299 ULONGLONG TagLine:1;
300 ULONGLONG DataCache:1;
301 ULONGLONG InstructionCache:1;
302 ULONGLONG MESI:3;
303 ULONGLONG MESIValid:1;
304 ULONGLONG Way:5;
305 ULONGLONG WayIndexValid:1;
306 ULONGLONG Reserved2:1;
307 ULONGLONG DP:1;
308 ULONGLONG Reserved3:8;
309 ULONGLONG Index:20;
310 ULONGLONG Reserved4:2;
311 ULONGLONG InstructionSet:1;
312 ULONGLONG InstructionSetValid:1;
313 ULONGLONG PrivilegeLevel:2;
314 ULONGLONG PrivilegeLevelValid:1;
315 ULONGLONG MachineCheckCorrected:1;
316 ULONGLONG TargetAddressValid:1;
317 ULONGLONG RequestIdValid:1;
318 ULONGLONG ResponderIdValid:1;
319 ULONGLONG PreciseIPValid:1;
320 } DUMMYSTRUCTNAME;
321 } ERROR_CACHE_CHECK, *PERROR_CACHE_CHECK;
322
323 # else
324
325 typedef union _ERROR_CACHE_CHECK {
326 ULONGLONG CacheCheck;
327 struct {
328 ULONGLONG Operation:4;
329 ULONGLONG Level:2;
330 ULONGLONG Reserved1:2;
331 ULONGLONG DataLine:1;
332 ULONGLONG TagLine:1;
333 ULONGLONG DataCache:1;
334 ULONGLONG InstructionCache:1;
335 ULONGLONG MESI:3;
336 ULONGLONG MESIValid:1;
337 ULONGLONG Way:5;
338 ULONGLONG WayIndexValid:1;
339 ULONGLONG Reserved2:10;
340 ULONGLONG Index:20;
341 ULONGLONG Reserved3:2;
342 ULONGLONG InstructionSet:1;
343 ULONGLONG InstructionSetValid:1;
344 ULONGLONG PrivilegeLevel:2;
345 ULONGLONG PrivilegeLevelValid:1;
346 ULONGLONG MachineCheckCorrected:1;
347 ULONGLONG TargetAddressValid:1;
348 ULONGLONG RequestIdValid:1;
349 ULONGLONG ResponderIdValid:1;
350 ULONGLONG PreciseIPValid:1;
351 } DUMMYSTRUCTNAME;
352 } ERROR_CACHE_CHECK, *PERROR_CACHE_CHECK;
353
354 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
355
356 typedef enum _ERROR_TLB_CHECK_OPERATION {
357 TlbUnknownOp = 0,
358 TlbAccessWithLoad = 1,
359 TlbAccessWithStore = 2,
360 TlbAccessWithInstructionFetch = 3,
361 TlbAccessWithDataPrefetch = 4,
362 TlbShootDown = 5,
363 TlbProbe = 6,
364 TlbVhptFill = 7,
365 TlbPurge = 8,
366 } ERROR_TLB_CHECK_OPERATION;
367
368 typedef union _ERROR_TLB_CHECK {
369 ULONGLONG TlbCheck;
370 struct {
371 ULONGLONG TRSlot:8;
372 ULONGLONG TRSlotValid:1;
373 ULONGLONG Reserved1:1;
374 ULONGLONG Level:2;
375 ULONGLONG Reserved2:4;
376 ULONGLONG DataTransReg:1;
377 ULONGLONG InstructionTransReg:1;
378 ULONGLONG DataTransCache:1;
379 ULONGLONG InstructionTransCache:1;
380 ULONGLONG Operation:4;
381 ULONGLONG Reserved3:30;
382 ULONGLONG InstructionSet:1;
383 ULONGLONG InstructionSetValid:1;
384 ULONGLONG PrivilegeLevel:2;
385 ULONGLONG PrivilegeLevelValid:1;
386 ULONGLONG MachineCheckCorrected:1;
387 ULONGLONG TargetAddressValid:1;
388 ULONGLONG RequestIdValid:1;
389 ULONGLONG ResponderIdValid:1;
390 ULONGLONG PreciseIPValid:1;
391 } DUMMYSTRUCTNAME;
392 } ERROR_TLB_CHECK, *PERROR_TLB_CHECK;
393
394 typedef enum _ERROR_BUS_CHECK_OPERATION {
395 BusUnknownOp = 0,
396 BusPartialRead = 1,
397 BusPartialWrite = 2,
398 BusFullLineRead = 3,
399 BusFullLineWrite = 4,
400 BusWriteBack = 5,
401 BusSnoopProbe = 6,
402 BusIncomingPtcG = 7,
403 BusWriteCoalescing = 8,
404 } ERROR_BUS_CHECK_OPERATION;
405
406 #if (NTDDI_VERSION >= NTDDI_VISTA)
407
408 typedef union _ERROR_BUS_CHECK {
409 ULONGLONG BusCheck;
410 struct {
411 ULONGLONG Size:5;
412 ULONGLONG Internal:1;
413 ULONGLONG External:1;
414 ULONGLONG CacheTransfer:1;
415 ULONGLONG Type:8;
416 ULONGLONG Severity:5;
417 ULONGLONG Hierarchy:2;
418 ULONGLONG DP:1;
419 ULONGLONG Status:8;
420 ULONGLONG Reserved1:22;
421 ULONGLONG InstructionSet:1;
422 ULONGLONG InstructionSetValid:1;
423 ULONGLONG PrivilegeLevel:2;
424 ULONGLONG PrivilegeLevelValid:1;
425 ULONGLONG MachineCheckCorrected:1;
426 ULONGLONG TargetAddressValid:1;
427 ULONGLONG RequestIdValid:1;
428 ULONGLONG ResponderIdValid:1;
429 ULONGLONG PreciseIPValid:1;
430 } DUMMYSTRUCTNAME;
431 } ERROR_BUS_CHECK, *PERROR_BUS_CHECK;
432
433 #else
434
435 typedef union _ERROR_BUS_CHECK {
436 ULONGLONG BusCheck;
437 struct {
438 ULONGLONG Size:5;
439 ULONGLONG Internal:1;
440 ULONGLONG External:1;
441 ULONGLONG CacheTransfer:1;
442 ULONGLONG Type:8;
443 ULONGLONG Severity:5;
444 ULONGLONG Hierarchy:2;
445 ULONGLONG Reserved1:1;
446 ULONGLONG Status:8;
447 ULONGLONG Reserved2:22;
448 ULONGLONG InstructionSet:1;
449 ULONGLONG InstructionSetValid:1;
450 ULONGLONG PrivilegeLevel:2;
451 ULONGLONG PrivilegeLevelValid:1;
452 ULONGLONG MachineCheckCorrected:1;
453 ULONGLONG TargetAddressValid:1;
454 ULONGLONG RequestIdValid:1;
455 ULONGLONG ResponderIdValid:1;
456 ULONGLONG PreciseIPValid:1;
457 } DUMMYSTRUCTNAME;
458 } ERROR_BUS_CHECK, *PERROR_BUS_CHECK;
459
460 #endif
461
462 typedef enum _ERROR_REGFILE_CHECK_IDENTIFIER {
463 RegFileUnknownId = 0,
464 GeneralRegisterBank1 = 1,
465 GeneralRegisterBank0 = 2,
466 FloatingPointRegister = 3,
467 BranchRegister = 4,
468 PredicateRegister = 5,
469 ApplicationRegister = 6,
470 ControlRegister = 7,
471 RegionRegister = 8,
472 ProtectionKeyRegister = 9,
473 DataBreakPointRegister = 10,
474 InstructionBreakPointRegister = 11,
475 PerformanceMonitorControlRegister = 12,
476 PerformanceMonitorDataRegister = 13,
477 } ERROR_REGFILE_CHECK_IDENTIFIER;
478
479 typedef enum _ERROR_REGFILE_CHECK_OPERATION {
480 RegFileUnknownOp = 0,
481 RegFileRead = 1,
482 RegFileWrite = 2,
483 } ERROR_REGFILE_CHECK_OPERATION;
484
485 typedef union _ERROR_REGFILE_CHECK {
486 ULONGLONG RegFileCheck;
487 struct {
488 ULONGLONG Identifier:4;
489 ULONGLONG Operation:4;
490 ULONGLONG RegisterNumber:7;
491 ULONGLONG RegisterNumberValid:1;
492 ULONGLONG Reserved1:38;
493 ULONGLONG InstructionSet:1;
494 ULONGLONG InstructionSetValid:1;
495 ULONGLONG PrivilegeLevel:2;
496 ULONGLONG PrivilegeLevelValid:1;
497 ULONGLONG MachineCheckCorrected:1;
498 ULONGLONG Reserved2:3;
499 ULONGLONG PreciseIPValid:1;
500 } DUMMYSTRUCTNAME;
501 } ERROR_REGFILE_CHECK, *PERROR_REGFILE_CHECK;
502
503 #if (NTDDK_VERSION <= WINXP)
504 typedef enum _ERROR_MS_CHECK_OPERATION {
505 MsUnknownOp = 0,
506 MsReadOrLoad = 1,
507 MsWriteOrStore = 2
508 } ERROR_MS_CHECK_OPERATION;
509 #else
510 typedef enum _ERROR_MS_CHECK_OPERATION {
511 MsUnknownOp = 0,
512 MsReadOrLoad = 1,
513 MsWriteOrStore = 2,
514 MsOverTemperature = 3,
515 MsNormalTemperature = 4
516 } ERROR_MS_CHECK_OPERATION;
517 #endif
518
519 typedef union _ERROR_MS_CHECK {
520 ULONGLONG MsCheck;
521 struct {
522 ULONGLONG StructureIdentifier:5;
523 ULONGLONG Level:3;
524 ULONGLONG ArrayId:4;
525 ULONGLONG Operation:4;
526 ULONGLONG Way:6;
527 ULONGLONG WayValid:1;
528 ULONGLONG IndexValid:1;
529 ULONGLONG Reserved1:8;
530 ULONGLONG Index:8;
531 ULONGLONG Reserved2:14;
532 ULONGLONG InstructionSet:1;
533 ULONGLONG InstructionSetValid:1;
534 ULONGLONG PrivilegeLevel:2;
535 ULONGLONG PrivilegeLevelValid:1;
536 ULONGLONG MachineCheckCorrected:1;
537 ULONGLONG TargetAddressValid:1;
538 ULONGLONG RequestIdValid:1;
539 ULONGLONG ResponderIdValid:1;
540 ULONGLONG PreciseIPValid:1;
541 } DUMMYSTRUCTNAME;
542 } ERROR_MS_CHECK, *PERROR_MS_CHECK;
543
544 typedef union _ERROR_CHECK_INFO {
545 ULONGLONG CheckInfo;
546 ERROR_CACHE_CHECK CacheCheck;
547 ERROR_TLB_CHECK TlbCheck;
548 ERROR_BUS_CHECK BusCheck;
549 ERROR_REGFILE_CHECK RegFileCheck;
550 ERROR_MS_CHECK MsCheck;
551 } ERROR_CHECK_INFO, *PERROR_CHECK_INFO;
552
553 typedef struct _ERROR_MODINFO {
554 ERROR_MODINFO_VALID Valid;
555 ERROR_CHECK_INFO CheckInfo;
556 ULONGLONG RequestorId;
557 ULONGLONG ResponderId;
558 ULONGLONG TargetId;
559 ULONGLONG PreciseIP;
560 } ERROR_MODINFO, *PERROR_MODINFO;
561
562 typedef union _ERROR_PROCESSOR_VALID {
563 ULONGLONG Valid;
564 struct {
565 ULONGLONG ErrorMap:1;
566 ULONGLONG StateParameter:1;
567 ULONGLONG CRLid:1;
568 ULONGLONG StaticStruct:1;
569 ULONGLONG CacheCheckNum:4;
570 ULONGLONG TlbCheckNum:4;
571 ULONGLONG BusCheckNum:4;
572 ULONGLONG RegFileCheckNum:4;
573 ULONGLONG MsCheckNum:4;
574 ULONGLONG CpuIdInfo:1;
575 ULONGLONG Reserved:39;
576 } DUMMYSTRUCTNAME;
577 } ERROR_PROCESSOR_VALID, *PERROR_PROCESSOR_VALID;
578
579 typedef union _ERROR_PROCESSOR_ERROR_MAP {
580 ULONGLONG ErrorMap;
581 struct {
582 ULONGLONG Cid:4;
583 ULONGLONG Tid:4;
584 ULONGLONG Eic:4;
585 ULONGLONG Edc:4;
586 ULONGLONG Eit:4;
587 ULONGLONG Edt:4;
588 ULONGLONG Ebh:4;
589 ULONGLONG Erf:4;
590 ULONGLONG Ems:16;
591 ULONGLONG Reserved:16;
592 } DUMMYSTRUCTNAME;
593 } ERROR_PROCESSOR_ERROR_MAP, *PERROR_PROCESSOR_ERROR_MAP;
594
595 typedef ERROR_PROCESSOR_ERROR_MAP _ERROR_PROCESSOR_LEVEL_INDEX;
596 typedef _ERROR_PROCESSOR_LEVEL_INDEX ERROR_PROCESSOR_LEVEL_INDEX, *PERROR_PROCESSOR_LEVEL_INDEX;
597
598 typedef union _ERROR_PROCESSOR_STATE_PARAMETER {
599 ULONGLONG StateParameter;
600 struct {
601 ULONGLONG reserved0:2;
602 ULONGLONG rz:1;
603 ULONGLONG ra:1;
604 ULONGLONG me:1;
605 ULONGLONG mn:1;
606 ULONGLONG sy:1;
607 ULONGLONG co:1;
608 ULONGLONG ci:1;
609 ULONGLONG us:1;
610 ULONGLONG hd:1;
611 ULONGLONG tl:1;
612 ULONGLONG mi:1;
613 ULONGLONG pi:1;
614 ULONGLONG pm:1;
615 ULONGLONG dy:1;
616 ULONGLONG in:1;
617 ULONGLONG rs:1;
618 ULONGLONG cm:1;
619 ULONGLONG ex:1;
620 ULONGLONG cr:1;
621 ULONGLONG pc:1;
622 ULONGLONG dr:1;
623 ULONGLONG tr:1;
624 ULONGLONG rr:1;
625 ULONGLONG ar:1;
626 ULONGLONG br:1;
627 ULONGLONG pr:1;
628 ULONGLONG fp:1;
629 ULONGLONG b1:1;
630 ULONGLONG b0:1;
631 ULONGLONG gr:1;
632 ULONGLONG dsize:16;
633 ULONGLONG reserved1:11;
634 ULONGLONG cc:1;
635 ULONGLONG tc:1;
636 ULONGLONG bc:1;
637 ULONGLONG rc:1;
638 ULONGLONG uc:1;
639 } DUMMYSTRUCTNAME;
640 } ERROR_PROCESSOR_STATE_PARAMETER, *PERROR_PROCESSOR_STATE_PARAMETER;
641
642 typedef union _PROCESSOR_LOCAL_ID {
643 ULONGLONG LocalId;
644 struct {
645 ULONGLONG reserved:16;
646 ULONGLONG eid:8;
647 ULONGLONG id:8;
648 ULONGLONG ignored:32;
649 } DUMMYSTRUCTNAME;
650 } PROCESSOR_LOCAL_ID, *PPROCESSOR_LOCAL_ID;
651
652 typedef struct _ERROR_PROCESSOR_MS {
653 ULONGLONG MsError[1];
654 } ERROR_PROCESSOR_MS, *PERROR_PROCESSOR_MS;
655
656 typedef struct _ERROR_PROCESSOR_CPUID_INFO {
657 ULONGLONG CpuId0;
658 ULONGLONG CpuId1;
659 ULONGLONG CpuId2;
660 ULONGLONG CpuId3;
661 ULONGLONG CpuId4;
662 ULONGLONG Reserved;
663 } ERROR_PROCESSOR_CPUID_INFO, *PERROR_PROCESSOR_CPUID_INFO;
664
665 typedef union _ERROR_PROCESSOR_STATIC_INFO_VALID {
666 ULONGLONG Valid;
667 struct {
668 ULONGLONG MinState:1;
669 ULONGLONG BR:1;
670 ULONGLONG CR:1;
671 ULONGLONG AR:1;
672 ULONGLONG RR:1;
673 ULONGLONG FR:1;
674 ULONGLONG Reserved:58;
675 } DUMMYSTRUCTNAME;
676 } ERROR_PROCESSOR_STATIC_INFO_VALID, *PERROR_PROCESSOR_STATIC_INFO_VALID;
677
678 typedef struct _ERROR_PROCESSOR_STATIC_INFO {
679 ERROR_PROCESSOR_STATIC_INFO_VALID Valid;
680 UCHAR MinState[1024];
681 ULONGLONG BR[8];
682 ULONGLONG CR[128];
683 ULONGLONG AR[128];
684 ULONGLONG RR[8];
685 ULONGLONG FR[2 * 128];
686 } ERROR_PROCESSOR_STATIC_INFO, *PERROR_PROCESSOR_STATIC_INFO;
687
688 typedef struct _ERROR_PROCESSOR {
689 ERROR_SECTION_HEADER Header;
690 ERROR_PROCESSOR_VALID Valid;
691 ERROR_PROCESSOR_ERROR_MAP ErrorMap;
692 ERROR_PROCESSOR_STATE_PARAMETER StateParameter;
693 PROCESSOR_LOCAL_ID CRLid;
694 } ERROR_PROCESSOR, *PERROR_PROCESSOR;
695
696 #define ERROR_PROCESSOR_STATE_PARAMETER_CACHE_CHECK_SHIFT 59
697 #define ERROR_PROCESSOR_STATE_PARAMETER_CACHE_CHECK_MASK 0x1
698 #define ERROR_PROCESSOR_STATE_PARAMETER_TLB_CHECK_SHIFT 60
699 #define ERROR_PROCESSOR_STATE_PARAMETER_TLB_CHECK_MASK 0x1
700 #define ERROR_PROCESSOR_STATE_PARAMETER_BUS_CHECK_SHIFT 61
701 #define ERROR_PROCESSOR_STATE_PARAMETER_BUS_CHECK_MASK 0x1
702 #define ERROR_PROCESSOR_STATE_PARAMETER_REG_CHECK_SHIFT 62
703 #define ERROR_PROCESSOR_STATE_PARAMETER_REG_CHECK_MASK 0x1
704 #define ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_SHIFT 63
705 #define ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_MASK 0x1
706
707 #define ERROR_PROCESSOR_STATE_PARAMETER_UNKNOWN_CHECK_SHIFT ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_SHIFT
708 #define ERROR_PROCESSOR_STATE_PARAMETER_UNKNOWN_CHECK_MASK ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_MASK
709
710 typedef enum _ERR_TYPES {
711 ERR_INTERNAL = 1,
712 ERR_BUS = 16,
713 ERR_MEM = 4,
714 ERR_TLB = 5,
715 ERR_CACHE = 6,
716 ERR_FUNCTION = 7,
717 ERR_SELFTEST = 8,
718 ERR_FLOW = 9,
719 ERR_MAP = 17,
720 ERR_IMPROPER = 18,
721 ERR_UNIMPL = 19,
722 ERR_LOL = 20,
723 ERR_RESPONSE = 21,
724 ERR_PARITY = 22,
725 ERR_PROTOCOL = 23,
726 ERR_ERROR = 24,
727 ERR_TIMEOUT = 25,
728 ERR_POISONED = 26,
729 } _ERR_TYPE;
730
731 typedef union _ERROR_STATUS {
732 ULONGLONG Status;
733 struct {
734 ULONGLONG Reserved0:8;
735 ULONGLONG Type:8;
736 ULONGLONG Address:1;
737 ULONGLONG Control:1;
738 ULONGLONG Data:1;
739 ULONGLONG Responder:1;
740 ULONGLONG Requestor:1;
741 ULONGLONG FirstError:1;
742 ULONGLONG Overflow:1;
743 ULONGLONG Reserved1:41;
744 } DUMMYSTRUCTNAME;
745 } ERROR_STATUS, *PERROR_STATUS;
746
747 typedef struct _ERROR_OEM_DATA {
748 USHORT Length;
749 } ERROR_OEM_DATA, *PERROR_OEM_DATA;
750
751 typedef union _ERROR_BUS_SPECIFIC_DATA {
752 ULONGLONG BusSpecificData;
753 struct {
754 ULONGLONG LockAsserted:1;
755 ULONGLONG DeferLogged:1;
756 ULONGLONG IOQEmpty:1;
757 ULONGLONG DeferredTransaction:1;
758 ULONGLONG RetriedTransaction:1;
759 ULONGLONG MemoryClaimedTransaction:1;
760 ULONGLONG IOClaimedTransaction:1;
761 ULONGLONG ResponseParitySignal:1;
762 ULONGLONG DeferSignal:1;
763 ULONGLONG HitMSignal:1;
764 ULONGLONG HitSignal:1;
765 ULONGLONG RequestBusFirstCycle:6;
766 ULONGLONG RequestBusSecondCycle:6;
767 ULONGLONG AddressParityBusFirstCycle:2;
768 ULONGLONG AddressParityBusSecondCycle:2;
769 ULONGLONG ResponseBus:3;
770 ULONGLONG RequestParitySignalFirstCycle:1;
771 ULONGLONG RequestParitySignalSecondCycle:1;
772 ULONGLONG Reserved:32;
773 } DUMMYSTRUCTNAME;
774 } ERROR_BUS_SPECIFIC_DATA, *PERROR_BUS_SPECIFIC_DATA;
775
776 #define ERROR_MEMORY_GUID {0xe429faf2, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
777
778 typedef union _ERROR_MEMORY_VALID {
779 ULONGLONG Valid;
780 struct {
781 ULONGLONG ErrorStatus:1;
782 ULONGLONG PhysicalAddress:1;
783 ULONGLONG AddressMask:1;
784 ULONGLONG Node:1;
785 ULONGLONG Card:1;
786 ULONGLONG Module:1;
787 ULONGLONG Bank:1;
788 ULONGLONG Device:1;
789 ULONGLONG Row:1;
790 ULONGLONG Column:1;
791 ULONGLONG BitPosition:1;
792 ULONGLONG RequestorId:1;
793 ULONGLONG ResponderId:1;
794 ULONGLONG TargetId:1;
795 ULONGLONG BusSpecificData:1;
796 ULONGLONG OemId:1;
797 ULONGLONG OemData:1;
798 ULONGLONG Reserved:47;
799 } DUMMYSTRUCTNAME;
800 } ERROR_MEMORY_VALID, *PERROR_MEMORY_VALID;
801
802 typedef struct _ERROR_MEMORY {
803 ERROR_SECTION_HEADER Header;
804 ERROR_MEMORY_VALID Valid;
805 ERROR_STATUS ErrorStatus;
806 ULONGLONG PhysicalAddress;
807 ULONGLONG PhysicalAddressMask;
808 USHORT Node;
809 USHORT Card;
810 USHORT Module;
811 USHORT Bank;
812 USHORT Device;
813 USHORT Row;
814 USHORT Column;
815 USHORT BitPosition;
816 ULONGLONG RequestorId;
817 ULONGLONG ResponderId;
818 ULONGLONG TargetId;
819 ULONGLONG BusSpecificData;
820 UCHAR OemId[16];
821 ERROR_OEM_DATA OemData;
822 } ERROR_MEMORY, *PERROR_MEMORY;
823
824 #define ERROR_PCI_BUS_GUID {0xe429faf4, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
825
826 typedef union _ERROR_PCI_BUS_VALID {
827 ULONGLONG Valid;
828 struct {
829 ULONGLONG ErrorStatus:1;
830 ULONGLONG ErrorType:1;
831 ULONGLONG Id:1;
832 ULONGLONG Address:1;
833 ULONGLONG Data:1;
834 ULONGLONG CmdType:1;
835 ULONGLONG RequestorId:1;
836 ULONGLONG ResponderId:1;
837 ULONGLONG TargetId:1;
838 ULONGLONG OemId:1;
839 ULONGLONG OemData:1;
840 ULONGLONG Reserved:53;
841 } DUMMYSTRUCTNAME;
842 } ERROR_PCI_BUS_VALID, *PERROR_PCI_BUS_VALID;
843
844 typedef struct _ERROR_PCI_BUS_TYPE {
845 UCHAR Type;
846 UCHAR Reserved;
847 } ERROR_PCI_BUS_TYPE, *PERROR_PCI_BUS_TYPE;
848
849 #define PciBusUnknownError ((UCHAR)0)
850 #define PciBusDataParityError ((UCHAR)1)
851 #define PciBusSystemError ((UCHAR)2)
852 #define PciBusMasterAbort ((UCHAR)3)
853 #define PciBusTimeOut ((UCHAR)4)
854 #define PciMasterDataParityError ((UCHAR)5)
855 #define PciAddressParityError ((UCHAR)6)
856 #define PciCommandParityError ((UCHAR)7)
857
858 typedef struct _ERROR_PCI_BUS_ID {
859 UCHAR BusNumber;
860 UCHAR SegmentNumber;
861 } ERROR_PCI_BUS_ID, *PERROR_PCI_BUS_ID;
862
863 typedef struct _ERROR_PCI_BUS {
864 ERROR_SECTION_HEADER Header;
865 ERROR_PCI_BUS_VALID Valid;
866 ERROR_STATUS ErrorStatus;
867 ERROR_PCI_BUS_TYPE Type;
868 ERROR_PCI_BUS_ID Id;
869 UCHAR Reserved[4];
870 ULONGLONG Address;
871 ULONGLONG Data;
872 ULONGLONG CmdType;
873 ULONGLONG RequestorId;
874 ULONGLONG ResponderId;
875 ULONGLONG TargetId;
876 UCHAR OemId[16];
877 ERROR_OEM_DATA OemData;
878 } ERROR_PCI_BUS, *PERROR_PCI_BUS;
879
880 #define ERROR_PCI_COMPONENT_GUID {0xe429faf6, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
881
882 typedef union _ERROR_PCI_COMPONENT_VALID {
883 ULONGLONG Valid;
884 struct {
885 ULONGLONG ErrorStatus:1;
886 ULONGLONG Info:1;
887 ULONGLONG MemoryMappedRegistersPairs:1;
888 ULONGLONG ProgrammedIORegistersPairs:1;
889 ULONGLONG RegistersDataPairs:1;
890 ULONGLONG OemData:1;
891 ULONGLONG Reserved:58;
892 } DUMMYSTRUCTNAME;
893 } ERROR_PCI_COMPONENT_VALID, *PERROR_PCI_COMPONENT_VALID;
894
895 typedef struct _ERROR_PCI_COMPONENT_INFO {
896 USHORT VendorId;
897 USHORT DeviceId;
898 UCHAR ClassCodeInterface;
899 UCHAR ClassCodeSubClass;
900 UCHAR ClassCodeBaseClass;
901 UCHAR FunctionNumber;
902 UCHAR DeviceNumber;
903 UCHAR BusNumber;
904 UCHAR SegmentNumber;
905 UCHAR Reserved0;
906 ULONG Reserved1;
907 } ERROR_PCI_COMPONENT_INFO, *PERROR_PCI_COMPONENT_INFO;
908
909 typedef struct _ERROR_PCI_COMPONENT {
910 ERROR_SECTION_HEADER Header;
911 ERROR_PCI_COMPONENT_VALID Valid;
912 ERROR_STATUS ErrorStatus;
913 ERROR_PCI_COMPONENT_INFO Info;
914 ULONG MemoryMappedRegistersPairs;
915 ULONG ProgrammedIORegistersPairs;
916 } ERROR_PCI_COMPONENT, *PERROR_PCI_COMPONENT;
917
918 #define ERROR_SYSTEM_EVENT_LOG_GUID {0xe429faf3, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
919
920 typedef union _ERROR_SYSTEM_EVENT_LOG_VALID {
921 ULONGLONG Valid;
922 struct {
923 ULONGLONG RecordId:1;
924 ULONGLONG RecordType:1;
925 ULONGLONG GeneratorId:1;
926 ULONGLONG EVMRev:1;
927 ULONGLONG SensorType:1;
928 ULONGLONG SensorNum:1;
929 ULONGLONG EventDirType:1;
930 ULONGLONG EventData1:1;
931 ULONGLONG EventData2:1;
932 ULONGLONG EventData3:1;
933 ULONGLONG Reserved:54;
934 } DUMMYSTRUCTNAME;
935 } ERROR_SYSTEM_EVENT_LOG_VALID, *PSYSTEM_EVENT_LOG_VALID;
936
937 typedef struct _ERROR_SYSTEM_EVENT_LOG {
938 ERROR_SECTION_HEADER Header;
939 ERROR_SYSTEM_EVENT_LOG_VALID Valid;
940 USHORT RecordId;
941 UCHAR RecordType;
942 ULONG TimeStamp;
943 USHORT GeneratorId;
944 UCHAR EVMRevision;
945 UCHAR SensorType;
946 UCHAR SensorNumber;
947 UCHAR EventDir;
948 UCHAR Data1;
949 UCHAR Data2;
950 UCHAR Data3;
951 } ERROR_SYSTEM_EVENT_LOG, *PERROR_SYSTEM_EVENT_LOG;
952
953 #define ERROR_SMBIOS_GUID {0xe429faf5, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
954
955 typedef union _ERROR_SMBIOS_VALID {
956 ULONGLONG Valid;
957 struct {
958 ULONGLONG EventType:1;
959 ULONGLONG Length:1;
960 ULONGLONG TimeStamp:1;
961 ULONGLONG OemData:1;
962 ULONGLONG Reserved:60;
963 } DUMMYSTRUCTNAME;
964 } ERROR_SMBIOS_VALID, *PERROR_SMBIOS_VALID;
965
966 typedef UCHAR ERROR_SMBIOS_EVENT_TYPE, *PERROR_SMBIOS_EVENT_TYPE;
967
968 typedef struct _ERROR_SMBIOS {
969 ERROR_SECTION_HEADER Header;
970 ERROR_SMBIOS_VALID Valid;
971 ERROR_SMBIOS_EVENT_TYPE EventType;
972 UCHAR Length;
973 ERROR_TIMESTAMP TimeStamp;
974 ERROR_OEM_DATA OemData;
975 } ERROR_SMBIOS, *PERROR_SMBIOS;
976
977 #define ERROR_PLATFORM_SPECIFIC_GUID {0xe429faf7, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
978
979 typedef union _ERROR_PLATFORM_SPECIFIC_VALID {
980 ULONGLONG Valid;
981 struct {
982 ULONGLONG ErrorStatus:1;
983 ULONGLONG RequestorId:1;
984 ULONGLONG ResponderId:1;
985 ULONGLONG TargetId:1;
986 ULONGLONG BusSpecificData:1;
987 ULONGLONG OemId:1;
988 ULONGLONG OemData:1;
989 ULONGLONG OemDevicePath:1;
990 ULONGLONG Reserved:56;
991 } DUMMYSTRUCTNAME;
992 } ERROR_PLATFORM_SPECIFIC_VALID, *PERROR_PLATFORM_SPECIFIC_VALID;
993
994 typedef struct _ERROR_PLATFORM_SPECIFIC {
995 ERROR_SECTION_HEADER Header;
996 ERROR_PLATFORM_SPECIFIC_VALID Valid;
997 ERROR_STATUS ErrorStatus;
998 ULONGLONG RequestorId;
999 ULONGLONG ResponderId;
1000 ULONGLONG TargetId;
1001 ERROR_BUS_SPECIFIC_DATA BusSpecificData;
1002 UCHAR OemId[16];
1003 ERROR_OEM_DATA OemData;
1004 } ERROR_PLATFORM_SPECIFIC, *PERROR_PLATFORM_SPECIFIC;
1005
1006 #define ERROR_PLATFORM_BUS_GUID {0xe429faf9, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
1007
1008 typedef union _ERROR_PLATFORM_BUS_VALID {
1009 ULONGLONG Valid;
1010 struct {
1011 ULONGLONG ErrorStatus:1;
1012 ULONGLONG RequestorId:1;
1013 ULONGLONG ResponderId:1;
1014 ULONGLONG TargetId:1;
1015 ULONGLONG BusSpecificData:1;
1016 ULONGLONG OemId:1;
1017 ULONGLONG OemData:1;
1018 ULONGLONG OemDevicePath:1;
1019 ULONGLONG Reserved:56;
1020 } DUMMYSTRUCTNAME;
1021 } ERROR_PLATFORM_BUS_VALID, *PERROR_PLATFORM_BUS_VALID;
1022
1023 typedef struct _ERROR_PLATFORM_BUS {
1024 ERROR_SECTION_HEADER Header;
1025 ERROR_PLATFORM_BUS_VALID Valid;
1026 ERROR_STATUS ErrorStatus;
1027 ULONGLONG RequestorId;
1028 ULONGLONG ResponderId;
1029 ULONGLONG TargetId;
1030 ERROR_BUS_SPECIFIC_DATA BusSpecificData;
1031 UCHAR OemId[16];
1032 ERROR_OEM_DATA OemData;
1033 } ERROR_PLATFORM_BUS, *PERROR_PLATFORM_BUS;
1034
1035 #define ERROR_PLATFORM_HOST_CONTROLLER_GUID {0xe429faf8, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
1036
1037 typedef union _ERROR_PLATFORM_HOST_CONTROLLER_VALID {
1038 ULONGLONG Valid;
1039 struct {
1040 ULONGLONG ErrorStatus:1;
1041 ULONGLONG RequestorId:1;
1042 ULONGLONG ResponderId:1;
1043 ULONGLONG TargetId:1;
1044 ULONGLONG BusSpecificData:1;
1045 ULONGLONG OemId:1;
1046 ULONGLONG OemData:1;
1047 ULONGLONG OemDevicePath:1;
1048 ULONGLONG Reserved:56;
1049 } DUMMYSTRUCTNAME;
1050 } ERROR_PLATFORM_HOST_CONTROLLER_VALID, *PERROR_PLATFORM_HOST_CONTROLLER_VALID;
1051
1052 typedef struct _ERROR_PLATFORM_HOST_CONTROLLER {
1053 ERROR_SECTION_HEADER Header;
1054 ERROR_PCI_COMPONENT_VALID Valid;
1055 ERROR_STATUS ErrorStatus;
1056 ULONGLONG RequestorId;
1057 ULONGLONG ResponderId;
1058 ULONGLONG TargetId;
1059 ERROR_BUS_SPECIFIC_DATA BusSpecificData;
1060 UCHAR OemId[16];
1061 ERROR_OEM_DATA OemData;
1062 } ERROR_PLATFORM_HOST_CONTROLLER, *PERROR_PLATFORM_HOST_CONTROLLER;
1063
1064 typedef ERROR_RECORD_HEADER ERROR_LOGRECORD, *PERROR_LOGRECORD;
1065 typedef ERROR_RECORD_HEADER MCA_EXCEPTION, *PMCA_EXCEPTION;
1066 typedef ERROR_RECORD_HEADER CMC_EXCEPTION, *PCMC_EXCEPTION;
1067 typedef ERROR_RECORD_HEADER CPE_EXCEPTION, *PCPE_EXCEPTION;
1068 #if (NTDDI_VERSION > NTDDI_WINXP)
1069 typedef ERROR_RECORD_HEADER INIT_EXCEPTION, *PINIT_EXCEPTION;
1070 #endif
1071
1072 #endif /* defined(_IA64_) */
1073
1074 #endif /* defined(_X86_) || defined(_IA64_) || defined(_AMD64_) */