41#ifndef __DEV_ARM_GICV3_DISTRIBUTOR_H__
42#define __DEV_ARM_GICV3_DISTRIBUTOR_H__
145 static const uint32_t GICD_CTLR_ENABLEGRP0 = 1 << 0;
202 panic(
"Gicv3Distributor::groupEnabled(): "
215 panic(
"Gicv3Distributor::groupEnabled(): "
271 uint64_t
read(
Addr addr,
size_t size,
bool is_secure_access);
273 bool is_secure_access);
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
std::vector< uint8_t > irqPriority
BitUnion64(IROUTER) Bitfield< 63
std::vector< bool > irqActive
static const AddrRange GICD_IGROUPR
static const AddrRange GICD_ISPENDR
static const AddrRange GICD_ICFGR
static const AddrRange GICD_ICACTIVER
std::vector< uint8_t > irqGrpmod
void sendInt(uint32_t int_id)
std::vector< bool > irqPending
void unserialize(CheckpointIn &cp) override
Unserialize an object.
std::vector< bool > irqEnabled
static const AddrRange GICD_NSACR
bool groupEnabled(Gicv3::GroupId group) const
bool isNotSPI(uint32_t int_id) const
std::vector< uint8_t > irqNsacr
void clearInt(uint32_t int_id)
static const AddrRange GICD_IGRPMODR
std::vector< uint8_t > irqGroup
std::vector< IROUTER > irqAffinityRouting
static const uint32_t IDBITS
static const AddrRange GICD_ISENABLER
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...
Gicv3::IntStatus intStatus(uint32_t int_id) const
void copy(Gicv3Registers *from, Gicv3Registers *to)
static const uint32_t GICD_CTLR_ENABLEGRP1A
static const uint32_t ADDR_RANGE_SIZE
std::vector< Gicv3::IntTriggerType > irqConfig
static const AddrRange GICD_SPENDSGIR
void activateIRQ(uint32_t int_id)
Bitfield< 30, 24 > res0_2
Gicv3CPUInterface * route(uint32_t int_id)
static const uint32_t GICD_CTLR_ENABLEGRP1
static const AddrRange GICD_ICENABLER
static const AddrRange GICD_IROUTER
static const AddrRange GICD_ICPENDR
bool nsAccessToSecInt(uint32_t int_id, bool is_secure_access) const
std::vector< bool > irqPendingIspendr
bool isLevelSensitive(uint32_t int_id) const
void write(Addr addr, uint64_t data, size_t size, bool is_secure_access)
static const AddrRange GICD_ITARGETSR
void deactivateIRQ(uint32_t int_id)
static const AddrRange GICD_IPRIORITYR
void deassertSPI(uint32_t int_id)
Gicv3::GroupId getIntGroup(int int_id) const
static const uint32_t GICD_CTLR_ENABLEGRP1NS
void clearIrqCpuInterface(uint32_t int_id)
Gicv3Distributor(Gicv3 *gic, uint32_t it_lines)
static const uint32_t GICD_CTLR_ENABLEGRP1S
uint64_t read(Addr addr, size_t size, bool is_secure_access)
static const AddrRange GICD_ISACTIVER
void serialize(CheckpointOut &cp) const override
Serialize an object.
static const uint32_t GICD_CTLR_DS
static const AddrRange GICD_CPENDSGIR
Basic support for object serialization.
#define EndBitUnion(name)
This closes off the class and union started by the above macro.
#define panic(...)
This implements a cprintf based panic() function.
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.
Overload hash function for BasicBlockRange type.