diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/include/usr/vmmconst.h | 18 | ||||
-rw-r--r-- | src/usr/isteps/istep15/host_build_stop_image.C | 7 | ||||
-rw-r--r-- | src/usr/occ/occ.C | 6 |
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" ) ) { |