summaryrefslogtreecommitdiffstats
path: root/src/usr/intr
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/intr')
-rw-r--r--src/usr/intr/intrrp.C9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/usr/intr/intrrp.C b/src/usr/intr/intrrp.C
index 11b05171d..60b31c0b2 100644
--- a/src/usr/intr/intrrp.C
+++ b/src/usr/intr/intrrp.C
@@ -347,10 +347,11 @@ void IntrRp::msgHandler()
ext_intr_t type = NO_INTERRUPT;
// xirr was read by interrupt message handler.
- // Passed in as data[1]
- uint32_t xirr = static_cast<uint32_t>(msg->data[1]);
- // data[0] has the PIR
- PIR_t pir = static_cast<PIR_t>(msg->data[0]);
+ // Passed in as upper word of data[0]
+ uint32_t xirr = static_cast<uint32_t>(msg->data[0]>>32);
+ // data[0] (lower word) has the PIR
+ uint64_t l_data0 = (msg->data[0] & 0xFFFFFFFF);
+ PIR_t pir = static_cast<PIR_t>(l_data0);
uint64_t baseAddr = iv_baseAddr + cpuOffsetAddr(pir);
uint32_t * xirrAddress =
OpenPOWER on IntegriCloud