From 4c2e5c282b334dcd263373c48d325c7f77847c61 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Mon, 15 Nov 2010 14:04:03 -0600 Subject: ARM: Add support for switching CPUs --- src/arch/arm/table_walker.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/arch/arm/table_walker.cc') diff --git a/src/arch/arm/table_walker.cc b/src/arch/arm/table_walker.cc index c7c00924d..98dc1760d 100644 --- a/src/arch/arm/table_walker.cc +++ b/src/arch/arm/table_walker.cc @@ -43,6 +43,7 @@ #include "dev/io_device.hh" #include "cpu/base.hh" #include "cpu/thread_context.hh" +#include "sim/system.hh" using namespace ArmISA; @@ -59,9 +60,10 @@ TableWalker::~TableWalker() } -unsigned int TableWalker::drain(Event *de) +unsigned int +TableWalker::drain(Event *de) { - if (stateQueueL1.size() != 0 || stateQueueL2.size() != 0) + if (stateQueueL1.size() || stateQueueL2.size() || pendingQueue.size()) { changeState(Draining); DPRINTF(Checkpoint, "TableWalker busy, wait to drain\n"); @@ -75,6 +77,16 @@ unsigned int TableWalker::drain(Event *de) } } +void +TableWalker::resume() +{ + MemObject::resume(); + if ((params()->sys->getMemoryMode() == Enums::timing) && currState) { + delete currState; + currState = NULL; + } +} + Port* TableWalker::getPort(const std::string &if_name, int idx) { -- cgit v1.2.3