summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/usr/intr/intrrp.C5
-rw-r--r--src/usr/intr/intrrp.H2
2 files changed, 4 insertions, 3 deletions
diff --git a/src/usr/intr/intrrp.C b/src/usr/intr/intrrp.C
index 4f11b53f4..977cf007f 100644
--- a/src/usr/intr/intrrp.C
+++ b/src/usr/intr/intrrp.C
@@ -429,7 +429,8 @@ void IntrRp::msgHandler()
IPI_Info_t& ipiInfo = iv_ipisPending[core_pir];
- ipiInfo.first &= ~(1 << pir.threadId);
+ ipiInfo.first &=
+ ~(0x8000000000000000 >> pir.threadId);
if (0 == ipiInfo.first)
{
@@ -535,7 +536,7 @@ void IntrRp::msgHandler()
size_t threads = cpu_thread_count();
uint64_t en_threads = get_enabled_threads();
- iv_ipisPending[pir] = IPI_Info_t((1 << threads)-1, msg);
+ iv_ipisPending[pir] = IPI_Info_t(en_threads, msg);
for(size_t thread = 0; thread < threads; ++thread)
{
diff --git a/src/usr/intr/intrrp.H b/src/usr/intr/intrrp.H
index 1c03e3d19..17dcee41e 100644
--- a/src/usr/intr/intrrp.H
+++ b/src/usr/intr/intrrp.H
@@ -314,7 +314,7 @@ namespace INTR
ChipList_t iv_chipList; //!< Proc chips with PSI intr enabled
ISNList_t iv_isnList; //!< List of ISN's to clear on shutdown
- typedef std::pair<uint8_t, msg_t*> IPI_Info_t;
+ typedef std::pair<uint64_t, msg_t*> IPI_Info_t;
typedef std::map<PIR_t, IPI_Info_t> IPI_Pending_t;
IPI_Pending_t iv_ipisPending; //!< Pending IPIs.
OpenPOWER on IntegriCloud