summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/ipc.C7
-rw-r--r--src/kernel/misc.C17
2 files changed, 11 insertions, 13 deletions
diff --git a/src/kernel/ipc.C b/src/kernel/ipc.C
index 42eebf92d..63035b80b 100644
--- a/src/kernel/ipc.C
+++ b/src/kernel/ipc.C
@@ -124,13 +124,10 @@ int KernelIpc::qryLocalIpcInfo(uint64_t * i_pONode, uint64_t * i_pOAddr)
uint64_t l_localNode = getPIR()/KERNEL_MAX_SUPPORTED_CPUS_PER_NODE;
uint64_t l_localAddr = reinterpret_cast<uint64_t>(&ipc_data_area);
- uint64_t l_hrmorOffset = (getHRMOR() -
- (l_localNode * (ipc_data_area.hrmor_base)));
- uint64_t l_remoteHrmor =
- ((ipc_data_area.hrmor_base * l_localNode) + l_hrmorOffset);
+ uint64_t l_hrmor = getHRMOR();
uint64_t l_oAddr = (( l_localAddr +
- l_remoteHrmor ) |
+ l_hrmor ) |
0x8000000000000000ul);
*i_pONode = l_localNode;
diff --git a/src/kernel/misc.C b/src/kernel/misc.C
index f6aa69bda..9f21fe75b 100644
--- a/src/kernel/misc.C
+++ b/src/kernel/misc.C
@@ -153,16 +153,17 @@ namespace KernelMisc
uint64_t local_master_pir = 0xfffffffffffffffful;
// Find the start_payload_data_area on the master node
- uint64_t hrmor_base = KernelIpc::ipc_data_area.hrmor_base;
+ // Use IPC address of master node to find the necessary
+ // Address
+ uint64_t master_node_IPC =
+ reinterpret_cast<uint64_t>(
+ KernelIpc::ipc_data_area.remote_ipc_data_addr[
+ g_masterHBInstance]);
- uint64_t this_hb_instance =
- l_lowestPIR/KERNEL_MAX_SUPPORTED_CPUS_PER_NODE;
+ uint64_t l_localAddrIPC =
+ reinterpret_cast<uint64_t>(& KernelIpc::ipc_data_area);
- uint64_t hrmor_offset =
- getHRMOR() - (this_hb_instance * hrmor_base);
-
- uint64_t dest_hrmor =
- (g_masterHBInstance * hrmor_base) + hrmor_offset;
+ uint64_t dest_hrmor = master_node_IPC - l_localAddrIPC;
uint64_t start_payload_data_area_address =
reinterpret_cast<uint64_t>
OpenPOWER on IntegriCloud