39#ifndef __ARCH_RISCV_TABLE_WALKER_HH__
40#define __ARCH_RISCV_TABLE_WALKER_HH__
52#include "params/RiscvPagetableWalker.hh"
121 const RequestPtr &_req,
bool _isFunctional =
false) :
130 bool _isTiming =
false);
214 using Params = RiscvPagetableWalkerParams;
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
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.
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
Based on the RISC-V ISA privileged specifications V1.11, there is no implementation guidelines on the...
This class helps to implement RISCV's physical memory protection (pmp) primitive.
WalkerPort(const std::string &_name, Walker *_walker)
void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
Fault startFunctional(Addr &addr, unsigned &logBytes)
bool recvPacket(PacketPtr pkt)
std::vector< PacketPtr > writes
void setupWalk(Addr vaddr)
Fault stepWalk(PacketPtr &write)
WalkerState(Walker *_walker, BaseMMU::Translation *_translation, const RequestPtr &_req, bool _isFunctional=false)
BaseMMU::Translation * translation
Fault pageFault(bool present)
unsigned numInflight() const
Fault startFunctional(ThreadContext *_tc, Addr &addr, unsigned &logBytes, BaseMMU::Mode mode)
EventFunctionWrapper startWalkWrapperEvent
Event used to call startWalkWrapper.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
bool sendTiming(WalkerState *sendingState, PacketPtr pkt)
gem5::RiscvISA::Walker::PagewalkerStats pagewalkerstats
bool recvTimingResp(PacketPtr pkt)
std::list< WalkerState * > currStates
Fault start(ThreadContext *_tc, BaseMMU::Translation *translation, const RequestPtr &req, BaseMMU::Mode mode)
RiscvPagetableWalkerParams Params
Walker(const Params ¶ms)
ThreadContext is the external interface to all thread state for anything outside of the CPU.
This is a simple scalar statistic, like a counter.
ClockedObject declaration and implementation.
virtual void initState()
initState() is called on each SimObject when not restoring from a checkpoint.
const Params & params() const
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::shared_ptr< FaultBase > Fault
std::shared_ptr< Request > RequestPtr
const PortID InvalidPortID
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
Declaration of the Packet class.
Declaration of Statistics objects.
A virtual base opaque structure used to hold state associated with the packet (e.g....
PagewalkerStats(statistics::Group *parent)
statistics::Scalar num_4kb_walks
statistics::Scalar num_2mb_walks
WalkerSenderState(WalkerState *_senderWalk)