41#ifndef __DEV_ARM_GICV3_CPU_INTERFACE_H__
42#define __DEV_ARM_GICV3_CPU_INTERFACE_H__
50class Gicv3Distributor;
51class Gicv3Redistributor;
118 Bitfield<63, 1>
res0;
123 Bitfield<63, 2>
res0;
129 Bitfield<63, 3>
res0;
136 Bitfield<63, 4>
res0;
144 Bitfield<63, 4>
res0;
151 static const uint8_t PRIORITY_BITS = 5;
231 Bitfield<63, 62>
State;
242 static const uint64_t ICH_LR_EL2_STATE_INVALID = 0;
259 Bitfield<63, 8>
res0;
313 void activateIRQ(uint32_t intid,
Gicv3::GroupId group);
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
Base class for devices that use the MiscReg interfaces.
Generic representation of an Arm interrupt pin.
void dropPriority(Gicv3::GroupId group)
static const uint8_t VIRTUAL_PREEMPTION_BITS
static const AddrRange GICC_APR
Bitfield< 2 > EOImode_EL3
uint8_t virtualDropPriority()
bool isSecureBelowEL3() const
Bitfield< 3 > EOImode_EL1S
Bitfield< 17, 16 > res0_2
void unserialize(CheckpointIn &cp) override
Unserialize an object.
void clearPendingInterrupts(void)
bool isEOISplitMode() const
Bitfield< 47, 45 > res0_0
Bitfield< 4 > EOImode_EL1NS
EndBitUnion(ICH_LR_EL2) static const uint64_t ICH_LR_EL2_STATE_INVALID=0
bool groupEnabled(Gicv3::GroupId group) const
static const AddrRange GICH_LR
void resetHppi(uint32_t intid)
EndBitUnion(ICV_CTLR_EL1) protected void generateSGI(RegVal val, Gicv3::GroupId group)
Bitfield< 10, 8 > PRIbits
void serialize(CheckpointOut &cp) const override
Serialize an object.
void virtualIncrementEOICount()
ArmISA::InterruptTypes intSignalType(Gicv3::GroupId group) const
ArmISA::ExceptionLevel currEL() const
Bitfield< 28, 26 > PREbits
Bitfield< 59, 56 > res0_1
uint8_t highestActivePriority() const
uint64_t eoiMaintenanceInterruptStatus() const
BitUnion64(ICH_HCR_EL2) Bitfield< 63
bool hppviCanPreempt(int lrIdx) const
void virtualActivateIRQ(uint32_t lrIdx)
Gicv3Redistributor * redistributor
void deassertWakeRequest(void)
bool inSecureState() const
Bitfield< 31, 27 > EOIcount
uint32_t getHPPIR1() const
RegVal bpr1(Gicv3::GroupId group)
EndBitUnion(ICH_HCR_EL2) protected Bitfield< 61 > HW
Bitfield< 26, 15 > res0_1
static const AddrRange GICH_APR
void setThreadContext(ThreadContext *tc) override
static const uint8_t GIC_MIN_BPR
BitUnion32(ICH_LRC) Bitfield< 31
Bitfield< 44, 32 > pINTID
bool getHCREL2IMO() const
RegVal readBankedMiscReg(ArmISA::MiscRegIndex misc_reg) const
bool virtualIsEOISplitMode() const
uint32_t groupPriorityMask(Gicv3::GroupId group)
Gicv3Distributor * distributor
ArmInterruptPin * maintenanceInterrupt
Bitfield< 4, 0 > ListRegs
void assertWakeRequest(void)
ICH_MISR_EL2 maintenanceInterruptStatus() const
Bitfield< 0 > EnableGrp1NS
static const uint8_t GIC_MIN_BPR_NS
void deactivateIRQ(uint32_t intid, Gicv3::GroupId group)
static const uint64_t ICH_LR_EL2_STATE_ACTIVE_PENDING
static const uint8_t VIRTUAL_NUM_LIST_REGS
int highestActiveGroup() const
bool getHCREL2FMO() const
uint8_t virtualHighestActivePriority() const
Bitfield< 1 > EnableGrp1S
void setBankedMiscReg(ArmISA::MiscRegIndex misc_reg, RegVal val) const
uint32_t virtualGroupPriorityMask(Gicv3::GroupId group) const
void setMiscReg(int misc_reg, RegVal val) override
Write to a system register belonging to this device.
static const uint64_t ICH_LR_EL2_STATE_ACTIVE
static const AddrRange GICC_NSAPR
static const uint64_t ICH_LR_EL2_STATE_PENDING
bool haveEL(ArmISA::ExceptionLevel el) const
int virtualFindActive(uint32_t intid) const
void virtualDeactivateIRQ(int lrIdx)
bool havePendingInterrupts(void) const
static const uint8_t GIC_MIN_VBPR
BitUnion64(ICC_CTLR_EL1) Bitfield< 63
RegVal readMiscReg(int misc_reg) override
Read a system register belonging to this device.
uint32_t getHPPIR0() const
static const uint8_t VIRTUAL_PRIORITY_BITS
void copy(Gicv3Registers *from, Gicv3Registers *to)
Bitfield< 55, 48 > Priority
Bitfield< 13, 11 > IDbits
Basic support for object serialization.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
#define BitUnion64(name)
Use this to define conveniently sized values overlayed with bitfields.
#define EndBitUnion(name)
This closes off the class and union started by the above macro.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::ostream CheckpointOut