Fix minor errors in spec, add JSON specification.
diff --git a/specification/json/sections/cper-arm-processor.json b/specification/json/sections/cper-arm-processor.json
new file mode 100644
index 0000000..55b1dbc
--- /dev/null
+++ b/specification/json/sections/cper-arm-processor.json
@@ -0,0 +1,523 @@
+{
+    "$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",
+                        "$ref": "../common/cper-json-nvp.json"
+                    },
+                    "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"
+                                    }
+                                }
+                            }
+                        ]
+                    },
+                    "virtualFaultAddress": {
+                        "type": "integer"
+                    },
+                    "physicalFaultAddress": {
+                        "type": "integer"
+                    }
+                }
+            }
+        },
+        "contextInfo": {
+            "type": "array",
+            "items": {
+                "type": "object",
+                "required": ["registerContextType", "registerArraySize", "registerArray"],
+                "additionalProperties": false,
+                "properties": {
+                    "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"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file