{
    "$id": "cper-json-arm-processor-section",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "required": ["validationBits", "errorInfoNum", "contextInfoNum", "sectionLength", "errorAffinity", "mpidrEl1", "midrEl1", "running", "errorInfo", "contextInfo"],
    "additionalProperties": false,
    "properties": {
        "validationBits": {
            "type": "object",
            "required": ["mpidrValid", "errorAffinityLevelValid", "runningStateValid", "vendorSpecificInfoValid"],
            "properties": {
                "mpidrValid": {
                    "type": "boolean"
                },
                "errorAffinityLevelValid": {
                    "type": "boolean"
                },
                "runningStateValid": {
                    "type": "boolean"
                },
                "vendorSpecificInfoValid": {
                    "type": "boolean"
                }
            }
        },
        "errorInfoNum": {
            "type": "integer"
        },
        "contextInfoNum": {
            "type": "integer"
        },
        "sectionLength": {
            "type": "integer"
        },
        "errorAffinity": {
            "type": "object",
            "required": ["value", "type"],
            "properties": {
                "value": {
                    "type": "integer"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "mpidrEl1": {
            "type": "integer"
        },
        "midrEl1": {
            "type": "integer"
        },
        "running": {
            "type": "boolean"
        },
        "psciState": {
            "type": "integer"
        },
        "errorInfo": {
            "type": "array",
            "items": {
                "type": "object",
                "required": ["version", "length", "validationBits", "errorType", "multipleError", "flags", "errorInformation", "virtualFaultAddress", "physicalFaultAddress"],
                "additionalProperties": false,
                "properties": {
                    "version": {
                        "type": "integer"
                    },
                    "length": {
                        "type": "integer"
                    },
                    "validationBits": {
                        "type": "object",
                        "required": ["multipleErrorValid", "flagsValid", "errorInformationValid", "virtualFaultAddressValid", "physicalFaultAddressValid"],
                        "properties": {
                            "multipleErrorValid": {
                                "type": "boolean"
                            },
                            "flagsValid": {
                                "type": "boolean"
                            },
                            "errorInformationValid": {
                                "type": "boolean"
                            },
                            "virtualFaultAddressValid": {
                                "type": "boolean"
                            },
                            "physicalFaultAddressValid": {
                                "type": "boolean"
                            }
                        }
                    },
                    "errorType": {
                        "type": "object",
                        "$ref": "./common/cper-json-nvp.json"
                    },
                    "multipleError": {
                        "type": "object",
                        "required": ["type", "value"],
                        "additionalProperties": false,
                        "properties": {
                            "type": {
                                "type": "string"
                            },
                            "value": {
                                "type": "integer"
                            }
                        }
                    },
                    "flags": {
                        "type": "object",
                        "required": ["firstErrorCaptured", "lastErrorCaptured", "propagated", "overflow"],
                        "properties": {
                            "firstErrorCaptured": {
                                "type": "boolean"
                            },
                            "lastErrorCaptured": {
                                "type": "boolean"
                            },
                            "propagated": {
                                "type": "boolean"
                            },
                            "overflow": {
                                "type": "boolean"
                            }
                        }
                    },
                    "errorInformation": {
                        "type": "object",
                        "oneOf": [
                            {
                                "type": "object",
                                "required": ["validationBits", "transactionType", "operation", "level", "processorContextCorrupt", "corrected", "precisePC", "restartablePC"],
                                "additionalProperties": false,
                                "properties": {
                                    "validationBits": {
                                        "type": "object",
                                        "required": ["transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "correctedValid", "precisePCValid", "restartablePCValid"],
                                        "properties": {
                                            "transactionTypeValid": {
                                                "type": "boolean"
                                            },
                                            "operationValid": {
                                                "type": "boolean"
                                            },
                                            "levelValid": {
                                                "type": "boolean"
                                            },
                                            "processorContextCorruptValid": {
                                                "type": "boolean"
                                            },
                                            "correctedValid": {
                                                "type": "boolean"
                                            },
                                            "precisePCValid": {
                                                "type": "boolean"
                                            },
                                            "restartablePCValid": {
                                                "type": "boolean"
                                            }
                                        }
                                    },
                                    "transactionType": {
                                        "type": "object",
                                        "$ref": "./common/cper-json-nvp.json"
                                    },
                                    "operation": {
                                        "type": "object",
                                        "$ref": "./common/cper-json-nvp.json"
                                    },
                                    "level": {
                                        "type": "integer"
                                    },
                                    "processorContextCorrupt": {
                                        "type": "boolean"
                                    },
                                    "corrected": {
                                        "type": "boolean"
                                    },
                                    "precisePC": {
                                        "type": "boolean"
                                    },
                                    "restartablePC": {
                                        "type": "boolean"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["validationBits", "transactionType", "operation", "level", "processorContextCorrupt", "corrected", "precisePC", "restartablePC", "timedOut", "participationType", "addressSpace", "memoryAttributes", "accessMode"],
                                "additionalProperties": false,
                                "properties": {
                                    "validationBits": {
                                        "type": "object",
                                        "required": ["transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "correctedValid", "precisePCValid", "restartablePCValid", "participationTypeValid", "timedOutValid", "addressSpaceValid", "memoryAttributesValid", "accessModeValid"],
                                        "properties": {
                                            "transactionTypeValid": {
                                                "type": "boolean"
                                            },
                                            "operationValid": {
                                                "type": "boolean"
                                            },
                                            "levelValid": {
                                                "type": "boolean"
                                            },
                                            "processorContextCorruptValid": {
                                                "type": "boolean"
                                            },
                                            "correctedValid": {
                                                "type": "boolean"
                                            },
                                            "precisePCValid": {
                                                "type": "boolean"
                                            },
                                            "restartablePCValid": {
                                                "type": "boolean"
                                            },
                                            "participationTypeValid": {
                                                "type": "boolean"
                                            },
                                            "timedOutValid": {
                                                "type": "boolean"
                                            },
                                            "addressSpaceValid": {
                                                "type": "boolean"
                                            },
                                            "memoryAttributesValid": {
                                                "type": "boolean"
                                            },
                                            "accessModeValid": {
                                                "type": "boolean"
                                            }
                                        }
                                    },
                                    "transactionType": {
                                        "type": "object",
                                        "$ref": "./common/cper-json-nvp.json"
                                    },
                                    "operation": {
                                        "type": "object",
                                        "$ref": "./common/cper-json-nvp.json"
                                    },
                                    "level": {
                                        "type": "integer"
                                    },
                                    "processorContextCorrupt": {
                                        "type": "boolean"
                                    },
                                    "corrected": {
                                        "type": "boolean"
                                    },
                                    "precisePC": {
                                        "type": "boolean"
                                    },
                                    "restartablePC": {
                                        "type": "boolean"
                                    },
                                    "timedOut": {
                                        "type": "boolean"
                                    },
                                    "participationType": {
                                        "type": "object",
                                        "$ref": "./common/cper-json-nvp.json"
                                    },
                                    "addressSpace": {
                                        "type": "object",
                                        "$ref": "./common/cper-json-nvp.json"
                                    },
                                    "accessMode": {
                                        "type": "object",
                                        "$ref": "./common/cper-json-nvp.json"
                                    },
                                    "memoryAttributes": {
                                        "type": "integer"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["data"],
                                "additionalProperties": false,
                                "properties": {
                                    "data": {
                                        "type": "integer"
                                    }
                                }
                            }
                        ]
                    },
                    "virtualFaultAddress": {
                        "type": "integer"
                    },
                    "physicalFaultAddress": {
                        "type": "integer"
                    }
                }
            }
        },
        "contextInfo": {
            "type": "array",
            "items": {
                "type": "object",
                "required": ["version", "registerContextType", "registerArraySize", "registerArray"],
                "additionalProperties": false,
                "properties": {
                    "version": {
                        "type": "integer",
                        "minimum": 0
                    },
                    "registerContextType": {
                        "type": "object",
                        "$ref": "./common/cper-json-nvp.json"
                    },
                    "registerArraySize": {
                        "type": "integer"
                    },
                    "registerArray": {
                        "type": "object",
                        "oneOf": [
                            {
                                "type": "object",
                                "required": ["r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13_sp", "r14_lr", "r15_pc"],
                                "properties": {
                                    "r0": { "type": "integer" },
                                    "r1": { "type": "integer" },
                                    "r2": { "type": "integer" },
                                    "r3": { "type": "integer" },
                                    "r4": { "type": "integer" },
                                    "r5": { "type": "integer" },
                                    "r6": { "type": "integer" },
                                    "r7": { "type": "integer" },
                                    "r8": { "type": "integer" },
                                    "r9": { "type": "integer" },
                                    "r10": { "type": "integer" },
                                    "r11": { "type": "integer" },
                                    "r12": { "type": "integer" },
                                    "r13_sp": { "type": "integer" },
                                    "r14_lr": { "type": "integer" },
                                    "r15_pc": { "type": "integer" }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["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"],
                                "properties": {
                                    "dfar": { "type": "integer" },
                                    "dfsr": { "type": "integer" },
                                    "ifar": { "type": "integer" },
                                    "isr": { "type": "integer" },
                                    "mair0": { "type": "integer" },
                                    "mair1": { "type": "integer" },
                                    "midr": { "type": "integer" },
                                    "mpidr": { "type": "integer" },
                                    "nmrr": { "type": "integer" },
                                    "prrr": { "type": "integer" },
                                    "sctlr_ns": { "type": "integer" },
                                    "spsr": { "type": "integer" },
                                    "spsr_abt": { "type": "integer" },
                                    "spsr_fiq": { "type": "integer" },
                                    "spsr_irq": { "type": "integer" },
                                    "spsr_svc": { "type": "integer" },
                                    "spsr_und": { "type": "integer" },
                                    "tpidrprw": { "type": "integer" },
                                    "tpidruro": { "type": "integer" },
                                    "tpidrurw": { "type": "integer" },
                                    "ttbcr": { "type": "integer" },
                                    "ttbr0": { "type": "integer" },
                                    "ttbr1": { "type": "integer" },
                                    "dacr": { "type": "integer" }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["elr_hyp", "hamair0", "hamair1", "hcr", "hcr2", "hdfar", "hifar", "hpfar", "hsr", "htcr", "htpidr", "httbr", "spsr_hyp", "vtcr", "vttbr", "dacr32_el2"],
                                "properties": {
                                    "elr_hyp": { "type": "integer" },
                                    "hamair0": { "type": "integer" },
                                    "hamair1": { "type": "integer" },
                                    "hcr": { "type": "integer" },
                                    "hcr2": { "type": "integer" },
                                    "hdfar": { "type": "integer" },
                                    "hifar": { "type": "integer" },
                                    "hpfar": { "type": "integer" },
                                    "hsr": { "type": "integer" },
                                    "htcr": { "type": "integer" },
                                    "htpidr": { "type": "integer" },
                                    "httbr": { "type": "integer" },
                                    "spsr_hyp": { "type": "integer" },
                                    "vtcr": { "type": "integer" },
                                    "vttbr": { "type": "integer" },
                                    "dacr32_el2": { "type": "integer" }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["sctlr_s", "spsr_mon"],
                                "properties": {
                                    "sctlr_s": { "type": "integer" },
                                    "spsr_mon": { "type": "integer" }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["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"],
                                "properties": {
                                    "x0": { "type": "integer" },
                                    "x1": { "type": "integer" },
                                    "x2": { "type": "integer" },
                                    "x3": { "type": "integer" },
                                    "x4": { "type": "integer" },
                                    "x5": { "type": "integer" },
                                    "x6": { "type": "integer" },
                                    "x7": { "type": "integer" },
                                    "x8": { "type": "integer" },
                                    "x9": { "type": "integer" },
                                    "x10": { "type": "integer" },
                                    "x11": { "type": "integer" },
                                    "x12": { "type": "integer" },
                                    "x13": { "type": "integer" },
                                    "x14": { "type": "integer" },
                                    "x15": { "type": "integer" },
                                    "x16": { "type": "integer" },
                                    "x17": { "type": "integer" },
                                    "x18": { "type": "integer" },
                                    "x19": { "type": "integer" },
                                    "x20": { "type": "integer" },
                                    "x21": { "type": "integer" },
                                    "x22": { "type": "integer" },
                                    "x23": { "type": "integer" },
                                    "x24": { "type": "integer" },
                                    "x25": { "type": "integer" },
                                    "x26": { "type": "integer" },
                                    "x27": { "type": "integer" },
                                    "x28": { "type": "integer" },
                                    "x29": { "type": "integer" },
                                    "x30": { "type": "integer" },
                                    "sp": { "type": "integer" }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["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"],
                                "properties": {
                                    "elr_el1": { "type": "integer" },
                                    "esr_el1": { "type": "integer" },
                                    "far_el1": { "type": "integer" },
                                    "isr_el1": { "type": "integer" },
                                    "mair_el1": { "type": "integer" },
                                    "midr_el1": { "type": "integer" },
                                    "mpidr_el1": { "type": "integer" },
                                    "sctlr_el1": { "type": "integer" },
                                    "sp_el0": { "type": "integer" },
                                    "sp_el1": { "type": "integer" },
                                    "spsr_el1": { "type": "integer" },
                                    "tcr_el1": { "type": "integer" },
                                    "tpidr_el0": { "type": "integer" },
                                    "tpidr_el1": { "type": "integer" },
                                    "tpidrro_el0": { "type": "integer" },
                                    "ttbr0_el1": { "type": "integer" },
                                    "ttbr1_el1": { "type": "integer" }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["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"],
                                "properties": {
                                    "elr_el2": { "type": "integer" },
                                    "esr_el2": { "type": "integer" },
                                    "far_el2": { "type": "integer" },
                                    "hacr_el2": { "type": "integer" },
                                    "hcr_el2": { "type": "integer" },
                                    "hpfar_el2": { "type": "integer" },
                                    "mair_el2": { "type": "integer" },
                                    "sctlr_el2": { "type": "integer" },
                                    "sp_el2": { "type": "integer" },
                                    "spsr_el2": { "type": "integer" },
                                    "tcr_el2": { "type": "integer" },
                                    "tpidr_el2": { "type": "integer" },
                                    "ttbr0_el2": { "type": "integer" },
                                    "vtcr_el2": { "type": "integer" },
                                    "vttbr_el2": { "type": "integer" }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["elr_el3", "esr_el3", "far_el3", "mair_el3", "sctlr_el3", "sp_el3", "spsr_el3", "tcr_el3", "tpidr_el3", "ttbr0_el3"],
                                "properties": {
                                    "elr_el3": { "type": "integer" },
                                    "esr_el3": { "type": "integer" },
                                    "far_el3": { "type": "integer" },
                                    "mair_el3": { "type": "integer" },
                                    "sctlr_el3": { "type": "integer" },
                                    "sp_el3": { "type": "integer" },
                                    "spsr_el3": { "type": "integer" },
                                    "tcr_el3": { "type": "integer" },
                                    "tpidr_el3": { "type": "integer" },
                                    "ttbr0_el3": { "type": "integer" }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["mrsEncoding", "value"],
                                "additionalProperties": false,
                                "properties": {
                                    "mrsEncoding": {
                                        "type": "object",
                                        "required": ["op2", "crm", "crn", "op1", "o0"],
                                        "properties": {
                                            "op2": { "type": "integer" },
                                            "crm": { "type": "integer" },
                                            "crn": { "type": "integer" },
                                            "op1": { "type": "integer" },
                                            "o0": { "type": "integer" }
                                        }
                                    },
                                    "value": {
                                        "type": "integer"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": ["data"],
                                "properties": {
                                    "data": {
                                        "type": "string"
                                    }
                                }
                            }
                        ]
                    }
                }
            }
        },
        "vendorSpecificInfo": {
            "type": "object",
            "required": ["data"],
            "additionalProperties": false,
            "properties": {
                "data": {
                    "type": "string"
                }
            }
        }
    }
}