summaryrefslogtreecommitdiffstats
path: root/src/import
diff options
context:
space:
mode:
authorMartin Peschke <mpeschke@de.ibm.com>2016-09-15 15:36:22 +0200
committerSachin Gupta <sgupta2m@in.ibm.com>2016-09-20 04:44:21 -0400
commitf6898a2e1646f18d94a94386853971d257a8ed87 (patch)
tree5b575aeab153c5c2d3a8cc88afbd101b03485a49 /src/import
parent278e29100f424cc4d148bbfdcc509b19b3a2ec3e (diff)
downloadtalos-sbe-f6898a2e1646f18d94a94386853971d257a8ed87.tar.gz
talos-sbe-f6898a2e1646f18d94a94386853971d257a8ed87.zip
p9_xip_tool: print attribute arrays in report
Some attributes inside .fixed are actually arrays of values. So print each values. Handles both plain XIP images as well as PIBMEM dumps. Change-Id: Ic5b346a33a8da70b3f2caf1737521446b85e0061 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29758 Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Reviewed-by: Richard J. Knight <rjknight@us.ibm.com> Reviewed-by: Shakeeb A. Pasha B K <shakeebbk@in.ibm.com> Reviewed-by: Martin Peschke <mpeschke@de.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29762 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/import')
-rw-r--r--src/import/chips/p9/xip/p9_xip_tool.C108
1 files changed, 61 insertions, 47 deletions
diff --git a/src/import/chips/p9/xip/p9_xip_tool.C b/src/import/chips/p9/xip/p9_xip_tool.C
index 3c6a4612..8c7d3cf4 100644
--- a/src/import/chips/p9/xip/p9_xip_tool.C
+++ b/src/import/chips/p9/xip/p9_xip_tool.C
@@ -392,6 +392,8 @@ attrListing(const P9XipItem* i_item, const char* prefix)
{
int rc = 0;
uint64_t data = 0;
+ uint32_t i;
+ char name[42];
if (i_item->iv_address == 0)
{
@@ -399,67 +401,79 @@ attrListing(const P9XipItem* i_item, const char* prefix)
return rc;
}
- printf("%s%-42s | %s | ", prefix, i_item->iv_id,
- P9_XIP_TYPE_STRING(g_typeAbbrevs, i_item->iv_type));
+ for (i = 0; i < i_item->iv_elements; i++)
+ {
+ rc = p9_xip_get_item(i_item, &data, i);
- rc = p9_xip_get_item(i_item, &data, 0);
+ if (rc)
+ {
+ return rc;
+ }
- if (rc)
- {
- return rc;
- }
+ if (i_item->iv_elements > 1)
+ {
+ snprintf(name, sizeof(name), "%s[%d]", i_item->iv_id, i);
+ }
+ else
+ {
+ strncpy(name, i_item->iv_id, sizeof(name));
+ }
- switch (i_item->iv_type)
- {
- case P9_XIP_UINT8:
- printf("0x%02x", (uint8_t)data);
- break;
+ printf("%s%-42s | %s | ", prefix, name,
+ P9_XIP_TYPE_STRING(g_typeAbbrevs, i_item->iv_type));
- case P9_XIP_UINT16:
- printf("0x%04x", (uint16_t)data);
- break;
+ switch (i_item->iv_type)
+ {
+ case P9_XIP_UINT8:
+ printf("0x%02x", (uint8_t)data);
+ break;
- case P9_XIP_UINT32:
- printf("0x%08x", (uint32_t)data);
- break;
+ case P9_XIP_UINT16:
+ printf("0x%04x", (uint16_t)data);
+ break;
- case P9_XIP_UINT64:
- printf("0x%016lx", data);
- break;
+ case P9_XIP_UINT32:
+ printf("0x%08x", (uint32_t)data);
+ break;
- case P9_XIP_INT8:
- printf("0x%02x", (uint8_t)data);
- break;
+ case P9_XIP_UINT64:
+ printf("0x%016lx", data);
+ break;
- case P9_XIP_INT16:
- printf("0x%04x", (uint16_t)data);
- break;
+ case P9_XIP_INT8:
+ printf("0x%02x", (uint8_t)data);
+ break;
- case P9_XIP_INT32:
- printf("0x%08x", (uint32_t)data);
- break;
+ case P9_XIP_INT16:
+ printf("0x%04x", (uint16_t)data);
+ break;
- case P9_XIP_INT64:
- printf("0x%016lx", data);
- break;
+ case P9_XIP_INT32:
+ printf("0x%08x", (uint32_t)data);
+ break;
- case P9_XIP_STRING:
- printf("%s", (char*)(i_item->iv_imageData));
- break;
+ case P9_XIP_INT64:
+ printf("0x%016lx", data);
+ break;
- case P9_XIP_ADDRESS:
- printf("0x%04x:0x%08x",
- (uint16_t)((data >> 32) & 0xffff),
- (uint32_t)(data & 0xffffffff));
- break;
+ case P9_XIP_STRING:
+ printf("%s", (char*)(i_item->iv_imageData));
+ break;
- default:
- printf("unknown type\n");
- rc = P9_XIP_BUG;
- break;
- }
+ case P9_XIP_ADDRESS:
+ printf("0x%04x:0x%08x",
+ (uint16_t)((data >> 32) & 0xffff),
+ (uint32_t)(data & 0xffffffff));
+ break;
- printf("\n");
+ default:
+ printf("unknown type\n");
+ rc = P9_XIP_BUG;
+ break;
+ }
+
+ printf("\n");
+ }
return rc;
}
OpenPOWER on IntegriCloud