Go to the documentation of this file.
50 #ifndef __DEV_ARM_VGIC_H__
51 #define __DEV_ARM_VGIC_H__
61 #include "params/VGic.hh"
157 : vctrl(0), hcr(0), eisr(0), VMGrp0En(0), VMGrp1En(0),
158 VMAckCtl(0), VMFiqEn(0), VMCBPR(0), VEM(0), VMABP(0), VMBP(0),
163 virtual ~vcpuIntData() {}
165 std::array<ListReg, NUM_LR> LR;
214 uint32_t
getMISR(
struct vcpuIntData *vid);
222 unsigned int pend = 0;
231 unsigned int valid = 0;
233 if (vid->LR[
i].State)
242 unsigned int prio = 0xff;
245 if ((vid->LR[
i].State &
LR_PENDING) && (vid->LR[
i].Priority < prio)) {
247 prio = vid->LR[
i].Priority;
256 if (vid->LR[
i].State &&
257 vid->LR[
i].VirtualID == virq &&
258 vid->LR[
i].CpuID == vcpu)
void unPostVInt(uint32_t cpu)
AddrRangeList getAddrRanges() const override
Every PIO device is obliged to provide an implementation that returns the address ranges the device r...
static const int GICV_BPR
static const int GICH_VMCR
static const int GICH_LR1
static const int GICH_EISR0
bool vIntPosted[VGIC_CPU_MAX]
uint32_t getMISR(struct vcpuIntData *vid)
void postMaintInt(uint32_t cpu)
bool maintIntPosted[VGIC_CPU_MAX]
static const int GICV_IAR
Basic support for object serialization.
static const int GICH_VTR
int ContextID
Globally unique thread context ID.
Bitfield< 9, 0 > VirtualID
void updateIntState(ContextID ctx_id)
uint64_t Tick
Tick count type.
static const int GICH_EISR1
Tick writeVCpu(PacketPtr pkt)
Tick readCtrl(PacketPtr pkt)
static const int GICV_EOIR
int findLRForVIRQ(struct vcpuIntData *vid, int virq, int vcpu)
Tick writeCtrl(PacketPtr pkt)
unsigned int lrPending(struct vcpuIntData *vid)
unsigned int lrValid(struct vcpuIntData *vid)
static const int GICH_ELSR0
static const int GICV_APR0
This device is the base class which all devices senstive to an address range inherit from.
static const int GICH_APR0
static const int GICV_IIDR
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
static const int GICH_MISR
static const int GICV_CTLR
void serialize(CheckpointOut &cp) const override
Serialize an object.
Bitfield< 27, 23 > Priority
Tick readVCpu(PacketPtr pkt)
static const int GICH_LR0
EventFunctionWrapper * postVIntEvent[VGIC_CPU_MAX]
static const int GICV_DIR
EndBitUnion(VCTLR) struct vcpuIntData struct std::array< vcpuIntData, VGIC_CPU_MAX > vcpuData
static const int GICH_SIZE
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
static const int GICH_ELSR1
static const int GICV_AIAR
EndBitUnion(ListReg) BitUnion32(HCR) Bitfield< 31
void unserialize(CheckpointIn &cp) override
Unserialize an object.
static const uint32_t LR_PENDING
static const uint32_t LR_ACTIVE
BitUnion32(ListReg) Bitfield< 31 > HW
const Params * params() const
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
static const int GICV_HPPIR
const SimObjectParams * _params
Cached copy of the object parameters.
int findHighestPendingLR(struct vcpuIntData *vid)
Returns LR index or -1 if none pending.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
static const int GICV_PMR
void processPostVIntEvent(uint32_t cpu)
Post interrupt to CPU.
static const int GICV_SIZE
void unPostMaintInt(uint32_t cpu)
std::ostream CheckpointOut
static const int GICV_AHPPIR
static const int GICV_ABPR
static const int GICV_RPR
void postVInt(uint32_t cpu, Tick when)
static const int GICH_LR2
static const int GICH_HCR
static const int VGIC_CPU_MAX
static const int GICH_LR3
static const int GICH_REG_SIZE
static const int GICV_AEOIR
Generated on Wed Sep 30 2020 14:02:10 for gem5 by doxygen 1.8.17