gic_v3_cpu_interface.cc (14231:222f6512335e) | gic_v3_cpu_interface.cc (14233:a2714268f5c1) |
---|---|
1/* 2 * Copyright (c) 2019 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 1639 unchanged lines hidden (view full) --- 1648 } 1649 1650 return -1; 1651} 1652 1653uint32_t 1654Gicv3CPUInterface::getHPPIR0() const 1655{ | 1/* 2 * Copyright (c) 2019 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 1639 unchanged lines hidden (view full) --- 1648 } 1649 1650 return -1; 1651} 1652 1653uint32_t 1654Gicv3CPUInterface::getHPPIR0() const 1655{ |
1656 if (hppi.prio == 0xff) { | 1656 if (hppi.prio == 0xff || !groupEnabled(hppi.group)) { |
1657 return Gicv3::INTID_SPURIOUS; 1658 } 1659 1660 bool irq_is_secure = !distributor->DS && hppi.group != Gicv3::G1NS; 1661 1662 if ((hppi.group != Gicv3::G0S) && isEL3OrMon()) { 1663 // interrupt for the other state pending 1664 return irq_is_secure ? Gicv3::INTID_SECURE : Gicv3::INTID_NONSECURE; --- 9 unchanged lines hidden (view full) --- 1674 } 1675 1676 return hppi.intid; 1677} 1678 1679uint32_t 1680Gicv3CPUInterface::getHPPIR1() const 1681{ | 1657 return Gicv3::INTID_SPURIOUS; 1658 } 1659 1660 bool irq_is_secure = !distributor->DS && hppi.group != Gicv3::G1NS; 1661 1662 if ((hppi.group != Gicv3::G0S) && isEL3OrMon()) { 1663 // interrupt for the other state pending 1664 return irq_is_secure ? Gicv3::INTID_SECURE : Gicv3::INTID_NONSECURE; --- 9 unchanged lines hidden (view full) --- 1674 } 1675 1676 return hppi.intid; 1677} 1678 1679uint32_t 1680Gicv3CPUInterface::getHPPIR1() const 1681{ |
1682 if (hppi.prio == 0xff) { | 1682 if (hppi.prio == 0xff || !groupEnabled(hppi.group)) { |
1683 return Gicv3::INTID_SPURIOUS; 1684 } 1685 1686 ICC_CTLR_EL3 icc_ctlr_el3 = isa->readMiscRegNoEffect(MISCREG_ICC_CTLR_EL3); 1687 if ((currEL() == EL3) && icc_ctlr_el3.RM) { 1688 if (hppi.group == Gicv3::G0S) { 1689 return Gicv3::INTID_SECURE; 1690 } else if (hppi.group == Gicv3::G1NS) { --- 833 unchanged lines hidden --- | 1683 return Gicv3::INTID_SPURIOUS; 1684 } 1685 1686 ICC_CTLR_EL3 icc_ctlr_el3 = isa->readMiscRegNoEffect(MISCREG_ICC_CTLR_EL3); 1687 if ((currEL() == EL3) && icc_ctlr_el3.RM) { 1688 if (hppi.group == Gicv3::G0S) { 1689 return Gicv3::INTID_SECURE; 1690 } else if (hppi.group == Gicv3::G1NS) { --- 833 unchanged lines hidden --- |