|  | #ifndef CPER_SECTION_IPF_H | 
|  | #define CPER_SECTION_IPF_H | 
|  |  | 
|  | #include <json.h> | 
|  | #include "../edk/Cper.h" | 
|  |  | 
|  | #define IPF_MOD_ERROR_VALID_BITFIELD_NAMES                                     \ | 
|  | (const char *[])                                                       \ | 
|  | {                                                                      \ | 
|  | "checkInfoValid", "requestorIdentifierValid",                  \ | 
|  | "responderIdentifierValid", "targetIdentifierValid",   \ | 
|  | "preciseIPValid"                                       \ | 
|  | } | 
|  | #define IPF_PSI_STATIC_INFO_VALID_BITFIELD_NAMES                               \ | 
|  | (const char *[])                                                       \ | 
|  | {                                                                      \ | 
|  | "minstateValid", "brValid", "crValid", "arValid", "rrValid",   \ | 
|  | "frValid"                                              \ | 
|  | } | 
|  |  | 
|  | /// | 
|  | /// IPF Error Record Section | 
|  | /// Defined as according to B.2.3 of the ItaniumTM Processor Family System Abstraction Layer (SAL) Specification. | 
|  | /// | 
|  | typedef struct { | 
|  | UINT64 ProcErrorMapValid : 1; | 
|  | UINT64 ProcStateParameterValid : 1; | 
|  | UINT64 ProcCrLidValid : 1; | 
|  | UINT64 PsiStaticStructValid : 1; | 
|  | UINT64 CacheCheckNum : 4; | 
|  | UINT64 TlbCheckNum : 4; | 
|  | UINT64 BusCheckNum : 4; | 
|  | UINT64 RegFileCheckNum : 4; | 
|  | UINT64 MsCheckNum : 4; | 
|  | UINT64 CpuIdInfoValid : 1; | 
|  | UINT64 Reserved : 39; | 
|  | } EPI_IPF_ERROR_VALID_BITS; | 
|  |  | 
|  | typedef struct { | 
|  | EPI_IPF_ERROR_VALID_BITS ValidBits; | 
|  | UINT64 ProcErrorMap; | 
|  | UINT64 ProcStateParameter; | 
|  | UINT64 ProcCrLid; | 
|  | } EFI_IPF_ERROR_INFO_HEADER; | 
|  |  | 
|  | typedef struct { | 
|  | UINT64 ValidBits; | 
|  | UINT64 ModCheckInfo; | 
|  | UINT64 ModTargetId; | 
|  | UINT64 ModRequestorId; //NOTE: The Intel Itanium specification contains a typo which makes the order | 
|  | UINT64 ModResponderId; // of these two fields undefined. This is a best guess and could be wrong. | 
|  | UINT64 ModPreciseIp; | 
|  | } EFI_IPF_MOD_ERROR_INFO; | 
|  |  | 
|  | typedef struct { | 
|  | UINT8 CpuIdInfo[40]; | 
|  | UINT8 Reserved1[8]; | 
|  | } EFI_IPF_CPU_INFO; | 
|  |  | 
|  | typedef struct { | 
|  | UINT64 ValidBits; | 
|  | UINT8 MinimalSaveStateInfo[1024]; | 
|  | UINT64 Brs[8]; | 
|  | UINT64 Crs[128]; | 
|  | UINT64 Ars[128]; | 
|  | UINT64 Rrs[8]; | 
|  | UINT64 Frs[256]; | 
|  | } EFI_IPF_PSI_STATIC; | 
|  |  | 
|  | json_object *cper_section_ipf_to_ir(void *section); | 
|  |  | 
|  | #endif |