Go to the documentation of this file.
63 (1 << 0) | (1 << 8) | (1 << 16) | (1 << 24));
Interrupt controller interface.
bool isSoftwareInterrupt(const uint irq) const
Check if the given IRQ is an SGI.
Result initialize(bool performReset=true)
Initialize the controller.
#define NOTICE(msg)
Output a notice message.
virtual Result send(const uint targetCoreId, const uint irq)
Raise a software generated interrupt (SGI).
virtual bool isTriggered(uint irq)
Check if an IRQ vector is set.
void write(u32 reg, u32 data)
write to memory mapped I/O register
unsigned long Address
A memory address.
Size m_numIrqs
Number of interrupts supported.
unsigned int uint
Unsigned integer number.
static const Size NumberOfSoftwareInterrupts
Total number of software generated interrupts (SGI)
void setBase(const Address base)
Set memory I/O base offset.
virtual Result enable(uint irq)
Enable hardware interrupt (IRQ).
virtual Result clear(uint irq)
Clear hardware interrupt (IRQ).
u32 m_savedIrqAck
Saved value of the Interrupt-Acknowledge register.
virtual Result disable(uint irq)
Disable hardware interrupt (IRQ).
unsigned int Size
Any sane size indicator cannot go negative.
u32 read(u32 reg) const
read from memory mapped I/O register
Size numRegisters(Size bits) const
Calculate the number of 32-bit registers needed to represent given number of bits per IRQ.
ARMGenericInterrupt(Address distRegisterBase, Address cpuRegisterBase)
Constructor.
ARMIO m_dist
ARM Generic Interrupt Controller Distributor Interface.
void set(Address addr, u32 data)
Set bits in memory mapped register.
ARMIO m_cpu
ARM Generic Interrupt Controller CPU Interface.
virtual Result nextPending(uint &irq)
Retrieve the next pending interrupt (IRQ).