summaryrefslogtreecommitdiff
path: root/src/mem/page_table.cc
diff options
context:
space:
mode:
authorRico Amslinger <rico.amslinger@informatik.uni-augsburg.de>2018-02-13 15:34:43 +0100
committerRico Amslinger <rico.amslinger@informatik.uni-augsburg.de>2018-02-14 09:52:38 +0000
commit8da5e6b8b6fc1665edefffdf36c0aa7b9d53370d (patch)
tree3e452b4d6b3072152bc181fdeeef29f57d168b8c /src/mem/page_table.cc
parent4e13495f5d8e1e98609fd67b9b29c67eaeb753fc (diff)
downloadgem5-8da5e6b8b6fc1665edefffdf36c0aa7b9d53370d.tar.xz
mem, sim-se: Fixed seg-fault in EmulationPageTable::remap
When moving a memory region the target region should be unmapped. The assertion does reflect this, but the following line accesses the invalid pointer regardless. This commit replaces the pointer access with an emplace. Change-Id: I85f9be4e6c223eab447c75043e593ed3f90017e1 Reviewed-on: https://gem5-review.googlesource.com/8261 Reviewed-by: Gabe Black <gabeblack@google.com> Reviewed-by: Brandon Potter <Brandon.Potter@amd.com> Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/mem/page_table.cc')
-rw-r--r--src/mem/page_table.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mem/page_table.cc b/src/mem/page_table.cc
index 8a11ada76..cd3422560 100644
--- a/src/mem/page_table.cc
+++ b/src/mem/page_table.cc
@@ -87,7 +87,7 @@ EmulationPageTable::remap(Addr vaddr, int64_t size, Addr new_vaddr)
auto old_it = pTable.find(vaddr);
assert(old_it != pTable.end() && new_it == pTable.end());
- new_it->second = old_it->second;
+ pTable.emplace(new_vaddr, old_it->second);
pTable.erase(old_it);
size -= pageSize;
vaddr += pageSize;