mem-cache: alias to mem::getMasterPort in TLB class
TLB:getMasterPort is used to obtain the PageWalkMasterPort if present and hides the BaseTLB::getMasterPort(). The TLB::getMasterPort() is renamed according to the expected behavior. Change-Id: If4f61189094a706d59805cd10f4f814e5830eda8 Reviewed-on: https://gem5-review.googlesource.com/c/16648 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
@@ -1244,7 +1244,7 @@ TLB::translateComplete(const RequestPtr &req, ThreadContext *tc,
|
||||
}
|
||||
|
||||
BaseMasterPort*
|
||||
TLB::getMasterPort()
|
||||
TLB::getTableWalkerMasterPort()
|
||||
{
|
||||
return &stage2Mmu->getPort();
|
||||
}
|
||||
|
||||
@@ -401,7 +401,7 @@ class TLB : public BaseTLB
|
||||
*
|
||||
* @return A pointer to the walker master port
|
||||
*/
|
||||
BaseMasterPort* getMasterPort() override;
|
||||
BaseMasterPort* getTableWalkerMasterPort() override;
|
||||
|
||||
// Caching misc register values here.
|
||||
// Writing to misc registers needs to invalidate them.
|
||||
|
||||
@@ -58,6 +58,7 @@ class BaseTLB : public MemObject
|
||||
{}
|
||||
|
||||
public:
|
||||
|
||||
enum Mode { Read, Write, Execute };
|
||||
|
||||
class Translation
|
||||
@@ -138,7 +139,7 @@ class BaseTLB : public MemObject
|
||||
*
|
||||
* @return A pointer to the walker master port or NULL if not present
|
||||
*/
|
||||
virtual BaseMasterPort* getMasterPort() { return NULL; }
|
||||
virtual BaseMasterPort* getTableWalkerMasterPort() { return NULL; }
|
||||
|
||||
void memInvalidate() { flushAll(); }
|
||||
};
|
||||
|
||||
@@ -512,7 +512,7 @@ TLB::unserialize(CheckpointIn &cp)
|
||||
}
|
||||
|
||||
BaseMasterPort *
|
||||
TLB::getMasterPort()
|
||||
TLB::getTableWalkerMasterPort()
|
||||
{
|
||||
return &walker->getMasterPort("port");
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ namespace X86ISA
|
||||
*
|
||||
* @return A pointer to the walker master port
|
||||
*/
|
||||
BaseMasterPort *getMasterPort() override;
|
||||
BaseMasterPort *getTableWalkerMasterPort() override;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -621,10 +621,14 @@ BaseCPU::takeOverFrom(BaseCPU *oldCPU)
|
||||
ThreadContext::compare(oldTC, newTC);
|
||||
*/
|
||||
|
||||
BaseMasterPort *old_itb_port = oldTC->getITBPtr()->getMasterPort();
|
||||
BaseMasterPort *old_dtb_port = oldTC->getDTBPtr()->getMasterPort();
|
||||
BaseMasterPort *new_itb_port = newTC->getITBPtr()->getMasterPort();
|
||||
BaseMasterPort *new_dtb_port = newTC->getDTBPtr()->getMasterPort();
|
||||
BaseMasterPort *old_itb_port =
|
||||
oldTC->getITBPtr()->getTableWalkerMasterPort();
|
||||
BaseMasterPort *old_dtb_port =
|
||||
oldTC->getDTBPtr()->getTableWalkerMasterPort();
|
||||
BaseMasterPort *new_itb_port =
|
||||
newTC->getITBPtr()->getTableWalkerMasterPort();
|
||||
BaseMasterPort *new_dtb_port =
|
||||
newTC->getDTBPtr()->getTableWalkerMasterPort();
|
||||
|
||||
// Move over any table walker ports if they exist
|
||||
if (new_itb_port) {
|
||||
@@ -652,13 +656,13 @@ BaseCPU::takeOverFrom(BaseCPU *oldCPU)
|
||||
CheckerCPU *newChecker = newTC->getCheckerCpuPtr();
|
||||
if (oldChecker && newChecker) {
|
||||
BaseMasterPort *old_checker_itb_port =
|
||||
oldChecker->getITBPtr()->getMasterPort();
|
||||
oldChecker->getITBPtr()->getTableWalkerMasterPort();
|
||||
BaseMasterPort *old_checker_dtb_port =
|
||||
oldChecker->getDTBPtr()->getMasterPort();
|
||||
oldChecker->getDTBPtr()->getTableWalkerMasterPort();
|
||||
BaseMasterPort *new_checker_itb_port =
|
||||
newChecker->getITBPtr()->getMasterPort();
|
||||
newChecker->getITBPtr()->getTableWalkerMasterPort();
|
||||
BaseMasterPort *new_checker_dtb_port =
|
||||
newChecker->getDTBPtr()->getMasterPort();
|
||||
newChecker->getDTBPtr()->getTableWalkerMasterPort();
|
||||
|
||||
newChecker->getITBPtr()->takeOverFrom(oldChecker->getITBPtr());
|
||||
newChecker->getDTBPtr()->takeOverFrom(oldChecker->getDTBPtr());
|
||||
|
||||
Reference in New Issue
Block a user