Add ARM JSON to specification.
diff --git a/sections/cper-section-arm.c b/sections/cper-section-arm.c
index 4c5ce36..da5d533 100644
--- a/sections/cper-section-arm.c
+++ b/sections/cper-section-arm.c
@@ -32,7 +32,7 @@
     //Number of error info and context info structures, and length.
     json_object_object_add(section_ir, "errorInfoNum", json_object_new_int(record->ErrInfoNum));
     json_object_object_add(section_ir, "contextInfoNum", json_object_new_int(record->ContextInfoNum));
-    json_object_object_add(section_ir, "sectionLength", json_object_new_int(record->SectionLength));
+    json_object_object_add(section_ir, "sectionLength", json_object_new_uint64(record->SectionLength));
 
     //Error affinity.
     json_object* error_affinity = json_object_new_object();
@@ -46,13 +46,13 @@
     json_object_object_add(section_ir, "midrEl1", json_object_new_uint64(record->MIDR_EL1));
 
     //Whether the processor is running, and the state of it if so.
-    json_object_object_add(section_ir, "running", json_object_new_boolean(record->RunningState));
+    json_object_object_add(section_ir, "running", json_object_new_boolean(record->RunningState & 0b1));
     if (record->RunningState >> 31)
     {
         //Bit 32 of running state is on, so PSCI state information is included.
         //This can't be made human readable, as it is unknown whether this will be the pre-PSCI 1.0 format
         //or the newer Extended StateID format.
-        json_object_object_add(section_ir, "psciState", json_object_new_int(record->PsciState));
+        json_object_object_add(section_ir, "psciState", json_object_new_uint64(record->PsciState));
     }
 
     //Processor error structures.
@@ -68,8 +68,14 @@
     //Processor context structures.
     //The current position is moved within the processing, as it is a dynamic size structure.
     void* cur_pos = (void*)cur_error;
-    EFI_ARM_CONTEXT_INFORMATION_HEADER* header = (EFI_ARM_CONTEXT_INFORMATION_HEADER*)cur_error;
-    json_object* processor_context = cper_arm_processor_context_to_ir(header, &cur_pos);
+    json_object* context_info_array = json_object_new_array();
+    for (int i=0; i<record->ContextInfoNum; i++)
+    {
+        EFI_ARM_CONTEXT_INFORMATION_HEADER* header = (EFI_ARM_CONTEXT_INFORMATION_HEADER*)cur_pos;
+        json_object* processor_context = cper_arm_processor_context_to_ir(header, &cur_pos);
+        json_object_array_add(context_info_array, processor_context);
+    }
+    json_object_object_add(section_ir, "contextInfo", context_info_array);
 
     //Is there any vendor-specific information following?
     if (cur_pos < section + record->SectionLength)
@@ -229,7 +235,7 @@
 
     //Memory access attributes.
     //todo: find the specification of these in the ARM ARM
-    //...
+    json_object_object_add(bus_error_ir, "memoryAttributes", json_object_new_int(bus_error->MemoryAddressAttributes));
 
     //Access Mode
     json_object* access_mode = json_object_new_object();
@@ -303,6 +309,7 @@
             free(encoded);
             break;
     }
+    json_object_object_add(context_ir, "registerArray", register_array);
 
     //Set the current position to after the processor context structure.
     *cur_pos = (UINT8*)(*cur_pos) + header->RegisterArraySize;
