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.
Abstract superclass for simulation objects.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
#define panic(...)
This implements a cprintf based panic() function.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria 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 ...