#ifndef CPER_SECTION_ARM_H
#define CPER_SECTION_ARM_H

#include "json.h"
#include "../edk/Cper.h"

#define ARM_ERROR_VALID_BITFIELD_NAMES (const char*[]) \
    {"mpidrValid", "errorAffinityLevelValid", "runningStateValid", "vendorSpecificInfoValid"}
#define ARM_ERROR_INFO_ENTRY_VALID_BITFIELD_NAMES (const char*[]) \
    {"multipleErrorValid", "flagsValid", "errorInformationValid", "virtualFaultAddressValid", "physicalFaultAddressValid"}
#define ARM_ERROR_INFO_ENTRY_FLAGS_NAMES (const char*[]) \
    {"firstErrorCaptured", "lastErrorCaptured", "propagated", "overflow"}
#define ARM_CACHE_TLB_ERROR_VALID_BITFIELD_NAMES (const char*[]) \
    {"transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "correctedValid", \
    "precisePCValid", "restartablePCValid"}
#define ARM_BUS_ERROR_VALID_BITFIELD_NAMES (const char*[]) \
    {"transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "correctedValid", \
    "precisePCValid", "restartablePCValid", "participationTypeValid", "timedOutValid", "addressSpaceValid", \
    "memoryAttributesValid", "accessModeValid"}
#define ARM_ERROR_TRANSACTION_TYPES_KEYS (int []){0, 1, 2}
#define ARM_ERROR_TRANSACTION_TYPES_VALUES (const char*[]){"Instruction", "Data Access", "Generic"}
#define ARM_ERROR_INFO_ENTRY_INFO_TYPES_KEYS (int []){0, 1, 2, 3}
#define ARM_ERROR_INFO_ENTRY_INFO_TYPES_VALUES (const char*[]){"Cache Error", "TLB Error", \
    "Bus Error", "Micro-Architectural Error"}
#define ARM_CACHE_BUS_OPERATION_TYPES_KEYS (int []){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
#define ARM_CACHE_BUS_OPERATION_TYPES_VALUES (const char*[]){"Generic Error", "Generic Read", "Generic Write", \
    "Data Read", "Data Write", "Instruction Fetch", "Prefetch", "Eviction", "Snooping", "Snooped", "Management"}
#define ARM_TLB_OPERATION_TYPES_KEYS (int []){0, 1, 2, 3, 4, 5, 6, 7, 8}
#define ARM_TLB_OPERATION_TYPES_VALUES (const char*[]){"Generic Error", "Generic Read", "Generic Write", \
    "Data Read", "Data Write", "Instruction Fetch", "Prefetch", "Local Management Operation", \
    "External Management Operation"}
#define ARM_BUS_PARTICIPATION_TYPES_KEYS (int []){0, 1, 2, 3}
#define ARM_BUS_PARTICIPATION_TYPES_VALUES (const char*[]){"Local Processor Originated Request", \
    "Local Processor Responded to Request", "Local Processor Observed", "Generic"}
#define ARM_BUS_ADDRESS_SPACE_TYPES_KEYS (int []){0, 1, 3}
#define ARM_BUS_ADDRESS_SPACE_TYPES_VALUES (const char*[]){"External Memory Access", "Internal Memory Access", \
    "Device Memory Access"}
#define ARM_PROCESSOR_INFO_REGISTER_CONTEXT_TYPES_KEYS (int []){0, 1, 2, 3, 4, 5, 6, 7, 8}
#define ARM_PROCESSOR_INFO_REGISTER_CONTEXT_TYPES_VALUES (const char*[]){"AArch32 General Purpose Registers", \
    "AArch32 EL1 Context Registers", "AArch32 EL2 Context Registers", "AArch32 Secure Context Registers", \
    "AArch64 General Purpose Registers", "AArch64 EL1 Context Registers", "AArch64 EL2 Context Registers", \
    "AArch64 EL3 Context Registers", "Miscellaneous System Register Structure"}
#define ARM_AARCH32_GPR_NAMES (const char*[]){"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", \
    "r10", "r11", "r12", "r13_sp", "r14_lr", "r15_pc"}
