System: Fix the check which detects running out of physical memory.
authorGabe Black <gblack@eecs.umich.edu>
Fri, 3 Feb 2012 07:54:25 +0000 (23:54 -0800)
committerGabe Black <gblack@eecs.umich.edu>
Fri, 3 Feb 2012 07:54:25 +0000 (23:54 -0800)
The code that checks whether pages allocated by allocPhysPages only checks
that the first page fits into physical memory, not that all of them do. This
change makes the code check the last page which should work properly. This
function used to only allocate one page at a time, so the first page and last
page used to be the same thing.

src/sim/system.cc

index 83610a1020ef9997a1e5dddb217494747c3904d8..47791beaa5fb71af443269a9818e7d45f77c0b97 100644 (file)
@@ -296,7 +296,7 @@ System::allocPhysPages(int npages)
 {
     Addr return_addr = pagePtr << LogVMPageSize;
     pagePtr += npages;
-    if (return_addr >= physmem->size())
+    if (return_addr + npages - 1 >= physmem->size())
         fatal("Out of memory, please increase size of physical memory.");
     return return_addr;
 }