diff options
Diffstat (limited to 'src/arch/arm/table_walker.cc')
-rw-r--r-- | src/arch/arm/table_walker.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/arch/arm/table_walker.cc b/src/arch/arm/table_walker.cc index ddf9fe5d3..c7c00924d 100644 --- a/src/arch/arm/table_walker.cc +++ b/src/arch/arm/table_walker.cc @@ -59,10 +59,20 @@ TableWalker::~TableWalker() } -unsigned int -drain(Event *de) +unsigned int TableWalker::drain(Event *de) { - panic("Not implemented\n"); + if (stateQueueL1.size() != 0 || stateQueueL2.size() != 0) + { + changeState(Draining); + DPRINTF(Checkpoint, "TableWalker busy, wait to drain\n"); + return 1; + } + else + { + changeState(Drained); + DPRINTF(Checkpoint, "TableWalker free, no need to drain\n"); + return 0; + } } Port* |