diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2014-01-14 18:58:57 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-02-06 17:40:11 -0600 |
commit | 6454fc5ee6f30a98202f1595c458f32b26393f70 (patch) | |
tree | 1453ff26f498b46009e44baf5103ec365a2988ed /src/usr/testcore/rtloader/loader.H | |
parent | 6155c62ab8eae064a0160bf8c042953637113d66 (diff) | |
download | blackbird-hostboot-6454fc5ee6f30a98202f1595c458f32b26393f70.tar.gz blackbird-hostboot-6454fc5ee6f30a98202f1595c458f32b26393f70.zip |
HBRT: Support full targeting in Sapphire.
Change-Id: Ib8119e3c11cfa1171b76f2260871d2de5e99d502
RTC: 87716
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8145
Tested-by: Jenkins Server
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/testcore/rtloader/loader.H')
-rw-r--r-- | src/usr/testcore/rtloader/loader.H | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/src/usr/testcore/rtloader/loader.H b/src/usr/testcore/rtloader/loader.H index c2935d769..eacb2b2af 100644 --- a/src/usr/testcore/rtloader/loader.H +++ b/src/usr/testcore/rtloader/loader.H @@ -28,6 +28,7 @@ #include <sys/mm.h> #include <targeting/common/targetservice.H> #include <targeting/common/attributes.H> +#include <targeting/attrrp.H> #include <targeting/common/utilFilter.H> #include <errl/errlmanager.H> #include <util/utillidmgr.H> @@ -304,6 +305,8 @@ class RuntimeLoaderTest : public CxxTest::TestSuite { if (0 == strcmp(i_region, "ibm,hbrt-vpd-image")) return rt_get_vpd(); + else if (0 == strcmp(i_region, "ibm,hbrt-target-image")) + return rt_get_targ(); else return 0; } @@ -318,15 +321,13 @@ class RuntimeLoaderTest : public CxxTest::TestSuite // runtime VPD area not setup yet. // Need to map the area into virtual memory - - uint64_t phys_addr = 0; - errlHndl_t err = VPD::vpd_load_rt_image(phys_addr); + errlHndl_t err = VPD::vpd_load_rt_image(cv_vpd_phys_addr); if(!err) { uint8_t * vpd_ptr = - reinterpret_cast<uint8_t *>(phys_addr); + reinterpret_cast<uint8_t *>(cv_vpd_phys_addr); void * vptr = mm_block_map(vpd_ptr, VMM_RT_VPD_SIZE); @@ -346,13 +347,38 @@ class RuntimeLoaderTest : public CxxTest::TestSuite } + static uint64_t rt_get_targ() + { + if (cv_targ_addr != 0) + { + return cv_targ_addr; + } + + // Ensure cv_vpd_phys_addr is primed. + rt_get_vpd(); + + cv_targ_phys_addr = cv_vpd_phys_addr; + cv_targ_addr = reinterpret_cast<uint64_t>( + TARGETING::AttrRP::save(cv_targ_phys_addr)); + + return cv_targ_addr; + } + static uint64_t cv_vpd_addr; + static uint64_t cv_vpd_phys_addr; + static uint64_t cv_targ_addr; + static uint64_t cv_targ_phys_addr; }; RuntimeLoaderTest::SCOM_MAP RuntimeLoaderTest::cv_scomMap; std::map<void*, UtilLidMgr*> RuntimeLoaderTest::cv_loadedLids; uint64_t RuntimeLoaderTest::cv_vpd_addr = 0; +uint64_t RuntimeLoaderTest::cv_vpd_phys_addr = 0; +uint64_t RuntimeLoaderTest::cv_targ_addr = 0; +uint64_t RuntimeLoaderTest::cv_targ_phys_addr = 0; + + #endif |