summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/usr/vmmconst.h18
-rw-r--r--src/usr/isteps/istep15/host_build_stop_image.C7
-rw-r--r--src/usr/occ/occ.C6
3 files changed, 18 insertions, 13 deletions
diff --git a/src/include/usr/vmmconst.h b/src/include/usr/vmmconst.h
index 1c91ae326..a7a68cc79 100644
--- a/src/include/usr/vmmconst.h
+++ b/src/include/usr/vmmconst.h
@@ -131,28 +131,30 @@ enum BlockPriority
/** Page Size in bits per SLBE */
#define SLBE_b 12
-/** Hardwired pointer to HOMER images in real mem */
-/** HOMER starts at 128MB + 32MB = 160MB */
+/** Hardwired offsets from HRMOR to HOMER images in real mem */
+/** HOMER starts immediately after our HB memory */
+/** <n0p0 HRMOR = 128MB> + <memory size = 32MB> = 160MB */
/** HOMER is 4 MB per proc, 8 procs = 32MB */
/** Each HOMER must start on a 4MB offset to meet OCC requirements */
-#define VMM_HOMER_REGION_START_ADDR (128*MEGABYTE + 32*MEGABYTE)
+#define VMM_HOMER_REGION_START_OFFSET (VMM_MEMORY_SIZE)
#define VMM_HOMER_INSTANCE_SIZE_IN_MB (4)
#define VMM_HOMER_INSTANCE_SIZE \
(VMM_HOMER_INSTANCE_SIZE_IN_MB*MEGABYTE)
#define VMM_HOMER_REGION_SIZE (VMM_HOMER_INSTANCE_SIZE*8)
+#define VMM_HOMER_REGION_END_OFFSET \
+ (VMM_HOMER_REGION_START_OFFSET + VMM_HOMER_REGION_SIZE)
/** HOMER_REGION_END = 192MB */
-#define VMM_HOMER_REGION_END_ADDR \
- (VMM_HOMER_REGION_START_ADDR + VMM_HOMER_REGION_SIZE)
/** Physical Memory for OCC common space - 8MB total */
/** OCC Common must be on an 8MB offset */
/** Start = End of Homer, currently 192MB */
-#define VMM_OCC_COMMON_START_ADDR VMM_HOMER_REGION_END_ADDR
+#define VMM_OCC_COMMON_START_OFFSET VMM_HOMER_REGION_END_OFFSET
#define VMM_OCC_COMMON_SIZE_IN_MB 8
#define VMM_OCC_COMMON_SIZE \
(VMM_OCC_COMMON_SIZE_IN_MB*MEGABYTE)
-#define VMM_OCC_COMMON_END \
- (VMM_OCC_COMMON_START_ADDR + VMM_OCC_COMMON_SIZE)
+#define VMM_OCC_COMMON_END_OFFSET \
+ (VMM_OCC_COMMON_START_OFFSET + VMM_OCC_COMMON_SIZE)
+/** End of Common Area = 200MB */
/** Total Memory required for HOMERs and OCC Common */
#define VMM_ALL_HOMER_OCC_MEMORY_SIZE \
diff --git a/src/usr/isteps/istep15/host_build_stop_image.C b/src/usr/isteps/istep15/host_build_stop_image.C
index 85b7c8d30..6b572c467 100644
--- a/src/usr/isteps/istep15/host_build_stop_image.C
+++ b/src/usr/isteps/istep15/host_build_stop_image.C
@@ -335,10 +335,9 @@ void* host_build_stop_image (void *io_pArgs)
do {
// Get the node-offset for our instance by looking at the HRMOR
uint64_t l_memBase = cpu_spr_value(CPU_SPR_HRMOR);
- // mask off the secureboot offset
- l_memBase = 0xFFFFF00000000000 & l_memBase;
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "HRMOR=%.16X", l_memBase );
// Now offset up to our hardcoded region
- l_memBase += VMM_HOMER_REGION_START_ADDR;
+ l_memBase += VMM_HOMER_REGION_START_OFFSET;
// Get a chunk of real memory big enough to store all the possible
// HCODE images. (4MB is size of HOMER)
@@ -354,7 +353,7 @@ void* host_build_stop_image (void *io_pArgs)
l_memBase -= VMM_ALL_HOMER_OCC_MEMORY_SIZE;
}
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "HOMER base = %x", l_memBase);
+ "HOMER base = %.16X", l_memBase);
l_pRealMemBase = reinterpret_cast<void * const>(l_memBase );
//Convert the real memory pointer to a pointer in virtual memory
diff --git a/src/usr/occ/occ.C b/src/usr/occ/occ.C
index 3572abec9..562e1988d 100644
--- a/src/usr/occ/occ.C
+++ b/src/usr/occ/occ.C
@@ -210,7 +210,7 @@ namespace HBOCC
{
errlHndl_t l_errl = NULL;
void* homerVirtAddrBase = NULL;
- uint64_t homerPhysAddrBase = VMM_HOMER_REGION_START_ADDR;
+ uint64_t homerPhysAddrBase = VMM_HOMER_REGION_START_OFFSET;
bool winkle_loaded = false;
TRACUCOMP( g_fapiTd,
@@ -218,6 +218,10 @@ namespace HBOCC
do {
#ifndef __HOSTBOOT_RUNTIME
+ // Get the node-offset for our instance by looking at the HRMOR
+ uint64_t l_hrmorBase = cpu_spr_value(CPU_SPR_HRMOR);
+ homerPhysAddrBase += l_hrmorBase;
+
//OCC requires the build_winkle_images library
if ( !VFS::module_is_loaded( "libbuild_winkle_images.so" ) )
{
OpenPOWER on IntegriCloud