49 using namespace ArmISA;
52 :
SimObject(p), _stage1Tlb(p->tlb), _stage2Tlb(p->stage2_tlb),
53 port(_stage1Tlb->getTableWalker(), p->sys),
54 masterId(p->sys->getMasterId(_stage1Tlb->getTableWalker()->
name()))
113 uint8_t *_data,
Event *_event,
Addr _oVAddr)
114 :
data(_data), numBytes(0),
event(_event), parent(_parent), oVAddr(_oVAddr),
145 ArmStage2MMUParams::create()
Fault translateTiming(ThreadContext *tc)
decltype(nullptr) constexpr NoFault
const std::string & name()
virtual BaseCPU * getCpuPtr()=0
DmaPort port
Port to issue translation requests from.
ThreadContext is the external interface to all thread state for anything outside of the CPU...
void finish(const Fault &fault, RequestPtr req, ThreadContext *tc, BaseTLB::Mode mode)
void dataStatic(T *p)
Set the data pointer to the following value that should not be freed.
The request is a page table walk.
virtual void annotate(AnnotationIDs id, uint64_t val)
Fault readDataTimed(ThreadContext *tc, Addr descAddr, Stage2Translation *translation, int numBytes, Request::Flags flags)
Fault readDataUntimed(ThreadContext *tc, Addr oVAddr, Addr descAddr, uint8_t *data, int numBytes, Request::Flags flags, bool isFunctional)
bool translateFunctional(ThreadContext *tc, Addr vaddr, Addr &paddr)
Do a functional lookup on the TLB (for debugging) and don't modify any internal state.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Stage2MMU(const Params *p)
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
ArmStage2MMUParams Params
This translation class is used to trigger the data fetch once a timing translation returns the transl...
Flags getFlags()
Accessor for flags.
Stage2Translation(Stage2MMU &_parent, uint8_t *_data, Event *_event, Addr _oVAddr)
The request should not cause a memory access.
void setMMU(Stage2MMU *m, MasterID master_id)
void setVirt(int asid, Addr vaddr, unsigned size, Flags flags, MasterID mid, Addr pc)
Set up a virtual (e.g., CPU) request in a previously allocated Request object.
void setVirt(Addr vaddr, int size, Request::Flags flags, int masterId)
Fault translateAtomic(RequestPtr req, ThreadContext *tc, Mode mode, ArmTranslationType tranType=NormalTran)
Tick sendAtomic(PacketPtr pkt)
Send an atomic request packet, where the data is moved and the state is updated in zero time...
std::shared_ptr< FaultBase > Fault
Abstract superclass for simulation objects.
void sendFunctional(PacketPtr pkt)
Send a functional request packet, where the data is instantly updated everywhere in the memory system...
ProbePointArg< PacketInfo > Packet
Packet probe point.
MasterID masterId
Request id for requests generated by this MMU.