#define ARM_AARCH32_EL1_REGISTER_NAMES (const char*[]){"dfar", "dfsr", "ifar", "isr", "mair0", "mair1", "midr", \
    "mpidr", "nmrr", "prrr", "sctlr_ns", "spsr", "spsr_abt", "spsr_fiq", "spsr_irq", "spsr_svc", "spsr_und", \
    "tpidrprw", "tpidruro", "tpidrurw", "ttbcr", "ttbr0", "ttbr1", "dacr"}
#define ARM_AARCH32_EL2_REGISTER_NAMES (const char*[]){"elr_hyp", "hamair0", "hamair1", "hcr", "hcr2", "hdfar", \
    "hifar", "hpfar", "hsr", "htcr", "htpidr", "httbr", "spsr_hyp", "vtcr", "vttbr", "dacr32_el2"}
#define ARM_AARCH32_SECURE_REGISTER_NAMES (const char*[]){"sctlr_s", "spsr_mon"}
#define ARM_AARCH64_GPR_NAMES (const char*[]){"x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", \
    "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", \
    "x27", "x28", "x29", "x30", "sp"}
#define ARM_AARCH64_EL1_REGISTER_NAMES (const char*[]){"elr_el1", "esr_el1", "far_el1", "isr_el1", "mair_el1", \
    "midr_el1", "mpidr_el1", "sctlr_el1", "sp_el0", "sp_el1", "spsr_el1", "tcr_el1", "tpidr_el0", "tpidr_el1", \
    "tpidrro_el0", "ttbr0_el1", "ttbr1_el1"}
#define ARM_AARCH64_EL2_REGISTER_NAMES (const char*[]){"elr_el2", "esr_el2", "far_el2", "hacr_el2", "hcr_el2", \
    "hpfar_el2", "mair_el2", "sctlr_el2", "sp_el2", "spsr_el2", "tcr_el2", "tpidr_el2", "ttbr0_el2", "vtcr_el2", \
    "vttbr_el2"}
#define ARM_AARCH64_EL3_REGISTER_NAMES (const char*[]){"elr_el3", "esr_el3", "far_el3", "mair_el3", "sctlr_el3", \
    "sp_el3", "spsr_el3", "tcr_el3", "tpidr_el3", "ttbr0_el3"}

///
/// ARM Processor Error Record
///
typedef struct {
  UINT32    ValidFields;
  UINT16    ErrInfoNum;
  UINT16    ContextInfoNum;
  UINT32    SectionLength;
  UINT32  ErrorAffinityLevel;
  UINT64  MPIDR_EL1;
  UINT64  MIDR_EL1;
  UINT32 RunningState;
  UINT32 PsciState;
} EFI_ARM_ERROR_RECORD;

///
/// ARM Processor Error Information Structure
///
#define ARM_ERROR_INFORMATION_TYPE_CACHE 0
#define ARM_ERROR_INFORMATION_TYPE_TLB 1
#define ARM_ERROR_INFORMATION_TYPE_BUS 2
#define ARM_ERROR_INFORMATION_TYPE_MICROARCH 3

typedef struct {
  UINT64 ValidationBits : 16;
  UINT64 TransactionType : 2;
  UINT64 Operation : 4;
  UINT64 Level : 3;
  UINT64 ProcessorContextCorrupt : 1;
  UINT64 Corrected : 1;
  UINT64 PrecisePC : 1;
  UINT64 RestartablePC : 1;
  UINT64 Reserved : 34;
} EFI_ARM_CACHE_ERROR_STRUCTURE;

typedef struct {
  UINT64 ValidationBits : 16;
  UINT64 TransactionType : 2;
  UINT64 Operation : 4;
  UINT64 Level : 3;
  UINT64 ProcessorContextCorrupt : 1;
  UINT64 Corrected : 1;
  UINT64 PrecisePC : 1;
  UINT64 RestartablePC : 1;
  UINT64 Reserved : 34;
} EFI_ARM_TLB_ERROR_STRUCTURE;

