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