summaryrefslogtreecommitdiff
path: root/src/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm')
-rw-r--r--src/arch/arm/table_walker.cc24
-rw-r--r--src/arch/arm/table_walker.hh6
2 files changed, 15 insertions, 15 deletions
diff --git a/src/arch/arm/table_walker.cc b/src/arch/arm/table_walker.cc
index a10eb4a20..e4c6209d6 100644
--- a/src/arch/arm/table_walker.cc
+++ b/src/arch/arm/table_walker.cc
@@ -51,7 +51,7 @@
using namespace ArmISA;
TableWalker::TableWalker(const Params *p)
- : MemObject(p), port(this, params()->sys), drainEvent(NULL),
+ : MemObject(p), port(this, params()->sys), drainManager(NULL),
tlb(NULL), currState(NULL), pending(false),
masterId(p->sys->getMasterId(name())),
numSquashable(p->num_squash_per_cycle),
@@ -68,30 +68,30 @@ TableWalker::~TableWalker()
void
TableWalker::completeDrain()
{
- if (drainEvent && stateQueueL1.empty() && stateQueueL2.empty() &&
+ if (drainManager && stateQueueL1.empty() && stateQueueL2.empty() &&
pendingQueue.empty()) {
- changeState(Drained);
+ setDrainState(Drainable::Drained);
DPRINTF(Drain, "TableWalker done draining, processing drain event\n");
- drainEvent->process();
- drainEvent = NULL;
+ drainManager->signalDrainDone();
+ drainManager = NULL;
}
}
unsigned int
-TableWalker::drain(Event *de)
+TableWalker::drain(DrainManager *dm)
{
- unsigned int count = port.drain(de);
+ unsigned int count = port.drain(dm);
if (stateQueueL1.empty() && stateQueueL2.empty() &&
pendingQueue.empty()) {
- changeState(Drained);
+ setDrainState(Drainable::Drained);
DPRINTF(Drain, "TableWalker free, no need to drain\n");
// table walker is drained, but its ports may still need to be drained
return count;
} else {
- drainEvent = de;
- changeState(Draining);
+ drainManager = dm;
+ setDrainState(Drainable::Draining);
DPRINTF(Drain, "TableWalker not drained\n");
// return port drain count plus the table walker itself needs to drain
@@ -101,9 +101,9 @@ TableWalker::drain(Event *de)
}
void
-TableWalker::resume()
+TableWalker::drainResume()
{
- MemObject::resume();
+ Drainable::drainResume();
if ((params()->sys->getMemoryMode() == Enums::timing) && currState) {
delete currState;
currState = NULL;
diff --git a/src/arch/arm/table_walker.hh b/src/arch/arm/table_walker.hh
index 22c5d03b4..23464f56d 100644
--- a/src/arch/arm/table_walker.hh
+++ b/src/arch/arm/table_walker.hh
@@ -364,7 +364,7 @@ class TableWalker : public MemObject
SnoopingDmaPort port;
/** If we're draining keep the drain event around until we're drained */
- Event *drainEvent;
+ DrainManager *drainManager;
/** TLB that is initiating these table walks */
TLB *tlb;
@@ -397,8 +397,8 @@ class TableWalker : public MemObject
/** Checks if all state is cleared and if so, completes drain */
void completeDrain();
- virtual unsigned int drain(Event *de);
- virtual void resume();
+ unsigned int drain(DrainManager *dm);
+ void drainResume();
virtual BaseMasterPort& getMasterPort(const std::string &if_name,
PortID idx = InvalidPortID);