summaryrefslogtreecommitdiffstats
path: root/src/usr/intr/intrrp.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/intr/intrrp.C')
-rw-r--r--src/usr/intr/intrrp.C18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/usr/intr/intrrp.C b/src/usr/intr/intrrp.C
index 8838d22cf..11339dbc6 100644
--- a/src/usr/intr/intrrp.C
+++ b/src/usr/intr/intrrp.C
@@ -1619,6 +1619,7 @@ void IntrRp::cleanCheck()
}
}
+
//----------------------------------------------------------------------------
// External interfaces
//----------------------------------------------------------------------------
@@ -1831,3 +1832,20 @@ errlHndl_t INTR::enablePsiIntr(TARGETING::Target * i_target)
return err;
}
+uint64_t INTR::getIntpAddr(const TARGETING::Target * i_ex, uint8_t i_thread)
+{
+ const TARGETING::Target * l_proc = getParentChip(i_ex);
+ uint64_t l_intB =l_proc->getAttr<TARGETING::ATTR_INTP_BASE_ADDR>();
+
+ PIR_t pir(0);
+ pir.nodeId = l_proc->getAttr<TARGETING::ATTR_FABRIC_NODE_ID>();
+ pir.chipId = l_proc->getAttr<TARGETING::ATTR_FABRIC_CHIP_ID>();
+ pir.coreId = i_ex->getAttr<TARGETING::ATTR_CHIP_UNIT>();
+ pir.threadId = i_thread;
+
+ return (l_intB+ InterruptMsgHdlr::mmio_offset(
+ pir.word & (InterruptMsgHdlr::P8_PIR_THREADID_MSK |
+ InterruptMsgHdlr::P8_PIR_COREID_MSK)));
+}
+
+
OpenPOWER on IntegriCloud