summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat/prdfPlatServices_rt.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag/prdf/plat/prdfPlatServices_rt.C')
-rw-r--r--src/usr/diag/prdf/plat/prdfPlatServices_rt.C18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/usr/diag/prdf/plat/prdfPlatServices_rt.C b/src/usr/diag/prdf/plat/prdfPlatServices_rt.C
index 03b5b2a6f..dec2f2806 100644
--- a/src/usr/diag/prdf/plat/prdfPlatServices_rt.C
+++ b/src/usr/diag/prdf/plat/prdfPlatServices_rt.C
@@ -115,6 +115,20 @@ void sendDynMemDeallocRequest( uint64_t i_startAddr, uint64_t i_endAddr )
#undef PRDF_FUNC
}
+MemAddr __convertMssMcbistAddr( const mss::mcbist::address & i_addr )
+{
+ uint64_t dslct = i_addr.get_dimm();
+ uint64_t rslct = i_addr.get_master_rank();
+ uint64_t srnk = i_addr.get_slave_rank();
+ uint64_t bnk = i_addr.get_bank();
+ uint64_t row = i_addr.get_row();
+ uint64_t col = i_addr.get_column();
+
+ uint64_t mrnk = (dslct << 2) | rslct;
+
+ return MemAddr ( MemRank ( mrnk, srnk ), bnk, row, col );
+}
+
int32_t getMemAddrRange( TargetHandle_t i_tgt, uint8_t i_mrank,
uint8_t i_dimmSlct, MemAddr & o_startAddr,
MemAddr & o_endAddr, uint8_t i_srank,
@@ -140,8 +154,8 @@ int32_t getMemAddrRange( TargetHandle_t i_tgt, uint8_t i_mrank,
saddr, eaddr );
}
- o_startAddr = MemAddr::fromMaintAddr<TYPE_MCBIST>( (uint64_t) saddr );
- o_endAddr = MemAddr::fromMaintAddr<TYPE_MCBIST>( (uint64_t) eaddr );
+ o_startAddr = __convertMssMcbistAddr( saddr );
+ o_endAddr = __convertMssMcbistAddr( eaddr );
return SUCCESS;
}
OpenPOWER on IntegriCloud