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