38#ifndef __DEV_ARM_SMMU_V3_HH__
39#define __DEV_ARM_SMMU_V3_HH__
56#include "params/SMMUv3.hh"
84class SMMUTranslationProcess;
182 virtual void init()
override;
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
Generic representation of an Arm interrupt pin.
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
Cycles is a wrapper class for representing cycle counts, i.e.
Wrap a member function inside MemberEventWrapper to use it as an event callback.
virtual std::string name() 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.
const bool ipaCacheEnable
const unsigned requestPortWidth
SMMUCommandExecProcess commandExecutor
gem5::SMMUv3::SMMUv3Stats stats
Tick readControl(PacketPtr pkt)
SMMUSemaphore requestPortSem
Tick recvAtomic(PacketPtr pkt, PortID id)
void serialize(CheckpointOut &cp) const override
Serialize an object.
SMMUAction runProcess(SMMUProcess *proc, PacketPtr pkt)
const bool configCacheEnable
std::vector< SMMUv3DeviceInterface * > deviceInterfaces
void unserialize(CheckpointIn &cp) override
Unserialize an object.
SMMUControlPort controlPort
SMMUTableWalkPort tableWalkPort
virtual void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
SMMUAction runProcessAtomic(SMMUProcess *proc, PacketPtr pkt)
bool recvTimingResp(PacketPtr pkt)
bool inSecureBlock(uint32_t offs) const
ArmInterruptPin *const eventqInterrupt
const bool walkCacheNonfinalEnable
virtual Port & getPort(const std::string &name, PortID id=InvalidPortID) override
Get a port with a given name and index.
Tick writeControl(PacketPtr pkt)
const unsigned walkCacheS1Levels
SMMURequestPort requestPort
const bool walkCacheEnable
void scheduleDeviceRetries()
std::queue< SMMUAction > packetsTableWalkToRetry
DrainState drain() override
Provide a default implementation of the drain interface for objects that don't need draining.
const unsigned walkCacheS2Levels
const RequestorID requestorId
std::queue< SMMUAction > packetsToRetry
bool recvTimingReq(PacketPtr pkt, PortID id)
void processCommand(const SMMUCommand &cmd)
void tableWalkRecvReqRetry()
SMMUv3(const SMMUv3Params &p)
MemberEventWrapper<&SMMUv3::processCommands > processCommandsEvent
SMMUAction runProcessTiming(SMMUProcess *proc, PacketPtr pkt)
bool tableWalkRecvTimingResp(PacketPtr pkt)
A simple distribution stat.
This is a simple scalar statistic, like a counter.
ClockedObject declaration and implementation.
DrainState
Object drain/handover states.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
const PortID InvalidPortID
std::ostream CheckpointOut
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
uint64_t Tick
Tick count type.
Declaration of the Packet class.
Declaration of Statistics objects.
SMMUv3Stats(statistics::Group *parent)
statistics::Distribution ptwTimeDist
statistics::Scalar cdL1Fetches
statistics::Scalar steL1Fetches
statistics::Scalar steFetches
statistics::Distribution translationTimeDist
statistics::Scalar cdFetches