43 #ifndef __DEV_ARM_GICV3_H__ 44 #define __DEV_ARM_GICV3_H__ 47 #include "params/Gicv3.hh" 104 void clearInt(uint32_t int_id)
override;
105 void clearPPInt(uint32_t int_id, uint32_t cpu)
override;
113 void init()
override;
118 return dynamic_cast<const Params *
>(
_params);
123 void sendInt(uint32_t int_id)
override;
124 void sendPPInt(uint32_t int_id, uint32_t cpu)
override;
138 assert(cpu_id < cpuInterfaces.size() and cpuInterfaces[cpu_id]);
139 return cpuInterfaces[cpu_id];
151 assert(context_id < redistributors.size() and
152 redistributors[context_id]);
153 return redistributors[context_id];
165 #endif //__DEV_ARM_GICV3_H__
const Params * params() const
Gicv3Redistributor * getRedistributorByAddr(Addr address) const
AddrRangeList getAddrRanges() const override
Every PIO device is obliged to provide an implementation that returns the address ranges the device r...
static const int INTID_NONSECURE
void clearInt(uint32_t int_id) override
Clear an interrupt from a device that is connected to the GIC.
void clearPPInt(uint32_t int_id, uint32_t cpu) override
Gicv3Redistributor * getRedistributorByAffinity(uint32_t affinity) const
void deassertInt(uint32_t cpu, ArmISA::InterruptTypes int_type)
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
void sendPPInt(uint32_t int_id, uint32_t cpu) override
Interface call for private peripheral interrupts.
uint64_t Tick
Tick count type.
Gicv3Distributor * distributor
void serialize(CheckpointOut &cp) const override
Serialize an object.
static const int INTID_SPURIOUS
Gicv3Redistributor * getRedistributor(ContextID context_id) const
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Gicv3CPUInterface * getCPUInterface(int cpu_id) const
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
Base class for ARM GIC implementations.
void unserialize(CheckpointIn &cp) override
Unserialize an object.
std::ostream CheckpointOut
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
void postInt(uint32_t cpu, ArmISA::InterruptTypes int_type)
const SimObjectParams * _params
Cached copy of the object parameters.
void sendInt(uint32_t int_id) override
Post an interrupt from a device that is connected to the GIC.
std::vector< Gicv3Redistributor * > redistributors
std::vector< Gicv3CPUInterface * > cpuInterfaces
bool supportsVersion(GicVersion version) override
Check if version supported.
int ContextID
Globally unique thread context ID.
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
static const int INTID_SECURE
Gicv3Distributor * getDistributor() const