Go to the documentation of this file.
41 #ifndef __DEV_ARM_GICV3_H__
42 #define __DEV_ARM_GICV3_H__
47 #include "params/Gicv3.hh"
52 class Gicv3CPUInterface;
53 class Gicv3Distributor;
54 class Gicv3Redistributor;
69 virtual void writeCpu(
const ArmISA::Affinity &aff,
78 const ArmISA::Affinity &aff,
Addr daddr);
81 const ArmISA::Affinity &aff,
84 const ArmISA::Affinity &aff,
Addr daddr);
87 const ArmISA::Affinity &aff,
88 Addr daddr,
size_t size);
91 Addr daddr,
size_t size);
148 void clearInt(uint32_t int_id)
override;
149 void clearPPInt(uint32_t int_id, uint32_t cpu)
override;
157 void init()
override;
163 void sendInt(uint32_t int_id)
override;
164 void sendPPInt(uint32_t int_id, uint32_t cpu)
override;
215 Addr daddr)
override;
221 Addr daddr, uint32_t
data)
override;
222 void writeCpu(
const ArmISA::Affinity &aff,
228 #endif //__DEV_ARM_GICV3_H__
void writeRedistributor(const ArmISA::Affinity &aff, Addr daddr, uint32_t data) override
static const int INTID_NONSECURE
virtual void writeDistributor(Addr daddr, uint32_t data)=0
Gicv3Redistributor * getRedistributor(ContextID context_id) const
static void copyDistRange(Gicv3Registers *from, Gicv3Registers *to, Addr daddr, size_t size)
bool haveAsserted(uint32_t cpu) const
Gicv3CPUInterface * getCPUInterface(int cpu_id) const
static void copyRedistRange(Gicv3Registers *from, Gicv3Registers *to, const ArmISA::Affinity &aff, Addr daddr, size_t size)
Gicv3Distributor * getDistributor() const
Gicv3Redistributor * getRedistributorByAddr(Addr address) const
void deassertAll(uint32_t cpu)
void clearPPInt(uint32_t int_id, uint32_t cpu) override
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
Gicv3Redistributor * getRedistributorByAffinity(const ArmISA::Affinity &aff) const
virtual uint32_t readRedistributor(const ArmISA::Affinity &aff, Addr daddr)=0
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
static void copyRedistRegister(Gicv3Registers *from, Gicv3Registers *to, const ArmISA::Affinity &aff, Addr daddr)
void writeCpu(const ArmISA::Affinity &aff, ArmISA::MiscRegIndex misc_reg, RegVal data) override
virtual void writeCpu(const ArmISA::Affinity &aff, ArmISA::MiscRegIndex misc_reg, RegVal data)=0
void sendPPInt(uint32_t int_id, uint32_t cpu) override
Interface call for private peripheral interrupts.
uint32_t readDistributor(Addr daddr) override
void postInt(uint32_t cpu, ArmISA::InterruptTypes int_type)
void unserialize(CheckpointIn &cp) override
Unserialize an object.
void serialize(CheckpointOut &cp) const override
Serialize an object.
std::vector< Gicv3CPUInterface * > cpuInterfaces
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
uint64_t Tick
Tick count type.
virtual void writeRedistributor(const ArmISA::Affinity &aff, Addr daddr, uint32_t data)=0
static const int INTID_SPURIOUS
Gicv3Distributor * distributor
virtual RegVal readCpu(const ArmISA::Affinity &aff, ArmISA::MiscRegIndex misc_reg)=0
std::vector< Gicv3Redistributor * > redistributors
static void copyCpuRegister(Gicv3Registers *from, Gicv3Registers *to, const ArmISA::Affinity &aff, ArmISA::MiscRegIndex misc_reg)
void sendInt(uint32_t int_id) override
Post an interrupt from a device that is connected to the GIC.
RegVal readCpu(const ArmISA::Affinity &aff, ArmISA::MiscRegIndex misc_reg) override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Gicv3CPUInterface * getCPUInterfaceByAffinity(const ArmISA::Affinity &aff) const
int ContextID
Globally unique thread context ID.
void copyGicState(Gicv3Registers *from, Gicv3Registers *to)
static void copyDistRegister(Gicv3Registers *from, Gicv3Registers *to, Addr daddr)
static const int INTID_SECURE
std::ostream CheckpointOut
void writeDistributor(Addr daddr, uint32_t data) override
uint32_t readRedistributor(const ArmISA::Affinity &aff, Addr daddr) override
void deassertInt(uint32_t cpu, ArmISA::InterruptTypes int_type)
AddrRangeList getAddrRanges() const override
Every PIO device is obliged to provide an implementation that returns the address ranges the device r...
static void clearRedistRegister(Gicv3Registers *to, const ArmISA::Affinity &aff, Addr daddr)
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
virtual uint32_t readDistributor(Addr daddr)=0
void clearInt(uint32_t int_id) override
Clear an interrupt from a device that is connected to the GIC.
bool supportsVersion(GicVersion version) override
Check if version supported.
static void clearDistRange(Gicv3Registers *to, Addr daddr, size_t size)
Generated on Thu Jun 16 2022 10:41:50 for gem5 by doxygen 1.8.17