38#ifndef __DEV_ARM_SMMU_V3_TRANSL_HH__
39#define __DEV_ARM_SMMU_V3_TRANSL_HH__
123 bool _stage2=
false,
Addr _ipa=0)
184 unsigned stage,
unsigned level);
187 unsigned stage,
unsigned level,
188 bool leaf, uint8_t permissions);
236 uint32_t sid, uint32_t ssid);
238 unsigned stage,
unsigned level);
CallerType: A reference to an object of this class will be passed to the coroutine task.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
const std::string name() const
bool ifcTLBLookup(Yield &yield, TranslResult &tr, bool &wasPrefetched)
void configCacheUpdate(Yield &yield, const TranslContext &tc)
TranslResult translateStage1And2(Yield &yield, Addr addr)
void smmuTLBUpdate(Yield &yield, const TranslResult &tr)
SMMUTranslationProcess(const std::string &name, SMMUv3 &_smmu, SMMUv3DeviceInterface &_ifc)
TranslResult smmuTranslation(Yield &yield)
SMMUTranslRequest request
TranslResult bypass(Addr addr) const
void beginTransaction(const SMMUTranslRequest &req)
bool findConfig(Yield &yield, TranslContext &tc, TranslResult &tr)
void walkCacheLookup(Yield &yield, const WalkCache::Entry *&walkEntry, Addr addr, uint16_t asid, uint16_t vmid, unsigned stage, unsigned level)
bool smmuTLBLookup(Yield &yield, TranslResult &tr)
void abortTransaction(Yield &yield, const TranslResult &tr)
SMMUEvent generateEvent(const TranslResult &tr)
virtual ~SMMUTranslationProcess()
void hazardIdRegister()
Used to force ordering on transactions with the same orderId.
TranslResult walkStage2(Yield &yield, Addr addr, bool final_tr, const ArmISA::PageTableOps *pt_ops, unsigned level, Addr walkPtr)
TranslResult translateStage2(Yield &yield, Addr addr, bool final_tr)
void doReadConfig(Yield &yield, Addr addr, void *ptr, size_t size, uint32_t sid, uint32_t ssid)
void hazard4kHold(Yield &yield)
void doReadSTE(Yield &yield, StreamTableEntry &ste, uint32_t sid)
void hazardIdHold(Yield &yield)
void issuePrefetch(Addr addr)
SMMUv3DeviceInterface & ifc
bool microTLBLookup(Yield &yield, TranslResult &tr)
bool configCacheLookup(Yield &yield, TranslContext &tc)
TranslResult doReadCD(Yield &yield, ContextDescriptor &cd, const StreamTableEntry &ste, uint32_t sid, uint32_t ssid)
bool hazard4kCheck()
Used to force ordering on transactions with same (SID, SSID, 4k page) to avoid multiple identical pag...
void ifcTLBUpdate(Yield &yield, const TranslResult &tr)
TranslResult walkStage1And2(Yield &yield, Addr addr, const ArmISA::PageTableOps *pt_ops, unsigned level, Addr walkPtr)
void sendEvent(Yield &yield, const SMMUEvent &ev)
void microTLBUpdate(Yield &yield, const TranslResult &tr)
void doReadPTE(Yield &yield, Addr va, Addr addr, void *ptr, unsigned stage, unsigned level)
void walkCacheUpdate(Yield &yield, Addr va, Addr vaMask, Addr pa, unsigned stage, unsigned level, bool leaf, uint8_t permissions)
void completePrefetch(Yield &yield)
GEM5_CLASS_VAR_USED Tick faultTick
TranslResult combineTranslations(const TranslResult &s1tr, const TranslResult &s2tr) const
void completeTransaction(Yield &yield, const TranslResult &tr)
void sendEventInterrupt(Yield &yield)
#define GEM5_CLASS_VAR_USED
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.
Declaration of the Packet class.
static SMMUTranslRequest fromPacket(PacketPtr pkt, bool ats=false)
static SMMUTranslRequest prefetch(Addr addr, uint32_t sid, uint32_t ssid)
Fault(const Fault &rhs)=default
Fault & operator=(const Fault &rhs)=default
Fault(FaultType _type, FaultClass _clss=FaultClass::RESERVED, bool _stage2=false, Addr _ipa=0)
uint8_t stage1TranslGranule
uint8_t stage2TranslGranule
TranslResult(const TranslResult &)=default
TranslResult & operator=(const TranslResult &rhs)=default