diff options
author | spashabk-in <shakeebbk@in.ibm.com> | 2017-03-03 08:58:03 -0600 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2017-03-09 11:10:26 -0500 |
commit | acefaa40ca349d4a8173a1a3ae9a2e4848e0ea55 (patch) | |
tree | 86c2b7a2dbf079fe4e1e7e5de4ccb2476c613ac9 | |
parent | 808e4809a0ad3c80805e8939cc54c947bc376db7 (diff) | |
download | talos-sbe-acefaa40ca349d4a8173a1a3ae9a2e4848e0ea55.tar.gz talos-sbe-acefaa40ca349d4a8173a1a3ae9a2e4848e0ea55.zip |
ADU increment address
Change-Id: Ic770e8a1ab6898be5fda68be9d1cfc5f80c04b5a
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37459
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
-rw-r--r-- | src/sbefw/sbecmdmemaccess.C | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/sbefw/sbecmdmemaccess.C b/src/sbefw/sbecmdmemaccess.C index 51d1d430..6830e73a 100644 --- a/src/sbefw/sbecmdmemaccess.C +++ b/src/sbefw/sbecmdmemaccess.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -307,6 +307,7 @@ uint32_t processPbaRequest(const sbeMemAccessReqMsgHdr_t &i_hdr, l_firstGran, l_lastGran, (uint8_t *)&l_dataFifo) + l_addr += l_granuleSize; // if p9_pba_access returns error if( l_fapiRc != FAPI2_RC_SUCCESS ) @@ -337,7 +338,6 @@ uint32_t processPbaRequest(const sbeMemAccessReqMsgHdr_t &i_hdr, { break; } - l_addr += l_granuleSize * l_granulesCompleted; } // End..while (l_granulesCompleted < l_lenCacheAligned); // Now build and enqueue response into downstream FIFO @@ -456,6 +456,9 @@ uint32_t processAduRequest(const sbeMemAccessReqMsgHdr_t &i_hdr, SBE_DEBUG(SBE_FUNC "Data Aligned Len / Number of data granules = %d", l_lenCacheAligned); + // 8Byte granule for ADU access + uint32_t l_dataFifo[MAX_ADU_BUFFER] = {0}; + while (l_granulesCompleted < l_lenCacheAligned) { // Call the ADU setup HWP @@ -491,9 +494,6 @@ uint32_t processAduRequest(const sbeMemAccessReqMsgHdr_t &i_hdr, l_numAcc = l_lenCacheAligned - l_granulesCompleted; } - // 8Byte granule for ADU access - uint32_t l_dataFifo[MAX_ADU_BUFFER] = {0}; - uint64_t l_numCurrAcc = 0; while (l_numCurrAcc < l_numAcc) { @@ -558,7 +558,7 @@ uint32_t processAduRequest(const sbeMemAccessReqMsgHdr_t &i_hdr, { //Adu Read Mode - with either ECC or ITag or Both // Calculate the MODULUS - uint8_t l_mod = (l_numCurrAcc % 4); + uint8_t l_mod = (l_granulesCompleted % 4); if( (l_mod) && ((l_isEccMode) || (l_isItagMode)) ) { // Default Init it for 1byte extra @@ -590,6 +590,7 @@ uint32_t processAduRequest(const sbeMemAccessReqMsgHdr_t &i_hdr, l_ffdc.setRc(l_fapiRc); break; } + l_addr += l_granuleSize; // If this is a getmem request, // need to push the data into the downstream FIFO @@ -607,10 +608,10 @@ uint32_t processAduRequest(const sbeMemAccessReqMsgHdr_t &i_hdr, //happen to write on DownStream FIFO for each granule. //Calculate the MODULUS - uint8_t l_mod = (l_numCurrAcc % 4); + uint8_t l_mod = (l_granulesCompleted % 4); if((l_isEccMode) || (l_isItagMode)) { - if( (l_mod == 3) || (l_lastGran) ) + if( (l_mod == 3) || ((l_granulesCompleted+1) == l_lenCacheAligned) ) { l_len = calInterAduLenForUpFifo(l_mod,l_isItagMode, l_isEccMode); @@ -640,7 +641,6 @@ uint32_t processAduRequest(const sbeMemAccessReqMsgHdr_t &i_hdr, break; } - l_addr += l_granuleSize * l_granulesCompleted; } // End..while (l_granulesCompleted < l_lenCacheAligned); // Now build and enqueue response into downstream FIFO |