summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/test
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2017-07-18 20:30:41 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2017-07-20 18:51:58 -0400
commit553e252ce59e62efb2e7e333c8659d329d525f73 (patch)
tree5aa6e2cb069ab2963f42ae41b6e4b4f8a235cf1c /src/usr/diag/prdf/test
parentf81330ed22ee8a1d9e135dbf32334aec3ac9020a (diff)
downloadblackbird-hostboot-553e252ce59e62efb2e7e333c8659d329d525f73.tar.gz
blackbird-hostboot-553e252ce59e62efb2e7e333c8659d329d525f73.zip
PRD: fixed structure alignment in firdata code
Change-Id: Ie6e8b1d86640fdf5392c59e7d7b76b3f1edc87d5 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43294 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Squashed: I3af463929b2c284ffe9c62172e92adf9af102403 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43358 Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf/test')
-rw-r--r--src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H b/src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H
index bbd642bcb..96f004b70 100644
--- a/src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H
+++ b/src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H
@@ -51,6 +51,24 @@
namespace PRDF
{
+
+/* Helper struct for chip information inserted into HOMER data section after the
+ * header. There is basically an array of these after the initial HOMER section
+ * (HOMER_Data_t). The register info then follows.
+ */
+typedef struct __attribute__((packed))
+{
+ HOMER_Chip_t hChipType; /* Nimbus, Centaur, EC Level, etc...*/
+
+ union
+ {
+ HOMER_ChipNimbus_t hChipN;
+ HOMER_ChipCumulus_t hChipC;
+ HOMER_ChipCentaur_t hChipM;
+ };
+
+} HOMER_ChipInfo_t;
+
// these functions from prdfWriteHomerFirData.C are needed for the
// fakeWriteHomerFirData() function
errlHndl_t getHwConfig( std::vector<HOMER_ChipInfo_t> &io_chipInfVector,
@@ -129,6 +147,9 @@ private:
{
using namespace PRDF;
+ const size_t sz_u32 = sizeof(uint32_t);
+ const size_t sz_hd = sizeof(HOMER_Data_t);
+
if (MASTER_PROC_CORE == i_curHw || ALL_PROC_MASTER_CORE == i_curHw)
{
// Should have at least one processor chip
@@ -138,10 +159,15 @@ private:
} // end if no chips
else
{
- uint8_t *l_bytePtr = (reinterpret_cast<uint8_t *>(d)) +
- sizeof(HOMER_Data_t);
+ uint8_t *l_bytePtr = (reinterpret_cast<uint8_t *>(d)) + sz_hd;
HOMER_Chip_t *l_chipPtr = NULL;
+ // The HOMER_Data_t struct may have an uneven size. Add some
+ // padding to ensure the subsequent HOMER_Chip_t structs are
+ // word aligned.
+ const size_t padding = (sz_u32 - (sz_hd % sz_u32)) % sz_u32;
+ l_bytePtr += padding;
+
// Have a chip or more to look thru
for ( uint32_t l_chipNum=0;
(l_chipNum < d->chipCount); l_chipNum++ )
OpenPOWER on IntegriCloud