1*794312c8SLawrence Tang #ifndef CPER_SECTION_IA32X64_H
2*794312c8SLawrence Tang #define CPER_SECTION_IA32X64_H
3*794312c8SLawrence Tang 
4*794312c8SLawrence Tang #include "json.h"
5*794312c8SLawrence Tang #include "../edk/Cper.h"
6*794312c8SLawrence Tang 
7*794312c8SLawrence Tang #define IA32X64_PROCESSOR_ERROR_VALID_BITFIELD_NAMES (const char*[]) \
8*794312c8SLawrence Tang     {"checkInfoValid", "targetAddressIdentifierValid", "requestorIdentifierValid", "responderIdentifierValid", \
9*794312c8SLawrence Tang     "instructionPointerValid"}
10*794312c8SLawrence Tang #define IA32X64_CHECK_INFO_VALID_BITFIELD_NAMES (const char*[]) \
11*794312c8SLawrence Tang     {"transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "uncorrectedValid" \
12*794312c8SLawrence Tang     "preciseIPValid", "restartableIPValid", "overflowValid", "participationTypeValid", "timeOutValid" \
13*794312c8SLawrence Tang     "addressSpaceValid"}
14*794312c8SLawrence Tang #define IA32X64_CHECK_INFO_TRANSACTION_TYPES_KEYS (int []){0, 1, 2}
15*794312c8SLawrence Tang #define IA32X64_CHECK_INFO_TRANSACTION_TYPES_VALUES (const char*[]){"Instruction", "Data Access", "Generic"}
16*794312c8SLawrence Tang #define IA32X64_CHECK_INFO_OPERATION_TYPES_KEYS (int []){0, 1, 2, 3, 4, 5, 6, 7, 8}
17*794312c8SLawrence Tang #define IA32X64_CHECK_INFO_OPERATION_TYPES_VALUES (const char*[]){"Generic Error", "Generic Read", "Generic Write" \
18*794312c8SLawrence Tang     "Data Read", "Data Write", "Instruction Fetch", "Prefetch", "Eviction", "Snoop"}
19*794312c8SLawrence Tang #define IA32X64_BUS_CHECK_INFO_PARTICIPATION_TYPES_KEYS (int []){0, 1, 2, 3}
20*794312c8SLawrence Tang #define IA32X64_BUS_CHECK_INFO_PARTICIPATION_TYPES_VALUES (const char*[]){"Local processor originated request", \
21*794312c8SLawrence Tang     "Local processor responded to request", "Local processor observed", "Generic"}
22*794312c8SLawrence Tang #define IA32X64_BUS_CHECK_INFO_ADDRESS_SPACE_TYPES_KEYS (int []){0, 1, 2, 3}
23*794312c8SLawrence Tang #define IA32X64_BUS_CHECK_INFO_ADDRESS_SPACE_TYPES_VALUES (const char*[]){"Memory Access", "Reserved", "I/O", \
24*794312c8SLawrence Tang     "Other Transaction"}
25*794312c8SLawrence Tang #define IA32X64_MS_CHECK_INFO_ERROR_TYPES_KEYS (int []){0, 1, 2, 3, 4, 5}
26*794312c8SLawrence Tang #define IA32X64_MS_CHECK_INFO_ERROR_TYPES_VALUES (const char*[]){"No Error", "Unclassified", "Microcode ROM Parity Error", \
27*794312c8SLawrence Tang     "External Error", "FRC Error", "Internal Unclassified"}
28*794312c8SLawrence Tang #define IA32X64_REGISTER_CONTEXT_TYPES_KEYS (int []){0, 1, 2, 3, 4, 5, 6, 7}
29*794312c8SLawrence Tang #define IA32X64_REGISTER_CONTEXT_TYPES_VALUES (const char*[]){"Unclassified Data", "MSR Registers", \
30*794312c8SLawrence Tang     "32-bit Mode Execution Context", "64-bit Mode Execution Context", "FXSave Context", \
31*794312c8SLawrence Tang     "32-bit Mode Debug Registers", "64-bit Mode Debug Registers", "Memory Mapper Registers"}
32*794312c8SLawrence Tang 
33*794312c8SLawrence Tang json_object* cper_section_ia32x64_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor);
34*794312c8SLawrence Tang 
35*794312c8SLawrence Tang #endif