Go to the documentation of this file.
38 #ifndef __ARCH_ARM_KVM_GIC_HH__
39 #define __ARCH_ARM_KVM_GIC_HH__
102 void setPPI(
unsigned vcpu,
unsigned ppi);
110 void clearPPI(
unsigned vcpu,
unsigned ppi);
122 uint32_t
data)
override;
166 struct MuxingKvmGicParams;
183 void sendInt(uint32_t num)
override;
184 void clearInt(uint32_t num)
override;
186 void sendPPInt(uint32_t num, uint32_t cpu)
override;
187 void clearPPInt(uint32_t num, uint32_t cpu)
override;
214 Addr daddr,
size_t size);
216 Addr daddr,
size_t size);
218 Addr daddr,
size_t size);
220 Addr daddr,
size_t size);
223 #endif // __ARCH_ARM_KVM_GIC_HH__
void fromGicV2ToKvm()
Multiplexing implementation.
void setSPI(unsigned spi)
Raise a shared peripheral interrupt.
void writeCpu(ContextID ctx, Addr daddr, uint32_t data) override
void clearPPInt(uint32_t num, uint32_t cpu) override
KVM in-kernel GIC abstraction.
int ContextID
Globally unique thread context ID.
uint64_t Tick
Tick count type.
uint32_t readDistributor(ContextID ctx, Addr daddr) override
BaseGicRegisters interface.
void copyDistRange(BaseGicRegisters *from, BaseGicRegisters *to, Addr daddr, size_t size)
void drainResume() override
Resume execution after a successful drain.
KvmKernelGicV2(KvmVM &vm, Addr cpu_addr, Addr dist_addr, unsigned it_lines)
Instantiate a KVM in-kernel GIC model.
DrainState drain() override
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are pa...
void clearPPI(unsigned vcpu, unsigned ppi)
Clear a private peripheral interrupt.
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
uint32_t getGicReg(unsigned group, unsigned vcpu, unsigned offset)
Get value of GIC register "from" a cpu.
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
void writeDistributor(ContextID ctx, Addr daddr, uint32_t data) override
DrainState
Object drain/handover states.
KvmKernelGicV2 * kernelGic
Kernel GIC device.
void sendPPInt(uint32_t num, uint32_t cpu) override
Interface call for private peripheral interrupts.
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
virtual ~KvmKernelGicV2()
const AddrRange cpuRange
Address range for the CPU interfaces.
void setGicReg(unsigned group, unsigned vcpu, unsigned offset, unsigned value)
Set value of GIC register "from" a cpu.
System & system
System this interrupt controller belongs to.
KvmVM & vm
KVM VM in the parent system.
uint32_t readCpu(ContextID ctx, Addr daddr) override
void setIntState(unsigned type, unsigned vcpu, unsigned irq, bool high)
Update the kernel's VGIC interrupt state.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void clearInt(uint32_t num) override
Clear an interrupt from a device that is connected to the GIC.
KvmDevice kdev
Kernel interface to the GIC.
void clearDistRange(BaseGicRegisters *to, Addr daddr, size_t size)
void copyCpuRegister(BaseGicRegisters *from, BaseGicRegisters *to, ContextID ctx, Addr daddr)
void updateIntState(int hint) override
See if some processor interrupt flags need to be enabled/disabled.
void copyBankedDistRange(BaseGicRegisters *from, BaseGicRegisters *to, Addr daddr, size_t size)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void setPPI(unsigned vcpu, unsigned ppi)
Raise a private peripheral interrupt.
MuxingKvmGic(const MuxingKvmGicParams *p)
void clearBankedDistRange(BaseGicRegisters *to, Addr daddr, size_t size)
KvmKernelGicV2 & operator=(const KvmKernelGicV2 &&rhs)=delete
void clearSPI(unsigned spi)
Clear a shared peripheral interrupt.
void copyDistRegister(BaseGicRegisters *from, BaseGicRegisters *to, ContextID ctx, Addr daddr)
const AddrRange distRange
Address range for the distributor interface.
void copyGicState(BaseGicRegisters *from, BaseGicRegisters *to)
void sendInt(uint32_t num) override
Post an interrupt from a device that is connected to the GIC.
void startup() override
startup() is the final initialization call before simulation.
Generated on Wed Sep 30 2020 14:01:58 for gem5 by doxygen 1.8.17