diff --git a/sections/cper-section-arm.h b/sections/cper-section-arm.h
index a283efd..609eb2b 100644
--- a/sections/cper-section-arm.h
+++ b/sections/cper-section-arm.h
@@ -15,7 +15,7 @@
     "precisePCValid", "restartablePCValid"}
 #define ARM_BUS_ERROR_VALID_BITFIELD_NAMES (const char*[]) \
     {"transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "correctedValid", \
-    "precisePCValid", "restartablePCValid", "participationTypeValid", "timeOutValid", "addressSpaceValid", \
+    "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"}
diff --git a/sections/cper-section-ia32x64.c b/sections/cper-section-ia32x64.c
index f65f4f4..df238aa 100644
--- a/sections/cper-section-ia32x64.c
+++ b/sections/cper-section-ia32x64.c
@@ -101,9 +101,9 @@
     json_object_object_add(error_info_ir, "checkInfo", checkInformation);
 
     //Target, requestor, and responder identifiers.
-    json_object_object_add(error_info_ir, "targetIdentifier", json_object_new_uint64(error_info->TargetId));
-    json_object_object_add(error_info_ir, "requestorIdentifier", json_object_new_uint64(error_info->RequestorId));
-    json_object_object_add(error_info_ir, "responderIdentifier", json_object_new_uint64(error_info->ResponderId));
+    json_object_object_add(error_info_ir, "targetAddressID", json_object_new_uint64(error_info->TargetId));
+    json_object_object_add(error_info_ir, "requestorID", json_object_new_uint64(error_info->RequestorId));
+    json_object_object_add(error_info_ir, "responderID", json_object_new_uint64(error_info->ResponderId));
     json_object_object_add(error_info_ir, "instructionPointer", json_object_new_uint64(error_info->InstructionIP));
 
     return error_info_ir;
@@ -202,7 +202,7 @@
     json_object* ms_check_ir = json_object_new_object();
 
     //Validation bits.
-    json_object* validation = bitfield_to_ir(ms_check->ValidFields, 6, IA32X64_CHECK_INFO_VALID_BITFIELD_NAMES);
+    json_object* validation = bitfield_to_ir(ms_check->ValidFields, 6, IA32X64_CHECK_INFO_MS_CHECK_VALID_BITFIELD_NAMES);
     json_object_object_add(ms_check_ir, "validationBits", validation);
 
     //Error type (operation that caused the error).
@@ -274,31 +274,31 @@
 json_object* cper_ia32x64_register_32bit_to_ir(EFI_CONTEXT_IA32_REGISTER_STATE* registers)
 {
     json_object* ia32_registers = json_object_new_object();
-    json_object_object_add(ia32_registers, "eax", json_object_new_int(registers->Eax));
-    json_object_object_add(ia32_registers, "ebx", json_object_new_int(registers->Ebx));
-    json_object_object_add(ia32_registers, "ecx", json_object_new_int(registers->Ecx));
-    json_object_object_add(ia32_registers, "edx", json_object_new_int(registers->Edx));
-    json_object_object_add(ia32_registers, "esi", json_object_new_int(registers->Esi));
-    json_object_object_add(ia32_registers, "edi", json_object_new_int(registers->Edi));
-    json_object_object_add(ia32_registers, "ebp", json_object_new_int(registers->Ebp));
-    json_object_object_add(ia32_registers, "esp", json_object_new_int(registers->Esp));
-    json_object_object_add(ia32_registers, "cs", json_object_new_int(registers->Cs));
-    json_object_object_add(ia32_registers, "ds", json_object_new_int(registers->Ds));
-    json_object_object_add(ia32_registers, "ss", json_object_new_int(registers->Ss));
-    json_object_object_add(ia32_registers, "es", json_object_new_int(registers->Es));
-    json_object_object_add(ia32_registers, "fs", json_object_new_int(registers->Fs));
-    json_object_object_add(ia32_registers, "gs", json_object_new_int(registers->Gs));
-    json_object_object_add(ia32_registers, "eflags", json_object_new_int(registers->Eflags));
-    json_object_object_add(ia32_registers, "eip", json_object_new_int(registers->Eip));
-    json_object_object_add(ia32_registers, "cr0", json_object_new_int(registers->Cr0));
-    json_object_object_add(ia32_registers, "cr1", json_object_new_int(registers->Cr1));
-    json_object_object_add(ia32_registers, "cr2", json_object_new_int(registers->Cr2));
-    json_object_object_add(ia32_registers, "cr3", json_object_new_int(registers->Cr3));
-    json_object_object_add(ia32_registers, "cr4", json_object_new_int(registers->Cr4));
+    json_object_object_add(ia32_registers, "eax", json_object_new_uint64(registers->Eax));
+    json_object_object_add(ia32_registers, "ebx", json_object_new_uint64(registers->Ebx));
+    json_object_object_add(ia32_registers, "ecx", json_object_new_uint64(registers->Ecx));
+    json_object_object_add(ia32_registers, "edx", json_object_new_uint64(registers->Edx));
+    json_object_object_add(ia32_registers, "esi", json_object_new_uint64(registers->Esi));
+    json_object_object_add(ia32_registers, "edi", json_object_new_uint64(registers->Edi));
+    json_object_object_add(ia32_registers, "ebp", json_object_new_uint64(registers->Ebp));
+    json_object_object_add(ia32_registers, "esp", json_object_new_uint64(registers->Esp));
+    json_object_object_add(ia32_registers, "cs", json_object_new_uint64(registers->Cs));
+    json_object_object_add(ia32_registers, "ds", json_object_new_uint64(registers->Ds));
+    json_object_object_add(ia32_registers, "ss", json_object_new_uint64(registers->Ss));
+    json_object_object_add(ia32_registers, "es", json_object_new_uint64(registers->Es));
+    json_object_object_add(ia32_registers, "fs", json_object_new_uint64(registers->Fs));
+    json_object_object_add(ia32_registers, "gs", json_object_new_uint64(registers->Gs));
+    json_object_object_add(ia32_registers, "eflags", json_object_new_uint64(registers->Eflags));
+    json_object_object_add(ia32_registers, "eip", json_object_new_uint64(registers->Eip));
+    json_object_object_add(ia32_registers, "cr0", json_object_new_uint64(registers->Cr0));
+    json_object_object_add(ia32_registers, "cr1", json_object_new_uint64(registers->Cr1));
+    json_object_object_add(ia32_registers, "cr2", json_object_new_uint64(registers->Cr2));
+    json_object_object_add(ia32_registers, "cr3", json_object_new_uint64(registers->Cr3));
+    json_object_object_add(ia32_registers, "cr4", json_object_new_uint64(registers->Cr4));
     json_object_object_add(ia32_registers, "gdtr", json_object_new_uint64(registers->Gdtr[0] + ((UINT64)registers->Gdtr[1] << 32)));
     json_object_object_add(ia32_registers, "idtr", json_object_new_uint64(registers->Idtr[0] + ((UINT64)registers->Idtr[1] << 32)));
-    json_object_object_add(ia32_registers, "ldtr", json_object_new_int(registers->Ldtr));
-    json_object_object_add(ia32_registers, "tr", json_object_new_int(registers->Tr));
+    json_object_object_add(ia32_registers, "ldtr", json_object_new_uint64(registers->Ldtr));
+    json_object_object_add(ia32_registers, "tr", json_object_new_uint64(registers->Tr));
 
     return ia32_registers;
 }
diff --git a/sections/cper-section-ia32x64.h b/sections/cper-section-ia32x64.h
index 51af428..238117d 100644
--- a/sections/cper-section-ia32x64.h
+++ b/sections/cper-section-ia32x64.h
@@ -5,12 +5,15 @@
 #include "../edk/Cper.h"
 
 #define IA32X64_PROCESSOR_ERROR_VALID_BITFIELD_NAMES (const char*[]) \
-    {"checkInfoValid", "targetAddressIdentifierValid", "requestorIdentifierValid", "responderIdentifierValid", \
+    {"checkInfoValid", "targetAddressIDValid", "requestorIDValid", "responderIDValid", \
     "instructionPointerValid"}
 #define IA32X64_CHECK_INFO_VALID_BITFIELD_NAMES (const char*[]) \
     {"transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "uncorrectedValid" \
-    "preciseIPValid", "restartableIPValid", "overflowValid", "participationTypeValid", "timeOutValid" \
+    "preciseIPValid", "restartableIPValid", "overflowValid", "participationTypeValid", "timedOutValid" \
     "addressSpaceValid"}
+#define IA32X64_CHECK_INFO_MS_CHECK_VALID_BITFIELD_NAMES (const char*[]) \
+    {"errorTypeValid", "processorContextCorruptValid", "uncorrectedValid", "preciseIPValid", "restartableIPValid", \
+    "overflowValid"}
 #define IA32X64_CHECK_INFO_TRANSACTION_TYPES_KEYS (int []){0, 1, 2}
 #define IA32X64_CHECK_INFO_TRANSACTION_TYPES_VALUES (const char*[]){"Instruction", "Data Access", "Generic"}
 #define IA32X64_CHECK_INFO_OPERATION_TYPES_KEYS (int []){0, 1, 2, 3, 4, 5, 6, 7, 8}