11b0b00e3SLawrence Tang #ifndef CPER_SECTION_GENERIC_H
21b0b00e3SLawrence Tang #define CPER_SECTION_GENERIC_H
31b0b00e3SLawrence Tang 
4*255bd81aSKarthik Rajagopalan #ifdef __cplusplus
5*255bd81aSKarthik Rajagopalan extern "C" {
6*255bd81aSKarthik Rajagopalan #endif
7*255bd81aSKarthik Rajagopalan 
85202bbb4SLawrence Tang #include <json.h>
9794312c8SLawrence Tang #include "../edk/Cper.h"
10794312c8SLawrence Tang 
11f8fc7052SJohn Chung #define GENERIC_PROC_TYPES_KEYS                                                \
12f8fc7052SJohn Chung 	(int[])                                                                \
13f8fc7052SJohn Chung 	{                                                                      \
14f8fc7052SJohn Chung 		0, 1, 2                                                        \
15f8fc7052SJohn Chung 	}
16f8fc7052SJohn Chung #define GENERIC_PROC_TYPES_VALUES                                              \
17f8fc7052SJohn Chung 	(const char *[])                                                       \
18f8fc7052SJohn Chung 	{                                                                      \
19f8fc7052SJohn Chung 		"IA32/X64", "IA64", "ARM"                                      \
20f8fc7052SJohn Chung 	}
21f8fc7052SJohn Chung #define GENERIC_ISA_TYPES_KEYS                                                 \
22f8fc7052SJohn Chung 	(int[])                                                                \
23f8fc7052SJohn Chung 	{                                                                      \
24f8fc7052SJohn Chung 		0, 1, 2, 3, 4                                                  \
25f8fc7052SJohn Chung 	}
26f8fc7052SJohn Chung #define GENERIC_ISA_TYPES_VALUES                                               \
27f8fc7052SJohn Chung 	(const char *[])                                                       \
28f8fc7052SJohn Chung 	{                                                                      \
29f8fc7052SJohn Chung 		"IA32", "IA64", "X64", "ARM A32/T32", "ARM A64"                \
30f8fc7052SJohn Chung 	}
31f8fc7052SJohn Chung #define GENERIC_ERROR_TYPES_KEYS                                               \
32f8fc7052SJohn Chung 	(int[])                                                                \
33f8fc7052SJohn Chung 	{                                                                      \
34f8fc7052SJohn Chung 		0, 1, 2, 4, 8                                                  \
35f8fc7052SJohn Chung 	}
36f8fc7052SJohn Chung #define GENERIC_ERROR_TYPES_VALUES                                             \
37f8fc7052SJohn Chung 	(const char *[])                                                       \
38f8fc7052SJohn Chung 	{                                                                      \
39f8fc7052SJohn Chung 		"Unknown", "Cache Error", "TLB Error", "Bus Error",            \
40f8fc7052SJohn Chung 			"Micro-Architectural Error"                            \
41f8fc7052SJohn Chung 	}
42f8fc7052SJohn Chung #define GENERIC_OPERATION_TYPES_KEYS                                           \
43f8fc7052SJohn Chung 	(int[])                                                                \
44f8fc7052SJohn Chung 	{                                                                      \
45f8fc7052SJohn Chung 		0, 1, 2, 3                                                     \
46f8fc7052SJohn Chung 	}
47f8fc7052SJohn Chung #define GENERIC_OPERATION_TYPES_VALUES                                         \
48f8fc7052SJohn Chung 	(const char *[])                                                       \
49f8fc7052SJohn Chung 	{                                                                      \
50f8fc7052SJohn Chung 		"Unknown or Generic", "Data Read", "Data Write",               \
51f8fc7052SJohn Chung 			"Instruction Execution"                                \
52f8fc7052SJohn Chung 	}
53f8fc7052SJohn Chung #define GENERIC_VALIDATION_BITFIELD_NAMES                                      \
54f8fc7052SJohn Chung 	(const char *[])                                                       \
55f8fc7052SJohn Chung 	{                                                                      \
56f8fc7052SJohn Chung 		"processorTypeValid", "processorISAValid",                     \
57f8fc7052SJohn Chung 			"processorErrorTypeValid", "operationValid",           \
58f8fc7052SJohn Chung 			"flagsValid", "levelValid", "cpuVersionValid",         \
59f8fc7052SJohn Chung 			"cpuBrandInfoValid", "cpuIDValid",                     \
60f8fc7052SJohn Chung 			"targetAddressValid", "requestorIDValid",              \
61f8fc7052SJohn Chung 			"responderIDValid", "instructionIPValid"               \
62f8fc7052SJohn Chung 	}
63f8fc7052SJohn Chung #define GENERIC_FLAGS_BITFIELD_NAMES                                           \
64f8fc7052SJohn Chung 	(const char *[])                                                       \
65f8fc7052SJohn Chung 	{                                                                      \
66f8fc7052SJohn Chung 		"restartable", "preciseIP", "overflow", "corrected"            \
67f8fc7052SJohn Chung 	}
683c43f743SLawrence Tang 
69f8fc7052SJohn Chung json_object *cper_section_generic_to_ir(void *section);
700cb33793SLawrence Tang void ir_section_generic_to_cper(json_object *section, FILE *out);
711b0b00e3SLawrence Tang 
72*255bd81aSKarthik Rajagopalan #ifdef __cplusplus
73*255bd81aSKarthik Rajagopalan }
74*255bd81aSKarthik Rajagopalan #endif
75*255bd81aSKarthik Rajagopalan 
761b0b00e3SLawrence Tang #endif
77