Add memory error/memory error 2 sections.
diff --git a/sections/cper-section-arm.c b/sections/cper-section-arm.c
index da5d533..f16fe0a 100644
--- a/sections/cper-section-arm.c
+++ b/sections/cper-section-arm.c
@@ -322,11 +322,11 @@
{
json_object* register_array = json_object_new_object();
json_object* mrs_encoding = json_object_new_object();
- json_object_object_add(mrs_encoding, "op2", json_object_new_int(misc_register->MrsOp2));
- json_object_object_add(mrs_encoding, "crm", json_object_new_int(misc_register->MrsOp2));
- json_object_object_add(mrs_encoding, "crn", json_object_new_int(misc_register->MrsOp2));
- json_object_object_add(mrs_encoding, "op1", json_object_new_int(misc_register->MrsOp2));
- json_object_object_add(mrs_encoding, "o0", json_object_new_int(misc_register->MrsOp2));
+ json_object_object_add(mrs_encoding, "op2", json_object_new_uint64(misc_register->MrsOp2));
+ json_object_object_add(mrs_encoding, "crm", json_object_new_uint64(misc_register->MrsOp2));
+ json_object_object_add(mrs_encoding, "crn", json_object_new_uint64(misc_register->MrsOp2));
+ json_object_object_add(mrs_encoding, "op1", json_object_new_uint64(misc_register->MrsOp2));
+ json_object_object_add(mrs_encoding, "o0", json_object_new_uint64(misc_register->MrsOp2));
json_object_object_add(register_array, "mrsEncoding", mrs_encoding);
json_object_object_add(register_array, "value", json_object_new_uint64(misc_register->Value));
diff --git a/sections/cper-section-memory.c b/sections/cper-section-memory.c
index 5f78eed..296425c 100644
--- a/sections/cper-section-memory.c
+++ b/sections/cper-section-memory.c
@@ -26,8 +26,17 @@
//Bank.
json_object* bank = json_object_new_object();
- json_object_object_add(bank, "address", json_object_new_uint64(memory_error->Bank & 0xFF));
- json_object_object_add(bank, "group", json_object_new_uint64(memory_error->Bank >> 8));
+ if ((memory_error->ValidFields >> 5) & 0x1)
+ {
+ //Entire bank address mode.
+ json_object_object_add(bank, "value", json_object_new_uint64(memory_error->Bank));
+ }
+ else
+ {
+ //Address/group address mode.
+ json_object_object_add(bank, "address", json_object_new_uint64(memory_error->Bank & 0xFF));
+ json_object_object_add(bank, "group", json_object_new_uint64(memory_error->Bank >> 8));
+ }
json_object_object_add(section_ir, "bank", bank);
//Memory error type.
@@ -80,8 +89,17 @@
//Bank.
json_object* bank = json_object_new_object();
- json_object_object_add(bank, "address", json_object_new_uint64(memory_error->Bank & 0xFF));
- json_object_object_add(bank, "group", json_object_new_uint64(memory_error->Bank >> 8));
+ if ((memory_error->ValidFields >> 5) & 0x1)
+ {
+ //Entire bank address mode.
+ json_object_object_add(bank, "value", json_object_new_uint64(memory_error->Bank));
+ }
+ else
+ {
+ //Address/group address mode.
+ json_object_object_add(bank, "address", json_object_new_uint64(memory_error->Bank & 0xFF));
+ json_object_object_add(bank, "group", json_object_new_uint64(memory_error->Bank >> 8));
+ }
json_object_object_add(section_ir, "bank", bank);
//Memory error type.