Fix hanging issues.
diff --git a/edk/Cper.h b/edk/Cper.h
index 7d14d23..b70e1bf 100644
--- a/edk/Cper.h
+++ b/edk/Cper.h
@@ -759,24 +759,6 @@
 /// ARM Processor Error Information Structure

 ///

 typedef struct {

-  UINT8 Version;

-  UINT8 Length;

-  UINT16 ValidationBits;

-  UINT8 Type;

-  UINT16 MultipleError;

-  UINT8 Flags;

-  EFI_ARM_PROCESSOR_ERROR_INFORMATION_STRUCTURE ErrorInformation;

-  UINT64 VirtualFaultAddress;

-  UINT64 PhysicalFaultAddress;

-} EFI_ARM_PROCESSOR_ERROR_INFORMATION_ENTRY;

-

-typedef union {

-  EFI_ARM_PROCESSOR_CACHE_ERROR_STRUCTURE CacheError;

-  EFI_ARM_PROCESSOR_TLB_ERROR_STRUCTURE TlbError;

-  EFI_ARM_PROCESSOR_BUS_ERROR_STRUCTURE BusError;

-} EFI_ARM_PROCESSOR_ERROR_INFORMATION_STRUCTURE;

-

-typedef struct {

   UINT64 ValidationBits : 16;

   UINT64 TransactionType : 2;

   UINT64 Operation : 4;

@@ -817,6 +799,24 @@
   UINT64 Reserved : 19;

 } EFI_ARM_PROCESSOR_BUS_ERROR_STRUCTURE;

 

+typedef union {

+  EFI_ARM_PROCESSOR_CACHE_ERROR_STRUCTURE CacheError;

+  EFI_ARM_PROCESSOR_TLB_ERROR_STRUCTURE TlbError;

+  EFI_ARM_PROCESSOR_BUS_ERROR_STRUCTURE BusError;

+} EFI_ARM_PROCESSOR_ERROR_INFORMATION_STRUCTURE;

+

+typedef struct {

+  UINT8 Version;

+  UINT8 Length;

+  UINT16 ValidationBits;

+  UINT8 Type;

+  UINT16 MultipleError;

+  UINT8 Flags;

+  EFI_ARM_PROCESSOR_ERROR_INFORMATION_STRUCTURE ErrorInformation;

+  UINT64 VirtualFaultAddress;

+  UINT64 PhysicalFaultAddress;

+} EFI_ARM_PROCESSOR_ERROR_INFORMATION_ENTRY;

+

 ///

 /// Error Status Fields

 ///

diff --git a/sections/cper-section-arm.c b/sections/cper-section-arm.c
index cda8252..cbb76b4 100644
--- a/sections/cper-section-arm.c
+++ b/sections/cper-section-arm.c
@@ -85,7 +85,7 @@
     json_object_object_add(error_info_ir, "errorType", error_type);
 
     //Multiple error count.
-    json_object* multiple_error = json_object_object_create();
+    json_object* multiple_error = json_object_new_object();
     json_object_object_add(multiple_error, "value", json_object_new_int(error_info->MultipleError));
     json_object_object_add(multiple_error, "type", 
         json_object_new_string(error_info->MultipleError < 1 ? "Single Error" : "Multiple Errors"));
@@ -100,13 +100,13 @@
     switch (error_info->Type)
     {
         case 0: //Cache
-            error_subinfo = cper_arm_cache_error_to_ir((EFI_ARM_PROCESSOR_CACHE_ERROR_STRUCTURE*)error_info->ErrorInformation);
+            error_subinfo = cper_arm_cache_error_to_ir((EFI_ARM_PROCESSOR_CACHE_ERROR_STRUCTURE*)&error_info->ErrorInformation);
             break;
         case 1: //TLB
-            error_subinfo = cper_arm_tlb_error_to_ir((EFI_ARM_PROCESSOR_TLB_ERROR_STRUCTURE*)error_info->ErrorInformation);
+            error_subinfo = cper_arm_tlb_error_to_ir((EFI_ARM_PROCESSOR_TLB_ERROR_STRUCTURE*)&error_info->ErrorInformation);
             break;
         case 2: //Bus
-            error_subinfo = cper_arm_bus_error_to_ir((EFI_ARM_PROCESSOR_BUS_ERROR_STRUCTURE*)error_info->ErrorInformation);
+            error_subinfo = cper_arm_bus_error_to_ir((EFI_ARM_PROCESSOR_BUS_ERROR_STRUCTURE*)&error_info->ErrorInformation);
             break;
     }
     json_object_object_add(error_info_ir, "errorInformation", error_subinfo);
diff --git a/sections/cper-section-generic.c b/sections/cper-section-generic.c
index 2745b06..04a5493 100644
--- a/sections/cper-section-generic.c
+++ b/sections/cper-section-generic.c
@@ -18,7 +18,7 @@
     json_object* section_ir = json_object_new_object();
 
     //Validation bits.
-    json_object* validation = bitfield64_to_ir(section_generic->ValidFields, 13, GENERIC_VALIDATION_BITFIELD_NAMES);
+    json_object* validation = bitfield_to_ir(section_generic->ValidFields, 13, GENERIC_VALIDATION_BITFIELD_NAMES);
     json_object_object_add(section_ir, "validationBits", validation);
 
     //Processor type, with human readable name if possible.
@@ -54,7 +54,7 @@
     json_object_object_add(section_ir, "operation", operation);
 
     //Flags, additional information about the error.
-    json_object* flags = bitfield8_to_ir(section_generic->Flags, 4, GENERIC_FLAGS_BITFIELD_NAMES);
+    json_object* flags = bitfield_to_ir(section_generic->Flags, 4, GENERIC_FLAGS_BITFIELD_NAMES);
     json_object_object_add(section_ir, "flags", flags);
 
     //The level of the error.
diff --git a/sections/cper-section-ia32x64.c b/sections/cper-section-ia32x64.c
index cb56ed7..6eca647 100644
--- a/sections/cper-section-ia32x64.c
+++ b/sections/cper-section-ia32x64.c
@@ -76,7 +76,7 @@
     json_object_object_add(error_info_ir, "type", json_object_new_string(error_type));
 
     //Validation bits.
-    json_object* validation = bitfield64_to_ir(error_info->ValidFields, 5, IA32X64_PROCESSOR_ERROR_VALID_BITFIELD_NAMES);
+    json_object* validation = bitfield_to_ir(error_info->ValidFields, 5, IA32X64_PROCESSOR_ERROR_VALID_BITFIELD_NAMES);
     json_object_object_add(error_info_ir, "validationBits", validation);
 
     //Add the check information on a per-structure basis.