diff options
author | Martin Peschke <mpeschke@de.ibm.com> | 2016-09-15 15:36:22 +0200 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2016-09-20 04:44:21 -0400 |
commit | f6898a2e1646f18d94a94386853971d257a8ed87 (patch) | |
tree | 5b575aeab153c5c2d3a8cc88afbd101b03485a49 /src/import | |
parent | 278e29100f424cc4d148bbfdcc509b19b3a2ec3e (diff) | |
download | talos-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.C | 108 |
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; } |