diff --git a/src/sim/mem_pool.cc b/src/sim/mem_pool.cc index 2614ad5ff8..f568e28a4a 100644 --- a/src/sim/mem_pool.cc +++ b/src/sim/mem_pool.cc @@ -33,14 +33,14 @@ #include "sim/mem_pool.hh" -#include "sim/system.hh" +#include "base/logging.hh" namespace gem5 { -MemPool::MemPool(System *system, Addr ptr, Addr limit) - : sys(system), freePageNum(ptr >> sys->getPageShift()), - _totalPages(limit >> sys->getPageShift()) +MemPool::MemPool(Addr page_shift, Addr ptr, Addr limit) + : pageShift(page_shift), freePageNum(ptr >> page_shift), + _totalPages(limit >> page_shift) { } @@ -59,7 +59,7 @@ MemPool::setFreePage(Counter value) Addr MemPool::freePageAddr() const { - return freePageNum << sys->getPageShift(); + return freePageNum << pageShift; } Counter @@ -83,19 +83,19 @@ MemPool::freePages() const Addr MemPool::allocatedBytes() const { - return allocatedPages() << sys->getPageShift(); + return allocatedPages() << pageShift; } Addr MemPool::freeBytes() const { - return freePages() << sys->getPageShift(); + return freePages() << pageShift; } Addr MemPool::totalBytes() const { - return totalPages() << sys->getPageShift(); + return totalPages() << pageShift; } Addr diff --git a/src/sim/mem_pool.hh b/src/sim/mem_pool.hh index e8bd439156..49523f4e10 100644 --- a/src/sim/mem_pool.hh +++ b/src/sim/mem_pool.hh @@ -45,7 +45,7 @@ class System; class MemPool { private: - System *sys; + Addr pageShift; /** Page number to free memory. */ Counter freePageNum; @@ -54,7 +54,7 @@ class MemPool Counter _totalPages; public: - MemPool(System *system, Addr ptr, Addr limit); + MemPool(Addr page_shift, Addr ptr, Addr limit); Counter freePage() const; void setFreePage(Counter value); diff --git a/src/sim/system.cc b/src/sim/system.cc index 299ba66873..38952762b1 100644 --- a/src/sim/system.cc +++ b/src/sim/system.cc @@ -236,9 +236,10 @@ System::System(const Params &p) if (_m5opRange.valid()) { // Make sure the m5op range is not included. for (const auto &range: mem.exclude({_m5opRange})) - memPools.emplace_back(this, range.start(), range.end()); + memPools.emplace_back(getPageShift(), + range.start(), range.end()); } else { - memPools.emplace_back(this, mem.start(), mem.end()); + memPools.emplace_back(getPageShift(), mem.start(), mem.end()); } } @@ -468,7 +469,7 @@ System::unserialize(CheckpointIn &cp) assert(ptrs.size() == limits.size()); for (size_t i = 0; i < ptrs.size(); i++) - memPools.emplace_back(this, ptrs[i], limits[i]); + memPools.emplace_back(getPageShift(), ptrs[i], limits[i]); // also unserialize the memories in the system physmem.unserializeSection(cp, "physmem");