28#ifndef __ARCH_ARM_FASTMODEL_GIC_GIC_HH__
29#define __ARCH_ARM_FASTMODEL_GIC_GIC_HH__
31#pragma GCC diagnostic push
32#pragma GCC diagnostic ignored "-Woverloaded-virtual"
34#pragma GCC diagnostic pop
43#include "params/FastModelGIC.hh"
44#include "params/SCFastModelGIC.hh"
45#include "scx_evs_GIC.h"
69 public svp_gicv3_comms::gicv3_comms_fw_if
73 svp_gicv3_comms::gicv3_comms_initiator_socket<>>
Initiators;
75 svp_gicv3_comms::gicv3_comms_target_socket<>>
Targets;
108 scx_evs_GIC::end_of_elaboration();
109 scx_evs_GIC::start_of_simulation();
122 64, svp_gicv3_comms::gicv3_comms_fw_if,
123 svp_gicv3_comms::gicv3_comms_bw_if, 1,
139 void sendInt(uint32_t num)
override;
140 void clearInt(uint32_t num)
override;
142 void sendPPInt(uint32_t num, uint32_t cpu)
override;
143 void clearPPInt(uint32_t num, uint32_t cpu)
override;
Base class for ARM GIC implementations.
const Params & params() const
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Ports are used to interface objects to each other.
GIC(const FastModelGICParams ¶ms)
void sendPPInt(uint32_t num, uint32_t cpu) override
Interface call for private peripheral interrupts.
AddrRangeList getAddrRanges() const override
Every PIO device is obliged to provide an implementation that returns the address ranges the device r...
void clearInt(uint32_t num) override
Clear an interrupt from a device that is connected to the GIC.
void sendInt(uint32_t num) override
Post an interrupt from a device that is connected to the GIC.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
void clearPPInt(uint32_t num, uint32_t cpu) override
std::vector< std::unique_ptr< TlmGicInitiator > > redistributors
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
std::vector< std::unique_ptr< IntSourcePin< GIC > > > wakeRequestPorts
bool supportsVersion(GicVersion version) override
Check if version supported.
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
sc_gem5::TlmInitiatorBaseWrapper< 64, svp_gicv3_comms::gicv3_comms_fw_if, svp_gicv3_comms::gicv3_comms_bw_if, 1, sc_core::SC_ONE_OR_MORE_BOUND > TlmGicInitiator
Terminator(sc_core::sc_module_name _name, Initiators &inits)
static int countUnbound(const Initiators &inits)
sc_core::sc_vector< svp_gicv3_comms::gicv3_comms_target_socket<> > Targets
void sendTowardsCPU(uint8_t len, const uint8_t *data) override
sc_core::sc_vector< svp_gicv3_comms::gicv3_comms_initiator_socket<> > Initiators
void start_of_simulation() override
SCGIC(const SCFastModelGICParams &p)
void before_end_of_elaboration() override
const SCFastModelGICParams & _params
Port & gem5_getPort(const std::string &if_name, int idx) override
std::vector< std::unique_ptr< SignalReceiver > > wakeRequests
void end_of_elaboration() override
std::unique_ptr< Terminator > terminator
SignalInterruptInitiatorSocket signalInterrupt
std::list< AddrRange > AddrRangeList
Convenience typedef for a collection of address ranges.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
const PortID InvalidPortID
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
uint64_t Tick
Tick count type.
const std::string & name()