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