Add CCIX PER section support.
diff --git a/sections/cper-section-ccix-per.c b/sections/cper-section-ccix-per.c
new file mode 100644
index 0000000..ae8a797
--- /dev/null
+++ b/sections/cper-section-ccix-per.c
@@ -0,0 +1,35 @@
+/**
+ * Describes functions for converting CCIX PER log CPER sections from binary and JSON format
+ * into an intermediate format.
+ *
+ * Author: Lawrence.Tang@arm.com
+ **/
+#include <stdio.h>
+#include "json.h"
+#include "../edk/Cper.h"
+#include "../cper-utils.h"
+#include "cper-section-ccix-per.h"
+
+//Converts a single CCIX PER log CPER section into JSON IR.
+json_object* cper_section_ccix_per_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor)
+{
+ EFI_CCIX_PER_LOG_DATA* ccix_error = (EFI_CCIX_PER_LOG_DATA*)section;
+ json_object* section_ir = json_object_new_object();
+
+ //Length (bytes) for the entire structure.
+ json_object_object_add(section_ir, "length", json_object_new_uint64(ccix_error->Length));
+
+ //Validation bits.
+ json_object* validation = bitfield_to_ir(ccix_error->ValidBits, 3, CCIX_PER_ERROR_VALID_BITFIELD_NAMES);
+ json_object_object_add(section_ir, "validationBits", validation);
+
+ //CCIX source/port IDs.
+ json_object_object_add(section_ir, "ccixSourceID", json_object_new_int(ccix_error->CcixSourceId));
+ json_object_object_add(section_ir, "ccixPortID", json_object_new_int(ccix_error->CcixPortId));
+
+ //CCIX PER Log.
+ //todo: implement as described in Section 7.3.2 of CCIX Base Specification (Rev 1.0)
+ //the PER Log structure notes the number of DWORDs in the record.
+
+ return section_ir;
+}
\ No newline at end of file