41#ifndef __DEV_ARM_GICV3_REDISTRIBUTOR_H__
42#define __DEV_ARM_GICV3_REDISTRIBUTOR_H__
51class Gicv3CPUInterface;
52class Gicv3Distributor;
184 static const uint32_t GICR_CTLR_ENABLE_LPIS = 1 << 0;
259 uint64_t
read(
Addr addr,
size_t size,
bool is_secure_access);
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
uint8_t readEntryLPI(uint32_t intid)
uint32_t processorNumber() const
static const uint32_t GICR_WAKER_ProcessorSleep
void clearPPInt(uint32_t int_id)
bool isPendingLPI(uint32_t intid)
static const uint32_t GICR_CTLR_DPG1S
std::vector< uint8_t > irqGroup
Gicv3Distributor * distributor
Gicv3CPUInterface * getCPUInterface() const
std::vector< uint8_t > irqPriority
uint32_t getAffinity() const
bool canBeSelectedFor1toNInterrupt(Gicv3::GroupId group) const
void activateIRQ(uint32_t int_id)
std::vector< bool > irqActive
Gicv3Redistributor(Gicv3 *gic, uint32_t cpu_id)
static const uint32_t GICR_WAKER_ChildrenAsleep
std::vector< bool > irqPending
std::vector< uint8_t > irqNsacr
void writeEntryLPI(uint32_t intid, uint8_t lpi_entry)
void sendPPInt(uint32_t int_id)
bool isLevelSensitive(uint32_t int_id) const
Gicv3::GroupId getIntGroup(int int_id) const
static const uint32_t SGI_base
void serialize(CheckpointOut &cp) const override
Serialize an object.
void copy(Gicv3Registers *from, Gicv3Registers *to)
void deactivateIRQ(uint32_t int_id)
std::vector< bool > irqEnabled
std::vector< Gicv3::IntTriggerType > irqConfig
static const uint32_t SMALLEST_LPI_ID
static const uint32_t GICR_CTLR_DPG1NS
static const uint32_t GICR_CTLR_DPG0
static const uint32_t RD_base
void sendSGI(uint32_t int_id, Gicv3::GroupId group, bool ns)
bool treatAsEdgeTriggered(uint32_t int_id) const
This helper is used to check if an interrupt should be treated as edge triggered in the following sce...
BitUnion8(LPIConfigurationTableEntry) Bitfield< 7
Addr lpiConfigurationTablePtr
static const AddrRange GICR_IPRIORITYR
Gicv3::IntStatus intStatus(uint32_t int_id) const
const uint32_t addrRangeSize
std::vector< uint8_t > irqGrpmod
Gicv3CPUInterface * cpuInterface
uint64_t read(Addr addr, size_t size, bool is_secure_access)
void write(Addr addr, uint64_t data, size_t size, bool is_secure_access)
void unserialize(CheckpointIn &cp) override
Unserialize an object.
void setClrLPI(uint64_t data, bool set)
std::vector< bool > irqPendingIspendr
This object is a proxy for a port or other object which implements the functional response protocol,...
Basic support for object serialization.
#define EndBitUnion(name)
This closes off the class and union started by the above macro.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::ostream CheckpointOut
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.