diff options
Diffstat (limited to 'src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C')
| -rwxr-xr-x | src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C index 4083d449a..b35326c15 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C @@ -33,6 +33,7 @@ #include <prdfGlobal.H> #include <iipSystem.h> #include <prdfLaneRepair.H> +#include <UtilHash.H> using namespace TARGETING; @@ -40,6 +41,7 @@ using namespace TARGETING; namespace PRDF { + namespace Membuf { @@ -200,6 +202,26 @@ int32_t PreAnalysis( ExtensibleChip * i_mbChip, STEP_CODE_DATA_STRUCT & i_sc, o_analyzed = false; + // Get memory capture data. + CaptureData & cd = i_sc.service_data->GetCaptureData(); + CenMembufDataBundle * mbdb = getMembufDataBundle( i_mbChip ); + ExtensibleChip * mcsChip = mbdb->getMcsChip(); + if ( NULL != mcsChip ) + { + mcsChip->CaptureErrorData( cd, Util::hashString("FirRegs") ); + mcsChip->CaptureErrorData( cd, Util::hashString("CerrRegs") ); + + for ( uint32_t i = 0; i < MAX_MBA_PER_MEMBUF; i++ ) + { + ExtensibleChip * mbaChip = mbdb->getMbaChip(i); + if ( NULL != mbaChip ) + { + mbaChip->CaptureErrorData( cd, Util::hashString("FirRegs") ); + mbaChip->CaptureErrorData( cd, Util::hashString("CerrRegs") ); + } + } + } + // Check for a Centaur Checkstop do { @@ -207,8 +229,6 @@ int32_t PreAnalysis( ExtensibleChip * i_mbChip, STEP_CODE_DATA_STRUCT & i_sc, if ( i_sc.service_data->GetFlag(ServiceDataCollector::UNIT_CS) ) break; - CenMembufDataBundle * mbdb = getMembufDataBundle(i_mbChip); - ExtensibleChip * mcsChip = mbdb->getMcsChip(); if ( NULL == mcsChip ) { PRDF_ERR( PRDF_FUNC"CenMembufDataBundle::getMcsChip() failed" ); |

