diff options
Diffstat (limited to 'src/mem')
-rw-r--r-- | src/mem/multi_level_page_table.hh | 3 | ||||
-rw-r--r-- | src/mem/page_table.hh | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/mem/multi_level_page_table.hh b/src/mem/multi_level_page_table.hh index bd40d37c1..f517eafe8 100644 --- a/src/mem/multi_level_page_table.hh +++ b/src/mem/multi_level_page_table.hh @@ -204,6 +204,9 @@ public: void initState(ThreadContext* tc) override { + if (shared) + return; + _basePtr = prepTopTable<EntryTypes...>(system, pageSize); } diff --git a/src/mem/page_table.hh b/src/mem/page_table.hh index 447d3a50f..03e18c2d0 100644 --- a/src/mem/page_table.hh +++ b/src/mem/page_table.hh @@ -75,7 +75,7 @@ class EmulationPageTable : public Serializable EmulationPageTable( const std::string &__name, uint64_t _pid, Addr _pageSize) : pageSize(_pageSize), offsetMask(mask(floorLog2(_pageSize))), - _pid(_pid), _name(__name) + _pid(_pid), _name(__name), shared(false) { assert(isPowerOf2(pageSize)); } @@ -96,6 +96,9 @@ class EmulationPageTable : public Serializable ReadOnly = 8, }; + // flag which marks the page table as shared among software threads + bool shared; + virtual void initState(ThreadContext* tc) {}; // for DPRINTF compatibility |