Go to the documentation of this file.
61 #include "debug/Checkpoint.hh"
62 #include "debug/GICV2M.hh"
68 Gicv2mParams::create()
74 Gicv2mFrameParams::create()
85 fatal(
"Gicv2m: Frame %d's SPI base (%d) is not in SPI space\n",
90 "a power-of-two number of frames\n");
115 pkt->
setLE<uint32_t>((
frames[frame]->spi_base << 16) |
126 pkt->
setLE<uint32_t>(0);
145 uint32_t
m = pkt->
getLE<uint32_t>();
146 if (
m >=
frames[frame]->spi_base &&
148 DPRINTF(GICV2M,
"GICv2m: Frame %d raising MSI %d\n", frame,
m);
163 for (
int i = 0;
i <
frames.size();
i++) {
#define fatal(...)
This implements a cprintf based fatal() function.
void makeAtomicResponse()
const Tick pioDelay
Latency for an MMIO operation.
Ultimately this class should be embedded in the Gicv2m class, but this confuses Python as 'Gicv2m::Fr...
static const int MSI_TYPER
static const int FRAME_SIZE
unsigned int log2framenum
Count of number of configured frames, as log2(frames)
uint64_t Tick
Tick count type.
std::enable_if< std::is_integral< T >::value, int >::type floorLog2(T x)
virtual Tick read(PacketPtr pkt)
A PIO read to the device.
BaseGic * gic
Gic to which we fire interrupts.
This device is the base class which all devices senstive to an address range inherit from.
static const int MSI_SETSPI_NSR
virtual AddrRangeList getAddrRanges() const
Return the address ranges used by the Gicv2m This is the set of frame addresses.
virtual Tick write(PacketPtr pkt)
A PIO read to the device.
AddrRange RangeSize(Addr start, Addr size)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual void sendInt(uint32_t num)=0
Post an interrupt from a device that is connected to the GIC.
std::vector< Gicv2mFrame * > frames
A set of configured hardware frames.
T getLE() const
Get the data in the packet byte swapped from little endian to host endian.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void setLE(T v)
Set the value in the data pointer to v as little endian.
#define fatal_if(cond,...)
Conditional fatal macro that checks the supplied condition and only causes a fatal error if the condi...
bool isPowerOf2(const T &n)
int frameFromAddr(Addr a) const
Determine which frame a PIO access lands in.
Generated on Wed Sep 30 2020 14:02:10 for gem5 by doxygen 1.8.17