summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/fapiHwpExecInitFile.C
diff options
context:
space:
mode:
authorCamVan Nguyen <ctnguyen@us.ibm.com>2012-12-15 11:28:16 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-12-15 16:59:01 -0600
commit8badd89016edda6a4ba8167534cf28e3c95a348d (patch)
treeb92fb07a19d7f5003ec160befef43a867c5fb2c8 /src/usr/hwpf/hwp/fapiHwpExecInitFile.C
parent9b6d06aa0f837274aa8daca95bdd6c7cb596dd31 (diff)
downloadtalos-hostboot-8badd89016edda6a4ba8167534cf28e3c95a348d.tar.gz
talos-hostboot-8badd89016edda6a4ba8167534cf28e3c95a348d.zip
Fix for PutScomUnderMask op.
Change-Id: I30f3571946b25c8d9377db81558c353bfd632bfe Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/2719 Tested-by: Jenkins Server Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/fapiHwpExecInitFile.C')
-rw-r--r--src/usr/hwpf/hwp/fapiHwpExecInitFile.C13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/usr/hwpf/hwp/fapiHwpExecInitFile.C b/src/usr/hwpf/hwp/fapiHwpExecInitFile.C
index 43bf57bb5..8bc6f4c41 100644
--- a/src/usr/hwpf/hwp/fapiHwpExecInitFile.C
+++ b/src/usr/hwpf/hwp/fapiHwpExecInitFile.C
@@ -60,6 +60,9 @@
* camvanng 06/27/2012 Fix bug in targetId
* camvanng 09/07/2012 Optimization - do PutScom vs PutScomUnderMask
* if the combined bit mask enables all 64 bits
+ * camvanng 12/15/2012 For PutScomUnderMask ops, grab only valid bits
+ * of the data when the data length is greater
+ * then number of bits specified.
*/
#include <fapiHwpExecInitFile.H>
@@ -1491,10 +1494,6 @@ fapi::ReturnCode writeScom(ifData_t & i_ifData,
uint16_t l_len = i_ifData.scoms[l_scomNum]->len;
uint64_t l_tmpMask = 0; // mask for PutScomUnderMask ops
- //Shift data to the right offset; data is right aligned
- l_tmpData <<= (64 - (l_offset + l_len));
- l_data |= l_tmpData;
-
//Create mask
for (uint64_t i = l_offset; i < (l_offset + l_len); i++)
{
@@ -1502,6 +1501,12 @@ fapi::ReturnCode writeScom(ifData_t & i_ifData,
}
l_mask |= l_tmpMask;
+ //Shift data to the right offset and grab only the valid
+ //bits; data is right aligned
+ l_tmpData <<= (64 - (l_offset + l_len));
+ l_tmpData &= l_tmpMask;
+ l_data |= l_tmpData;
+
FAPI_DBG("fapiHwpExecInitFile: writeScom: data 0x%.16llX "
"mask 0x%.16llX len %u offset %u",
l_tmpData, l_tmpMask, l_len, l_offset);
OpenPOWER on IntegriCloud