xref: /openbmc/libcper/include/libcper/sections/cper-section-ia32x64.h (revision c97c041e571841f0ce67292208e083f6d858cf5c)
1 #ifndef CPER_SECTION_IA32X64_H
2 #define CPER_SECTION_IA32X64_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include <stdio.h>
9 #include <json.h>
10 #include <libcper/Cper.h>
11 
12 #define IA32X64_PROCESSOR_ERROR_VALID_BITFIELD_NAMES                           \
13 	(const char *[]){ "checkInfoValid", "targetAddressIDValid",            \
14 			  "requestorIDValid", "responderIDValid",              \
15 			  "instructionPointerValid" }
16 #define IA32X64_CHECK_INFO_VALID_BITFIELD_NAMES                                \
17 	(const char *[]){ "transactionTypeValid",                              \
18 			  "operationValid",                                    \
19 			  "levelValid",                                        \
20 			  "processorContextCorruptValid",                      \
21 			  "uncorrectedValid",                                  \
22 			  "preciseIPValid",                                    \
23 			  "restartableIPValid",                                \
24 			  "overflowValid",                                     \
25 			  "participationTypeValid",                            \
26 			  "timedOutValid",                                     \
27 			  "addressSpaceValid" }
28 #define IA32X64_CHECK_INFO_MS_CHECK_VALID_BITFIELD_NAMES                        \
29 	(const char *[]){ "errorTypeValid",	"processorContextCorruptValid", \
30 			  "uncorrectedValid",	"preciseIPValid",               \
31 			  "restartableIPValid", "overflowValid" }
32 #define IA32X64_CHECK_INFO_TRANSACTION_TYPES_KEYS (int[]){ 0, 1, 2 }
33 #define IA32X64_CHECK_INFO_TRANSACTION_TYPES_VALUES                            \
34 	(const char *[]){ "Instruction", "Data Access", "Generic" }
35 #define IA32X64_CHECK_INFO_OPERATION_TYPES_KEYS                                \
36 	(int[]){ 0, 1, 2, 3, 4, 5, 6, 7, 8 }
37 #define IA32X64_CHECK_INFO_OPERATION_TYPES_VALUES                               \
38 	(const char *[]){ "Generic Error", "Generic Read", "Generic Write",     \
39 			  "Data Read",	   "Data Write",   "Instruction Fetch", \
40 			  "Prefetch",	   "Eviction",	   "Snoop" }
41 #define IA32X64_BUS_CHECK_INFO_PARTICIPATION_TYPES_KEYS (int[]){ 0, 1, 2, 3 }
42 #define IA32X64_BUS_CHECK_INFO_PARTICIPATION_TYPES_VALUES                      \
43 	(const char *[]){ "Local processor originated request",                \
44 			  "Local processor responded to request",              \
45 			  "Local processor observed", "Generic" }
46 #define IA32X64_BUS_CHECK_INFO_ADDRESS_SPACE_TYPES_KEYS (int[]){ 0, 1, 2, 3 }
47 #define IA32X64_BUS_CHECK_INFO_ADDRESS_SPACE_TYPES_VALUES                      \
48 	(const char *[]){ "Memory Access", "Reserved", "I/O",                  \
49 			  "Other Transaction" }
50 #define IA32X64_MS_CHECK_INFO_ERROR_TYPES_KEYS (int[]){ 0, 1, 2, 3, 4, 5 }
51 #define IA32X64_MS_CHECK_INFO_ERROR_TYPES_VALUES                               \
52 	(const char *[]){ "No Error",                                          \
53 			  "Unclassified",                                      \
54 			  "Microcode ROM Parity Error",                        \
55 			  "External Error",                                    \
56 			  "FRC Error",                                         \
57 			  "Internal Unclassified" }
58 #define IA32X64_REGISTER_CONTEXT_TYPES_KEYS (int[]){ 0, 1, 2, 3, 4, 5, 6, 7 }
59 #define IA32X64_REGISTER_CONTEXT_TYPES_VALUES                                  \
60 	(const char *[]){ "Unclassified Data",                                 \
61 			  "MSR Registers",                                     \
62 			  "32-bit Mode Execution Context",                     \
63 			  "64-bit Mode Execution Context",                     \
64 			  "FXSave Context",                                    \
65 			  "32-bit Mode Debug Registers",                       \
66 			  "64-bit Mode Debug Registers",                       \
67 			  "Memory Mapper Registers" }
68 
69 typedef struct {
70 	UINT64 Eax;
71 	UINT64 Ebx;
72 	UINT64 Ecx;
73 	UINT64 Edx;
74 	UINT64 Reserved[2];
75 } EFI_IA32_X64_CPU_ID;
76 
77 json_object *cper_section_ia32x64_to_ir(void *section);
78 void ir_section_ia32x64_to_cper(json_object *section, FILE *out);
79 
80 #ifdef __cplusplus
81 }
82 #endif
83 
84 #endif
85