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