gic_v3_cpu_interface.hh revision 14243
113531Sjairo.balart@metempsy.com/* 214227Sgiacomo.travaglini@arm.com * Copyright (c) 2019 ARM Limited 314227Sgiacomo.travaglini@arm.com * All rights reserved 414227Sgiacomo.travaglini@arm.com * 514227Sgiacomo.travaglini@arm.com * The license below extends only to copyright in the software and shall 614227Sgiacomo.travaglini@arm.com * not be construed as granting a license to any other intellectual 714227Sgiacomo.travaglini@arm.com * property including but not limited to intellectual property relating 814227Sgiacomo.travaglini@arm.com * to a hardware implementation of the functionality of the software 914227Sgiacomo.travaglini@arm.com * licensed hereunder. You may use the software subject to the license 1014227Sgiacomo.travaglini@arm.com * terms below provided that you ensure that this notice is replicated 1114227Sgiacomo.travaglini@arm.com * unmodified and in its entirety in all distributions of the software, 1214227Sgiacomo.travaglini@arm.com * modified or unmodified, in source code or in binary form. 1314227Sgiacomo.travaglini@arm.com * 1413531Sjairo.balart@metempsy.com * Copyright (c) 2018 Metempsy Technology Consulting 1513531Sjairo.balart@metempsy.com * All rights reserved. 1613531Sjairo.balart@metempsy.com * 1713531Sjairo.balart@metempsy.com * Redistribution and use in source and binary forms, with or without 1813531Sjairo.balart@metempsy.com * modification, are permitted provided that the following conditions are 1913531Sjairo.balart@metempsy.com * met: redistributions of source code must retain the above copyright 2013531Sjairo.balart@metempsy.com * notice, this list of conditions and the following disclaimer; 2113531Sjairo.balart@metempsy.com * redistributions in binary form must reproduce the above copyright 2213531Sjairo.balart@metempsy.com * notice, this list of conditions and the following disclaimer in the 2313531Sjairo.balart@metempsy.com * documentation and/or other materials provided with the distribution; 2413531Sjairo.balart@metempsy.com * neither the name of the copyright holders nor the names of its 2513531Sjairo.balart@metempsy.com * contributors may be used to endorse or promote products derived from 2613531Sjairo.balart@metempsy.com * this software without specific prior written permission. 2713531Sjairo.balart@metempsy.com * 2813531Sjairo.balart@metempsy.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2913531Sjairo.balart@metempsy.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 3013531Sjairo.balart@metempsy.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 3113531Sjairo.balart@metempsy.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 3213531Sjairo.balart@metempsy.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3313531Sjairo.balart@metempsy.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 3413531Sjairo.balart@metempsy.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 3513531Sjairo.balart@metempsy.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3613531Sjairo.balart@metempsy.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3713531Sjairo.balart@metempsy.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3813531Sjairo.balart@metempsy.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3913531Sjairo.balart@metempsy.com * 4013531Sjairo.balart@metempsy.com * Authors: Jairo Balart 4113531Sjairo.balart@metempsy.com */ 4213531Sjairo.balart@metempsy.com 4313531Sjairo.balart@metempsy.com#ifndef __DEV_ARM_GICV3_CPU_INTERFACE_H__ 4413531Sjairo.balart@metempsy.com#define __DEV_ARM_GICV3_CPU_INTERFACE_H__ 4513531Sjairo.balart@metempsy.com 4613531Sjairo.balart@metempsy.com#include "arch/arm/isa_device.hh" 4713531Sjairo.balart@metempsy.com#include "dev/arm/gic_v3.hh" 4813531Sjairo.balart@metempsy.com 4913760Sjairo.balart@metempsy.comclass Gicv3Distributor; 5013531Sjairo.balart@metempsy.comclass Gicv3Redistributor; 5113531Sjairo.balart@metempsy.com 5213531Sjairo.balart@metempsy.comclass Gicv3CPUInterface : public ArmISA::BaseISADevice, public Serializable 5313531Sjairo.balart@metempsy.com{ 5413531Sjairo.balart@metempsy.com private: 5513531Sjairo.balart@metempsy.com 5613760Sjairo.balart@metempsy.com friend class Gicv3Distributor; 5713531Sjairo.balart@metempsy.com friend class Gicv3Redistributor; 5813531Sjairo.balart@metempsy.com 5913531Sjairo.balart@metempsy.com protected: 6013531Sjairo.balart@metempsy.com 6113531Sjairo.balart@metempsy.com Gicv3 * gic; 6213531Sjairo.balart@metempsy.com Gicv3Redistributor * redistributor; 6313531Sjairo.balart@metempsy.com Gicv3Distributor * distributor; 6413531Sjairo.balart@metempsy.com uint32_t cpuId; 6513531Sjairo.balart@metempsy.com 6613826Sgiacomo.travaglini@arm.com ArmInterruptPin *maintenanceInterrupt; 6713826Sgiacomo.travaglini@arm.com 6813760Sjairo.balart@metempsy.com BitUnion64(ICC_CTLR_EL1) 6913760Sjairo.balart@metempsy.com Bitfield<63, 20> res0_3; 7013760Sjairo.balart@metempsy.com Bitfield<19> ExtRange; 7113760Sjairo.balart@metempsy.com Bitfield<18> RSS; 7213760Sjairo.balart@metempsy.com Bitfield<17, 16> res0_2; 7313760Sjairo.balart@metempsy.com Bitfield<15> A3V; 7413760Sjairo.balart@metempsy.com Bitfield<14> SEIS; 7513760Sjairo.balart@metempsy.com Bitfield<13, 11> IDbits; 7613760Sjairo.balart@metempsy.com Bitfield<10, 8> PRIbits; 7713760Sjairo.balart@metempsy.com Bitfield<7> res0_1; 7813760Sjairo.balart@metempsy.com Bitfield<6> PMHE; 7913760Sjairo.balart@metempsy.com Bitfield<5, 2> res0_0; 8013760Sjairo.balart@metempsy.com Bitfield<1> EOImode; 8113760Sjairo.balart@metempsy.com Bitfield<0> CBPR; 8213760Sjairo.balart@metempsy.com EndBitUnion(ICC_CTLR_EL1) 8313531Sjairo.balart@metempsy.com 8413760Sjairo.balart@metempsy.com BitUnion64(ICC_CTLR_EL3) 8513760Sjairo.balart@metempsy.com Bitfield<63, 20> res0_2; 8613760Sjairo.balart@metempsy.com Bitfield<19> ExtRange; 8713760Sjairo.balart@metempsy.com Bitfield<18> RSS; 8813760Sjairo.balart@metempsy.com Bitfield<17> nDS; 8913760Sjairo.balart@metempsy.com Bitfield<16> res0_1; 9013760Sjairo.balart@metempsy.com Bitfield<15> A3V; 9113760Sjairo.balart@metempsy.com Bitfield<14> SEIS; 9213760Sjairo.balart@metempsy.com Bitfield<13, 11> IDbits; 9313760Sjairo.balart@metempsy.com Bitfield<10, 8> PRIbits; 9413760Sjairo.balart@metempsy.com Bitfield<7> res0_0; 9513760Sjairo.balart@metempsy.com Bitfield<6> PMHE; 9613760Sjairo.balart@metempsy.com Bitfield<5> RM; 9713760Sjairo.balart@metempsy.com Bitfield<4> EOImode_EL1NS; 9813760Sjairo.balart@metempsy.com Bitfield<3> EOImode_EL1S; 9913760Sjairo.balart@metempsy.com Bitfield<2> EOImode_EL3; 10013760Sjairo.balart@metempsy.com Bitfield<1> CBPR_EL1NS; 10113760Sjairo.balart@metempsy.com Bitfield<0> CBPR_EL1S; 10213760Sjairo.balart@metempsy.com EndBitUnion(ICC_CTLR_EL3) 10313531Sjairo.balart@metempsy.com 10413760Sjairo.balart@metempsy.com BitUnion64(ICC_IGRPEN0_EL1) 10513760Sjairo.balart@metempsy.com Bitfield<63, 1> res0; 10613760Sjairo.balart@metempsy.com Bitfield<0> Enable; 10713760Sjairo.balart@metempsy.com EndBitUnion(ICC_IGRPEN0_EL1) 10813531Sjairo.balart@metempsy.com 10913760Sjairo.balart@metempsy.com BitUnion64(ICC_IGRPEN1_EL1) 11013760Sjairo.balart@metempsy.com Bitfield<63, 1> res0; 11113760Sjairo.balart@metempsy.com Bitfield<0> Enable; 11213760Sjairo.balart@metempsy.com EndBitUnion(ICC_IGRPEN1_EL1) 11313531Sjairo.balart@metempsy.com 11413760Sjairo.balart@metempsy.com BitUnion64(ICC_IGRPEN1_EL3) 11513760Sjairo.balart@metempsy.com Bitfield<63, 2> res0; 11613760Sjairo.balart@metempsy.com Bitfield<1> EnableGrp1S; 11713760Sjairo.balart@metempsy.com Bitfield<0> EnableGrp1NS; 11813760Sjairo.balart@metempsy.com EndBitUnion(ICC_IGRPEN1_EL3) 11913531Sjairo.balart@metempsy.com 12013760Sjairo.balart@metempsy.com BitUnion64(ICC_SRE_EL1) 12113760Sjairo.balart@metempsy.com Bitfield<63, 3> res0; 12213760Sjairo.balart@metempsy.com Bitfield<2> DIB; 12313760Sjairo.balart@metempsy.com Bitfield<1> DFB; 12413760Sjairo.balart@metempsy.com Bitfield<0> SRE; 12513760Sjairo.balart@metempsy.com EndBitUnion(ICC_SRE_EL1) 12613531Sjairo.balart@metempsy.com 12713760Sjairo.balart@metempsy.com BitUnion64(ICC_SRE_EL2) 12813760Sjairo.balart@metempsy.com Bitfield<63, 4> res0; 12913760Sjairo.balart@metempsy.com Bitfield<3> Enable; 13013760Sjairo.balart@metempsy.com Bitfield<2> DIB; 13113760Sjairo.balart@metempsy.com Bitfield<1> DFB; 13213760Sjairo.balart@metempsy.com Bitfield<0> SRE; 13313760Sjairo.balart@metempsy.com EndBitUnion(ICC_SRE_EL2) 13413760Sjairo.balart@metempsy.com 13513760Sjairo.balart@metempsy.com BitUnion64(ICC_SRE_EL3) 13613760Sjairo.balart@metempsy.com Bitfield<63, 4> res0; 13713760Sjairo.balart@metempsy.com Bitfield<3> Enable; 13813760Sjairo.balart@metempsy.com Bitfield<2> DIB; 13913760Sjairo.balart@metempsy.com Bitfield<1> DFB; 14013760Sjairo.balart@metempsy.com Bitfield<0> SRE; 14113760Sjairo.balart@metempsy.com EndBitUnion(ICC_SRE_EL3) 14213531Sjairo.balart@metempsy.com 14313531Sjairo.balart@metempsy.com static const uint8_t PRIORITY_BITS = 5; 14413531Sjairo.balart@metempsy.com 14513760Sjairo.balart@metempsy.com // Minimum BPR for Secure, or when security not enabled 14613531Sjairo.balart@metempsy.com static const uint8_t GIC_MIN_BPR = 2; 14713760Sjairo.balart@metempsy.com // Minimum BPR for Nonsecure when security is enabled 14813531Sjairo.balart@metempsy.com static const uint8_t GIC_MIN_BPR_NS = GIC_MIN_BPR + 1; 14913531Sjairo.balart@metempsy.com 15013760Sjairo.balart@metempsy.com static const uint8_t VIRTUAL_PRIORITY_BITS = 5; 15113531Sjairo.balart@metempsy.com static const uint8_t VIRTUAL_PREEMPTION_BITS = 5; 15213760Sjairo.balart@metempsy.com static const uint8_t VIRTUAL_NUM_LIST_REGS = 16; 15313531Sjairo.balart@metempsy.com 15413531Sjairo.balart@metempsy.com static const uint8_t GIC_MIN_VBPR = 7 - VIRTUAL_PREEMPTION_BITS; 15513531Sjairo.balart@metempsy.com 15613531Sjairo.balart@metempsy.com typedef struct { 15713531Sjairo.balart@metempsy.com uint32_t intid; 15813531Sjairo.balart@metempsy.com uint8_t prio; 15913531Sjairo.balart@metempsy.com Gicv3::GroupId group; 16013531Sjairo.balart@metempsy.com } hppi_t; 16113531Sjairo.balart@metempsy.com 16213531Sjairo.balart@metempsy.com hppi_t hppi; 16313531Sjairo.balart@metempsy.com 16413531Sjairo.balart@metempsy.com // GIC CPU interface memory mapped control registers (legacy) 16513531Sjairo.balart@metempsy.com enum { 16613760Sjairo.balart@metempsy.com GICC_CTLR = 0x0000, 16713760Sjairo.balart@metempsy.com GICC_PMR = 0x0004, 16813760Sjairo.balart@metempsy.com GICC_BPR = 0x0008, 16913760Sjairo.balart@metempsy.com GICC_IAR = 0x000C, 17013760Sjairo.balart@metempsy.com GICC_EOIR = 0x0010, 17113760Sjairo.balart@metempsy.com GICC_RPR = 0x0014, 17213760Sjairo.balart@metempsy.com GICC_HPPI = 0x0018, 17313760Sjairo.balart@metempsy.com GICC_ABPR = 0x001C, 17413760Sjairo.balart@metempsy.com GICC_AIAR = 0x0020, 17513760Sjairo.balart@metempsy.com GICC_AEOIR = 0x0024, 17613760Sjairo.balart@metempsy.com GICC_AHPPIR = 0x0028, 17713531Sjairo.balart@metempsy.com GICC_STATUSR = 0x002C, 17813760Sjairo.balart@metempsy.com GICC_IIDR = 0x00FC, 17913531Sjairo.balart@metempsy.com }; 18013531Sjairo.balart@metempsy.com 18113531Sjairo.balart@metempsy.com static const AddrRange GICC_APR; 18213531Sjairo.balart@metempsy.com static const AddrRange GICC_NSAPR; 18313531Sjairo.balart@metempsy.com 18413531Sjairo.balart@metempsy.com // GIC CPU virtual interface memory mapped control registers (legacy) 18513531Sjairo.balart@metempsy.com enum { 18613760Sjairo.balart@metempsy.com GICH_HCR = 0x0000, 18713760Sjairo.balart@metempsy.com GICH_VTR = 0x0004, 18813760Sjairo.balart@metempsy.com GICH_VMCR = 0x0008, 18913760Sjairo.balart@metempsy.com GICH_MISR = 0x0010, 19013760Sjairo.balart@metempsy.com GICH_EISR = 0x0020, 19113531Sjairo.balart@metempsy.com GICH_ELRSR = 0x0030, 19213531Sjairo.balart@metempsy.com }; 19313531Sjairo.balart@metempsy.com 19413531Sjairo.balart@metempsy.com static const AddrRange GICH_APR; 19513531Sjairo.balart@metempsy.com static const AddrRange GICH_LR; 19613531Sjairo.balart@metempsy.com 19713760Sjairo.balart@metempsy.com BitUnion64(ICH_HCR_EL2) 19813760Sjairo.balart@metempsy.com Bitfield<63, 32> res0_2; 19913760Sjairo.balart@metempsy.com Bitfield<31, 27> EOIcount; 20013760Sjairo.balart@metempsy.com Bitfield<26, 15> res0_1; 20113760Sjairo.balart@metempsy.com Bitfield<14> TDIR; 20213760Sjairo.balart@metempsy.com Bitfield<13> TSEI; 20313760Sjairo.balart@metempsy.com Bitfield<12> TALL1; 20413760Sjairo.balart@metempsy.com Bitfield<11> TALL0; 20513760Sjairo.balart@metempsy.com Bitfield<10> TC; 20613760Sjairo.balart@metempsy.com Bitfield<9, 8> res0_0; 20713760Sjairo.balart@metempsy.com Bitfield<7> VGrp1DIE; 20813760Sjairo.balart@metempsy.com Bitfield<6> VGrp1EIE; 20913760Sjairo.balart@metempsy.com Bitfield<5> VGrp0DIE; 21013760Sjairo.balart@metempsy.com Bitfield<4> VGrp0EIE; 21113760Sjairo.balart@metempsy.com Bitfield<3> NPIE; 21213760Sjairo.balart@metempsy.com Bitfield<2> LRENPIE; 21313760Sjairo.balart@metempsy.com Bitfield<1> UIE; 21413760Sjairo.balart@metempsy.com Bitfield<0> En; 21513760Sjairo.balart@metempsy.com EndBitUnion(ICH_HCR_EL2) 21613531Sjairo.balart@metempsy.com 21713760Sjairo.balart@metempsy.com BitUnion64(ICH_LR_EL2) 21813760Sjairo.balart@metempsy.com Bitfield<63, 62> State; 21913760Sjairo.balart@metempsy.com Bitfield<61> HW; 22013760Sjairo.balart@metempsy.com Bitfield<60> Group; 22113760Sjairo.balart@metempsy.com Bitfield<59, 56> res0_1; 22213760Sjairo.balart@metempsy.com Bitfield<55, 48> Priority; 22313760Sjairo.balart@metempsy.com Bitfield<47, 45> res0_0; 22413760Sjairo.balart@metempsy.com Bitfield<44, 32> pINTID; 22513760Sjairo.balart@metempsy.com Bitfield<41> EOI; 22613760Sjairo.balart@metempsy.com Bitfield<31, 0> vINTID; 22713760Sjairo.balart@metempsy.com EndBitUnion(ICH_LR_EL2) 22813760Sjairo.balart@metempsy.com 22913760Sjairo.balart@metempsy.com static const uint64_t ICH_LR_EL2_STATE_INVALID = 0; 23013760Sjairo.balart@metempsy.com static const uint64_t ICH_LR_EL2_STATE_PENDING = 1; 23113760Sjairo.balart@metempsy.com static const uint64_t ICH_LR_EL2_STATE_ACTIVE = 2; 23213531Sjairo.balart@metempsy.com static const uint64_t ICH_LR_EL2_STATE_ACTIVE_PENDING = 3; 23313531Sjairo.balart@metempsy.com 23413760Sjairo.balart@metempsy.com BitUnion32(ICH_LRC) 23513760Sjairo.balart@metempsy.com Bitfield<31, 30> State; 23613760Sjairo.balart@metempsy.com Bitfield<29> HW; 23713760Sjairo.balart@metempsy.com Bitfield<28> Group; 23813760Sjairo.balart@metempsy.com Bitfield<27, 24> res0_1; 23913760Sjairo.balart@metempsy.com Bitfield<23, 16> Priority; 24013760Sjairo.balart@metempsy.com Bitfield<15, 13> res0_0; 24113760Sjairo.balart@metempsy.com Bitfield<12, 0> pINTID; 24213760Sjairo.balart@metempsy.com Bitfield<9> EOI; 24313760Sjairo.balart@metempsy.com EndBitUnion(ICH_LRC) 24413531Sjairo.balart@metempsy.com 24513760Sjairo.balart@metempsy.com BitUnion64(ICH_MISR_EL2) 24613760Sjairo.balart@metempsy.com Bitfield<63, 8> res0; 24713760Sjairo.balart@metempsy.com Bitfield<7> VGrp1D; 24813760Sjairo.balart@metempsy.com Bitfield<6> VGrp1E; 24913760Sjairo.balart@metempsy.com Bitfield<5> VGrp0D; 25013760Sjairo.balart@metempsy.com Bitfield<4> VGrp0E; 25113760Sjairo.balart@metempsy.com Bitfield<3> NP; 25213760Sjairo.balart@metempsy.com Bitfield<2> LRENP; 25313760Sjairo.balart@metempsy.com Bitfield<1> U; 25413760Sjairo.balart@metempsy.com Bitfield<0> EOI; 25513760Sjairo.balart@metempsy.com EndBitUnion(ICH_MISR_EL2) 25613531Sjairo.balart@metempsy.com 25713760Sjairo.balart@metempsy.com BitUnion64(ICH_VMCR_EL2) 25813760Sjairo.balart@metempsy.com Bitfield<63, 32> res0_2; 25913760Sjairo.balart@metempsy.com Bitfield<31, 24> VPMR; 26013760Sjairo.balart@metempsy.com Bitfield<23, 21> VBPR0; 26113760Sjairo.balart@metempsy.com Bitfield<20, 18> VBPR1; 26213760Sjairo.balart@metempsy.com Bitfield<17, 10> res0_1; 26313760Sjairo.balart@metempsy.com Bitfield<9> VEOIM; 26413760Sjairo.balart@metempsy.com Bitfield<8, 5> res0_0; 26513760Sjairo.balart@metempsy.com Bitfield<4> VCBPR; 26613760Sjairo.balart@metempsy.com Bitfield<3> VFIQEn; 26713760Sjairo.balart@metempsy.com Bitfield<2> VAckCtl; 26813760Sjairo.balart@metempsy.com Bitfield<1> VENG1; 26913760Sjairo.balart@metempsy.com Bitfield<0> VENG0; 27013760Sjairo.balart@metempsy.com EndBitUnion(ICH_VMCR_EL2) 27113531Sjairo.balart@metempsy.com 27213760Sjairo.balart@metempsy.com BitUnion64(ICH_VTR_EL2) 27313760Sjairo.balart@metempsy.com Bitfield<63, 32> res0_1; 27413760Sjairo.balart@metempsy.com Bitfield<31, 29> PRIbits; 27513760Sjairo.balart@metempsy.com Bitfield<28, 26> PREbits; 27613760Sjairo.balart@metempsy.com Bitfield<25, 23> IDbits; 27713760Sjairo.balart@metempsy.com Bitfield<22> SEIS; 27813760Sjairo.balart@metempsy.com Bitfield<21> A3V; 27913760Sjairo.balart@metempsy.com Bitfield<20> res1; 28013760Sjairo.balart@metempsy.com Bitfield<19> TDS; 28113760Sjairo.balart@metempsy.com Bitfield<18, 5> res0_0; 28213760Sjairo.balart@metempsy.com Bitfield<4, 0> ListRegs; 28313760Sjairo.balart@metempsy.com EndBitUnion(ICH_VTR_EL2) 28413760Sjairo.balart@metempsy.com 28513760Sjairo.balart@metempsy.com BitUnion64(ICV_CTLR_EL1) 28613760Sjairo.balart@metempsy.com Bitfield<63, 19> res0_2; 28713760Sjairo.balart@metempsy.com Bitfield<18> RSS; 28813760Sjairo.balart@metempsy.com Bitfield<17, 16> res0_1; 28913760Sjairo.balart@metempsy.com Bitfield<15> A3V; 29013760Sjairo.balart@metempsy.com Bitfield<14> SEIS; 29113760Sjairo.balart@metempsy.com Bitfield<13, 11> IDbits; 29213760Sjairo.balart@metempsy.com Bitfield<10, 8> PRIbits; 29313760Sjairo.balart@metempsy.com Bitfield<7, 2> res0_0; 29413760Sjairo.balart@metempsy.com Bitfield<1> EOImode; 29513760Sjairo.balart@metempsy.com Bitfield<0> CBPR; 29613760Sjairo.balart@metempsy.com EndBitUnion(ICV_CTLR_EL1) 29713760Sjairo.balart@metempsy.com 29813760Sjairo.balart@metempsy.com protected: 29913760Sjairo.balart@metempsy.com 30013760Sjairo.balart@metempsy.com void activateIRQ(uint32_t intid, Gicv3::GroupId group); 30114227Sgiacomo.travaglini@arm.com void generateSGI(RegVal val, Gicv3::GroupId group); 30213760Sjairo.balart@metempsy.com int currEL() const; 30313760Sjairo.balart@metempsy.com void deactivateIRQ(uint32_t intid, Gicv3::GroupId group); 30413760Sjairo.balart@metempsy.com void dropPriority(Gicv3::GroupId group); 30513760Sjairo.balart@metempsy.com uint64_t eoiMaintenanceInterruptStatus() const; 30613760Sjairo.balart@metempsy.com bool getHCREL2FMO() const; 30713760Sjairo.balart@metempsy.com bool getHCREL2IMO() const; 30813760Sjairo.balart@metempsy.com uint32_t getHPPIR0() const; 30913760Sjairo.balart@metempsy.com uint32_t getHPPIR1() const; 31013760Sjairo.balart@metempsy.com int getHPPVILR() const; 31113760Sjairo.balart@metempsy.com bool groupEnabled(Gicv3::GroupId group) const; 31213926Sgiacomo.travaglini@arm.com uint32_t groupPriorityMask(Gicv3::GroupId group); 31313760Sjairo.balart@metempsy.com bool haveEL(ArmISA::ExceptionLevel el) const; 31413760Sjairo.balart@metempsy.com int highestActiveGroup() const; 31513760Sjairo.balart@metempsy.com uint8_t highestActivePriority() const; 31613926Sgiacomo.travaglini@arm.com bool hppiCanPreempt(); 31713760Sjairo.balart@metempsy.com bool hppviCanPreempt(int lrIdx) const; 31813760Sjairo.balart@metempsy.com bool inSecureState() const; 31913760Sjairo.balart@metempsy.com ArmISA::InterruptTypes intSignalType(Gicv3::GroupId group) const; 32013760Sjairo.balart@metempsy.com bool isAA64() const; 32113760Sjairo.balart@metempsy.com bool isEL3OrMon() const; 32213760Sjairo.balart@metempsy.com bool isEOISplitMode() const; 32313760Sjairo.balart@metempsy.com bool isSecureBelowEL3() const; 32413760Sjairo.balart@metempsy.com ICH_MISR_EL2 maintenanceInterruptStatus() const; 32513760Sjairo.balart@metempsy.com void reset(); 32613760Sjairo.balart@metempsy.com void serialize(CheckpointOut & cp) const override; 32713760Sjairo.balart@metempsy.com void unserialize(CheckpointIn & cp) override; 32813760Sjairo.balart@metempsy.com void update(); 32914231Sgiacomo.travaglini@arm.com void updateDistributor(); 33013760Sjairo.balart@metempsy.com void virtualActivateIRQ(uint32_t lrIdx); 33113760Sjairo.balart@metempsy.com void virtualDeactivateIRQ(int lrIdx); 33213760Sjairo.balart@metempsy.com uint8_t virtualDropPriority(); 33313760Sjairo.balart@metempsy.com int virtualFindActive(uint32_t intid) const; 33413760Sjairo.balart@metempsy.com uint32_t virtualGroupPriorityMask(Gicv3::GroupId group) const; 33513760Sjairo.balart@metempsy.com uint8_t virtualHighestActivePriority() const; 33613760Sjairo.balart@metempsy.com void virtualIncrementEOICount(); 33713760Sjairo.balart@metempsy.com bool virtualIsEOISplitMode() const; 33813760Sjairo.balart@metempsy.com void virtualUpdate(); 33914237Sgiacomo.travaglini@arm.com RegVal bpr1(Gicv3::GroupId group); 34013531Sjairo.balart@metempsy.com 34114243Sgiacomo.travaglini@arm.com RegVal readBankedMiscReg(MiscRegIndex misc_reg) const; 34214243Sgiacomo.travaglini@arm.com void setBankedMiscReg(MiscRegIndex misc_reg, RegVal val) const; 34313531Sjairo.balart@metempsy.com public: 34413531Sjairo.balart@metempsy.com 34513531Sjairo.balart@metempsy.com Gicv3CPUInterface(Gicv3 * gic, uint32_t cpu_id); 34613760Sjairo.balart@metempsy.com 34713531Sjairo.balart@metempsy.com void init(); 34813531Sjairo.balart@metempsy.com void initState(); 34913826Sgiacomo.travaglini@arm.com 35013826Sgiacomo.travaglini@arm.com public: // BaseISADevice 35113826Sgiacomo.travaglini@arm.com RegVal readMiscReg(int misc_reg) override; 35213826Sgiacomo.travaglini@arm.com void setMiscReg(int misc_reg, RegVal val) override; 35313826Sgiacomo.travaglini@arm.com void setThreadContext(ThreadContext *tc) override; 35413531Sjairo.balart@metempsy.com}; 35513531Sjairo.balart@metempsy.com 35613531Sjairo.balart@metempsy.com#endif //__DEV_ARM_GICV3_CPU_INTERFACE_H__ 357