diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2014-02-14 12:24:24 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-02-14 15:41:17 -0600 |
commit | e0f95e3ce5adc0156db9e5e735325ebc0c6b0bfc (patch) | |
tree | 608e75505caed017eb0e7bf889810c0931b8125a /src/usr/intr | |
parent | 9ea4a28823a5c17d8adc448635fdec1e18c5ce5d (diff) | |
download | talos-hostboot-e0f95e3ce5adc0156db9e5e735325ebc0c6b0bfc.tar.gz talos-hostboot-e0f95e3ce5adc0156db9e5e735325ebc0c6b0bfc.zip |
Fix interrupt msg loss on multiple interrupts
CQ:SW247017
Change-Id: I66b27aeac0c23366deb390963edf5d88fbd8406c
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8862
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/intr')
-rw-r--r-- | src/usr/intr/intrrp.C | 9 |
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 = |