sim: Fixes for mremap
authorMatthew Poremba <matthew.poremba@amd.com>
Tue, 12 May 2020 14:56:07 +0000 (09:56 -0500)
committerMatthew Poremba <matthew.poremba@amd.com>
Thu, 14 May 2020 00:29:17 +0000 (00:29 +0000)
Remapping memory was trying to map old pages to the same new page and
calling MemState mapRegion unnecessarily. Properly increment the new
page address and remove the redundant mapRegion as remapRegion covers
its functionality.

JIRA: https://gem5.atlassian.net/browse/GEM5-475
Change-Id: Ie360755cfe488b09cbd87cd0ce525b11ac446b51
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28948
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/sim/mem_state.cc
src/sim/syscall_emul.hh

index 42d37819fac212e4fd056a70c05450f749553e7a..f998fffe9a24eaa693b4ed6c25caa8489e672ffd 100644 (file)
@@ -369,6 +369,7 @@ MemState::remapRegion(Addr start_addr, Addr new_start_addr, Addr length)
                                          new_start_addr);
 
         start_addr += _pageBytes;
+        new_start_addr += _pageBytes;
 
         /**
          * The regions need to always be page-aligned otherwise the while
index 5bd9f54f3ca3b865bc217bbc2102cfd17e2c52a4..290c48e59970256533451721e7da121e6688af01 100644 (file)
@@ -1177,7 +1177,6 @@ mremapFunc(SyscallDesc *desc, ThreadContext *tc,
 
                 warn("returning %08p as start\n", new_start);
                 p->memState->remapRegion(start, new_start, old_length);
-                p->memState->mapRegion(new_start, new_length, "remapped");
                 return new_start;
             }
         }