Go to the documentation of this file.
38 #ifndef __DEV_ARM_SMMU_V3_TRANSL_HH__
39 #define __DEV_ARM_SMMU_V3_TRANSL_HH__
122 unsigned stage,
unsigned level);
125 unsigned stage,
unsigned level,
126 bool leaf, uint8_t permissions);
171 uint32_t sid, uint32_t ssid);
173 unsigned stage,
unsigned level);
void doReadCD(Yield &yield, ContextDescriptor &cd, const StreamTableEntry &ste, uint32_t sid, uint32_t ssid)
void completeTransaction(Yield &yield, const TranslResult &tr)
CallerType: A reference to an object of this class will be passed to the coroutine task.
static SMMUTranslRequest prefetch(Addr addr, uint32_t sid, uint32_t ssid)
Tick M5_CLASS_VAR_USED faultTick
uint64_t Tick
Tick count type.
void issuePrefetch(Addr addr)
bool ifcTLBLookup(Yield &yield, TranslResult &tr, bool &wasPrefetched)
TranslResult walkStage1And2(Yield &yield, Addr addr, const PageTableOps *pt_ops, unsigned level, Addr walkPtr)
TranslResult walkStage2(Yield &yield, Addr addr, bool final_tr, const PageTableOps *pt_ops, unsigned level, Addr walkPtr)
void doReadPTE(Yield &yield, Addr va, Addr addr, void *ptr, unsigned stage, unsigned level)
void microTLBUpdate(Yield &yield, const TranslResult &tr)
void configCacheUpdate(Yield &yield, const TranslContext &tc)
bool configCacheLookup(Yield &yield, TranslContext &tc)
SMMUTranslRequest request
#define M5_CLASS_VAR_USED
SMMUv3DeviceInterface & ifc
virtual ~SMMUTranslationProcess()
TranslResult translateStage2(Yield &yield, Addr addr, bool final_tr)
bool hazard4kCheck()
Used to force ordering on transactions with same (SID, SSID, 4k page) to avoid multiple identical pag...
static SMMUTranslRequest fromPacket(PacketPtr pkt, bool ats=false)
void ifcTLBUpdate(Yield &yield, const TranslResult &tr)
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)
void completePrefetch(Yield &yield)
void hazard4kHold(Yield &yield)
virtual void main(Yield &yield)
void smmuTLBUpdate(Yield &yield, const TranslResult &tr)
void sendEvent(Yield &yield, const SMMUEvent &ev)
void doReadSTE(Yield &yield, StreamTableEntry &ste, uint32_t sid)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
TranslResult bypass(Addr addr) const
void doReadConfig(Yield &yield, Addr addr, void *ptr, size_t size, uint32_t sid, uint32_t ssid)
void hazardIdHold(Yield &yield)
bool smmuTLBLookup(Yield &yield, TranslResult &tr)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
TranslResult translateStage1And2(Yield &yield, Addr addr)
uint8_t stage1TranslGranule
void hazardIdRegister()
Used to force ordering on transactions with the same orderId.
uint8_t stage2TranslGranule
bool microTLBLookup(Yield &yield, TranslResult &tr)
void walkCacheUpdate(Yield &yield, Addr va, Addr vaMask, Addr pa, unsigned stage, unsigned level, bool leaf, uint8_t permissions)
void beginTransaction(const SMMUTranslRequest &req)
TranslResult smmuTranslation(Yield &yield)
SMMUTranslationProcess(const std::string &name, SMMUv3 &_smmu, SMMUv3DeviceInterface &_ifc)
TranslResult combineTranslations(const TranslResult &s1tr, const TranslResult &s2tr) const
const std::string name() const
Generated on Wed Sep 30 2020 14:02:10 for gem5 by doxygen 1.8.17