41#ifndef __ARCH_GENERIC_TLB_HH__
42#define __ARCH_GENERIC_TLB_HH__
48#include "enums/TypeTLB.hh"
50#include "params/BaseTLB.hh"
81 panic(
"Not implemented.\n");
141 using T = std::underlying_type_t<TypeTLB>;
142 return static_cast<T
>(lhs) &
static_cast<T
>(rhs);
void memInvalidate()
Invalidate the contents of memory buffers.
BaseTLB(const BaseTLBParams &p)
BaseTLB * nextLevel() const
virtual Fault finalizePhysical(const RequestPtr &req, ThreadContext *tc, BaseMMU::Mode mode) const =0
Do post-translation physical address finalization.
virtual void translateTiming(const RequestPtr &req, ThreadContext *tc, BaseMMU::Translation *translation, BaseMMU::Mode mode)=0
virtual void flushAll()=0
Remove all entries from the TLB.
virtual void takeOverFrom(BaseTLB *otlb)=0
Take over from an old tlb context.
virtual Port * getTableWalkerPort()
Get the table walker port if present.
virtual void demapPage(Addr vaddr, uint64_t asn)=0
virtual Fault translateAtomic(const RequestPtr &req, ThreadContext *tc, BaseMMU::Mode mode)=0
virtual Fault translateFunctional(const RequestPtr &req, ThreadContext *tc, BaseMMU::Mode mode)
Ports are used to interface objects to each other.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
#define panic(...)
This implements a cprintf based panic() function.
SimObject(const Params &p)
Copyright (c) 2024 Arm Limited All rights reserved.
std::shared_ptr< FaultBase > Fault
std::shared_ptr< Request > RequestPtr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
auto operator&(TypeTLB lhs, TypeTLB rhs)
Implementing the "&" bitwise operator for TypeTLB allows us to handle TypeTLB::unified efficiently.
Declaration of a request, the overall memory request consisting of the parts of the request that are ...