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