arch: Use getTlb in BaseMMU to reduce boilerplate

Change-Id: I22dcdf0769e854c252788d415d46da113cb8c60a
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/35735
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Giacomo Travaglini
2020-10-06 11:18:46 +01:00
parent f6a3e0a2fd
commit c1217f4e89

View File

@@ -51,6 +51,15 @@ class BaseMMU : public SimObject
: SimObject(p), dtb(p.dtb), itb(p.itb)
{}
BaseTLB*
getTlb(BaseTLB::Mode mode) const
{
if (mode == BaseTLB::Execute)
return itb;
else
return dtb;
}
public:
void
flushAll()
@@ -70,40 +79,28 @@ class BaseMMU : public SimObject
translateAtomic(const RequestPtr &req, ThreadContext *tc,
BaseTLB::Mode mode)
{
if (mode == BaseTLB::Execute)
return itb->translateAtomic(req, tc, mode);
else
return dtb->translateAtomic(req, tc, mode);
return getTlb(mode)->translateAtomic(req, tc, mode);
}
void
translateTiming(const RequestPtr &req, ThreadContext *tc,
BaseTLB::Translation *translation, BaseTLB::Mode mode)
{
if (mode == BaseTLB::Execute)
return itb->translateTiming(req, tc, translation, mode);
else
return dtb->translateTiming(req, tc, translation, mode);
return getTlb(mode)->translateTiming(req, tc, translation, mode);
}
Fault
translateFunctional(const RequestPtr &req, ThreadContext *tc,
BaseTLB::Mode mode)
{
if (mode == BaseTLB::Execute)
return itb->translateFunctional(req, tc, mode);
else
return dtb->translateFunctional(req, tc, mode);
return getTlb(mode)->translateFunctional(req, tc, mode);
}
Fault
finalizePhysical(const RequestPtr &req, ThreadContext *tc,
BaseTLB::Mode mode) const
{
if (mode == BaseTLB::Execute)
return itb->finalizePhysical(req, tc, mode);
else
return dtb->finalizePhysical(req, tc, mode);
return getTlb(mode)->finalizePhysical(req, tc, mode);
}
void takeOverFrom(BaseMMU *old_mmu);