typedef struct {
  UINT64 ValidationBits : 16;
  UINT64 TransactionType : 2;
  UINT64 Operation : 4;
  UINT64 Level : 3;
  UINT64 ProcessorContextCorrupt : 1;
  UINT64 Corrected : 1;
  UINT64 PrecisePC : 1;
  UINT64 RestartablePC : 1;
  UINT64 ParticipationType : 2;
  UINT64 TimeOut : 1;
  UINT64 AddressSpace : 2;
  UINT64 MemoryAddressAttributes : 8;
  UINT64 AccessMode : 1;
  UINT64 Reserved : 19;
} EFI_ARM_BUS_ERROR_STRUCTURE;

typedef union {
  EFI_ARM_CACHE_ERROR_STRUCTURE CacheError;
  EFI_ARM_TLB_ERROR_STRUCTURE TlbError;
  EFI_ARM_BUS_ERROR_STRUCTURE BusError;
} EFI_ARM_ERROR_INFORMATION_STRUCTURE;

typedef struct {
  UINT8 Version;
  UINT8 Length;
  UINT16 ValidationBits;
  UINT8 Type;
  UINT16 MultipleError;
  UINT8 Flags;
  EFI_ARM_ERROR_INFORMATION_STRUCTURE ErrorInformation;
  UINT64 VirtualFaultAddress;
  UINT64 PhysicalFaultAddress;
} __attribute__((packed, aligned(1))) EFI_ARM_ERROR_INFORMATION_ENTRY;

///
/// ARM Processor Context Information Structure
///
typedef struct {
  UINT16 Version;
  UINT16 RegisterContextType;
  UINT32 RegisterArraySize;
} EFI_ARM_CONTEXT_INFORMATION_HEADER;

///
/// ARM Processor Context Register Types
///
#define EFI_ARM_CONTEXT_TYPE_AARCH32_GPR 0
#define EFI_ARM_CONTEXT_TYPE_AARCH32_EL1 1
#define EFI_ARM_CONTEXT_TYPE_AARCH32_EL2 2
#define EFI_ARM_CONTEXT_TYPE_AARCH32_SECURE 3
#define EFI_ARM_CONTEXT_TYPE_AARCH64_GPR 4
#define EFI_ARM_CONTEXT_TYPE_AARCH64_EL1 5
#define EFI_ARM_CONTEXT_TYPE_AARCH64_EL2 6
#define EFI_ARM_CONTEXT_TYPE_AARCH64_EL3 7
#define EFI_ARM_CONTEXT_TYPE_MISC 8

typedef struct {
  UINT32 R0;
  UINT32 R1;
  UINT32 R2;
  UINT32 R3;
  UINT32 R4;
  UINT32 R5;
  UINT32 R6;
  UINT32 R7;
  UINT32 R8;
  UINT32 R9;
  UINT32 R10;
  UINT32 R11;
  UINT32 R12;
  UINT32 R13_sp;
  UINT32 R14_lr;
  UINT32 R15_pc;
} EFI_ARM_V8_AARCH32_GPR;

typedef struct {
  UINT32 Dfar;
  UINT32 Dfsr;
  UINT32 Ifar;
  UINT32 Isr;
  UINT32 Mair0;
  UINT32 Mair1;
  UINT32 Midr;
  UINT32 Mpidr;
  UINT32 Nmrr;
  UINT32 Prrr;
  UINT32 Sctlr_Ns;
  UINT32 Spsr;
  UINT32 Spsr_Abt;
  UINT32 Spsr_Fiq;
  UINT32 Spsr_Irq;
  UINT32 Spsr_Svc;
  UINT32 Spsr_Und;
  UINT32 Tpidrprw;
  UINT32 Tpidruro;
  UINT32 Tpidrurw;
  UINT32 Ttbcr;
  UINT32 Ttbr0;
  UINT32 Ttbr1;
  UINT32 Dacr;
} EFI_ARM_AARCH32_EL1_CONTEXT_REGISTERS;

