Go to the documentation of this file.
38 #ifndef __ARCH_ARM_KVM_GIC_HH__
39 #define __ARCH_ARM_KVM_GIC_HH__
48 #include "params/MuxingKvmGicV2.hh"
49 #include "params/MuxingKvmGicV3.hh"
110 void setPPI(
unsigned vcpu,
unsigned ppi);
118 void clearPPI(
unsigned vcpu,
unsigned ppi);
153 const MuxingKvmGicV2Params ¶ms);
160 uint32_t
data)
override;
204 const MuxingKvmGicV3Params ¶ms);
206 void init()
override;
211 Addr daddr)
override;
217 Addr daddr, uint32_t
data)
override;
218 void writeCpu(
const ArmISA::Affinity &aff,
229 template <
typename Ret>
240 template <
typename Arg>
265 template <
class Types>
284 void sendInt(uint32_t num)
override;
285 void clearInt(uint32_t num)
override;
287 void sendPPInt(uint32_t num, uint32_t cpu)
override;
288 void clearPPInt(uint32_t num, uint32_t cpu)
override;
310 #endif // __ARCH_ARM_KVM_GIC_HH__
KvmKernelGic(KvmVM &vm, uint32_t dev, unsigned it_lines)
Instantiate a KVM in-kernel GIC model.
typename Types::KvmGic KvmGic
uint32_t readRedistributor(const ArmISA::Affinity &aff, Addr daddr) override
MuxingKvmGicV2Params Params
typename Types::SimGic SimGic
void setIntState(unsigned type, unsigned vcpu, unsigned irq, bool high)
Update the kernel's VGIC interrupt state.
void clearPPInt(uint32_t num, uint32_t cpu) override
KvmVM & vm
KVM VM in the parent system.
KVM in-kernel GIC abstraction.
void setPPI(unsigned vcpu, unsigned ppi)
Raise a private peripheral interrupt.
bool blockIntUpdate() const override
KvmDevice kdev
Kernel interface to the GIC.
Tick read(PacketPtr pkt) override
void clearInt(uint32_t num) override
uint32_t readDistributor(Addr daddr) override
uint32_t getGicReg(unsigned group, unsigned vcpu, unsigned offset)
Get value of GIC register "from" a cpu.
const AddrRange distRange
Address range for the distributor.
Tick write(PacketPtr pkt) override
void clearPPI(unsigned vcpu, unsigned ppi)
Clear a private peripheral interrupt.
const AddrRange redistRange
Address range for the redistributor.
void writeCpu(const ArmISA::Affinity &aff, ArmISA::MiscRegIndex misc_reg, RegVal data) override
DrainState
Object drain/handover states.
void clearSPI(unsigned spi)
Clear a shared peripheral interrupt.
KvmKernelGicV2(KvmVM &vm, const MuxingKvmGicV2Params ¶ms)
Instantiate a KVM in-kernel GICv2 model.
void writeRedistributor(const ArmISA::Affinity &aff, Addr daddr, uint32_t data) override
void fromGicToKvm()
Multiplexing implementation.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
uint64_t Tick
Tick count type.
void writeDistributor(ContextID ctx, Addr daddr, uint32_t data) override
void setSPI(unsigned spi)
Raise a shared peripheral interrupt.
void writeDistributor(Addr daddr, uint32_t data) override
MuxingKvmGic(const Params &p)
void setGicReg(unsigned group, unsigned vcpu, unsigned offset, unsigned value)
Set value of GIC register "from" a cpu.
Ret getGicReg(unsigned group, unsigned mpidr, unsigned offset)
Get value of GIC register "from" a cpu.
uint32_t readDistributor(ContextID ctx, Addr daddr) override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
const AddrRange cpuRange
Address range for the CPU interfaces.
KvmKernelGic & operator=(const KvmKernelGic &&rhs)=delete
uint32_t readCpu(ContextID ctx, Addr daddr) override
KvmKernelGic * kernelGic
Kernel GIC device.
int ContextID
Globally unique thread context ID.
typename Types::Params Params
void sendInt(uint32_t num) override
DrainState drain() override
void setGicReg(unsigned group, unsigned mpidr, unsigned offset, Arg value)
Set value of GIC register "from" a cpu.
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
MuxingKvmGicV3Params Params
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void writeCpu(ContextID ctx, Addr daddr, uint32_t data) override
void drainResume() override
RegVal readCpu(const ArmISA::Affinity &aff, ArmISA::MiscRegIndex misc_reg) override
KvmKernelGicV3(KvmVM &vm, const MuxingKvmGicV3Params ¶ms)
Instantiate a KVM in-kernel GICv3 model.
void sendPPInt(uint32_t num, uint32_t cpu) override
System & system
System this interrupt controller belongs to.
const AddrRange distRange
Address range for the distributor.
Generated on Wed Jul 13 2022 10:39:08 for gem5 by doxygen 1.8.17