From 60579e8d74cecea5737a4502599ccf77e9e6a35e Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Sun, 10 Jul 2011 12:56:08 -0500 Subject: O3: Make sure fetch doesn't go off into the weeds during speculation. --- src/sim/system.cc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/sim/system.cc') diff --git a/src/sim/system.cc b/src/sim/system.cc index bb8eccf14..81a8a0574 100644 --- a/src/sim/system.cc +++ b/src/sim/system.cc @@ -83,6 +83,16 @@ System::System(Params *p) // add self to global system list systemList.push_back(this); + /** Keep track of all memories we can execute code out of + * in our system + */ + for (int x = 0; x < p->memories.size(); x++) { + if (!p->memories[x]) + continue; + memRanges.push_back(RangeSize(p->memories[x]->start(), + p->memories[x]->size())); + } + #if FULL_SYSTEM kernelSymtab = new SymbolTable; if (!debugSymbolTable) @@ -288,6 +298,17 @@ System::freeMemSize() #endif +bool +System::isMemory(const Addr addr) const +{ + std::list >::const_iterator i; + for (i = memRanges.begin(); i != memRanges.end(); i++) { + if (*i == addr) + return true; + } + return false; +} + void System::resume() { -- cgit v1.2.3