typedef struct {
  UINT32 Elr_Hyp;
  UINT32 Hamair0;
  UINT32 Hamair1;
  UINT32 Hcr;
  UINT32 Hcr2;
  UINT32 Hdfar;
  UINT32 Hifar;
  UINT32 Hpfar;
  UINT32 Hsr;
  UINT32 Htcr;
  UINT32 Htpidr;
  UINT32 Httbr;
  UINT32 Spsr_Hyp;
  UINT32 Vtcr;
  UINT32 Vttbr;
  UINT32 Dacr32_El2;
} EFI_ARM_AARCH32_EL2_CONTEXT_REGISTERS;

typedef struct {
  UINT32 Sctlr_S;
  UINT32 Spsr_Mon;
} EFI_ARM_AARCH32_SECURE_CONTEXT_REGISTERS;

typedef struct {
  UINT64 X0;
  UINT64 X1;
  UINT64 X2;
  UINT64 X3;
  UINT64 X4;
  UINT64 X5;
  UINT64 X6;
  UINT64 X7;
  UINT64 X8;
  UINT64 X9;
  UINT64 X10;
  UINT64 X11;
  UINT64 X12;
  UINT64 X13;
  UINT64 X14;
  UINT64 X15;
  UINT64 X16;
  UINT64 X17;
  UINT64 X18;
  UINT64 X19;
  UINT64 X20;
  UINT64 X21;
  UINT64 X22;
  UINT64 X23;
  UINT64 X24;
  UINT64 X25;
  UINT64 X26;
  UINT64 X27;
  UINT64 X28;
  UINT64 X29;
  UINT64 X30;
  UINT64 Sp;
} EFI_ARM_V8_AARCH64_GPR;

typedef struct {
  UINT64 Elr_El1;
  UINT64 Esr_El1;
  UINT64 Far_El1;
  UINT64 Isr_El1;
  UINT64 Mair_El1;
  UINT64 Midr_El1;
  UINT64 Mpidr_El1;
  UINT64 Sctlr_El1;
  UINT64 Sp_El0;
  UINT64 Sp_El1;
  UINT64 Spsr_El1;
  UINT64 Tcr_El1;
  UINT64 Tpidr_El0;
  UINT64 Tpidr_El1;
  UINT64 Tpidrro_El0;
  UINT64 Ttbr0_El1;
  UINT64 Ttbr1_El1;
} EFI_ARM_AARCH64_EL1_CONTEXT_REGISTERS;

typedef struct {
  UINT64 Elr_El2;
  UINT64 Esr_El2;
  UINT64 Far_El2;
  UINT64 Hacr_El2;
  UINT64 Hcr_El2;
  UINT64 Hpfar_El2;
  UINT64 Mair_El2;
  UINT64 Sctlr_El2;
  UINT64 Sp_El2;
  UINT64 Spsr_El2;
  UINT64 Tcr_El2;
  UINT64 Tpidr_El2;
  UINT64 Ttbr0_El2;
  UINT64 Vtcr_El2;
  UINT64 Vttbr_El2;
} EFI_ARM_AARCH64_EL2_CONTEXT_REGISTERS;

typedef struct {
  UINT64 Elr_El3;
  UINT64 Esr_El3;
  UINT64 Far_El3;
  UINT64 Mair_El3;
  UINT64 Sctlr_El3;
  UINT64 Sp_El3;
  UINT64 Spsr_El3;
  UINT64 Tcr_El3;
  UINT64 Tpidr_El3;
  UINT64 Ttbr0_El3;
} EFI_ARM_AARCH64_EL3_CONTEXT_REGISTERS;

typedef struct {
  UINT64 MrsOp2 : 3;
  UINT64 MrsCrm : 4;
  UINT64 MrsCrn : 4;
  UINT64 MrsOp1 : 3;
  UINT64 MrsO0 : 1;
  UINT64 Value : 64;
} EFI_ARM_MISC_CONTEXT_REGISTER;

json_object* cper_section_arm_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor);
void ir_section_arm_to_cper(json_object* section, FILE* out);

#endif