SE: Fix simulating more than 4GB of RAM in SE mode
authorAli Saidi <Ali.Saidi@ARM.com>
Sat, 20 Nov 2010 00:01:01 +0000 (18:01 -0600)
committerAli Saidi <Ali.Saidi@ARM.com>
Sat, 20 Nov 2010 00:01:01 +0000 (18:01 -0600)
This change removes some dead code in PhysicalMemory, uses a 64 bit type
for the page pointer in System (instead of 32 bit) and cleans up some style.

src/mem/physical.cc
src/mem/physical.hh
src/sim/system.cc
src/sim/system.hh

index c24300cad44e5c261161871e4d06038104a73a37..937fb80a2758a84c1832c31c40bd1a7b7b7f0f6e 100644 (file)
@@ -68,8 +68,7 @@ using namespace std;
 using namespace TheISA;
 
 PhysicalMemory::PhysicalMemory(const Params *p)
-    : MemObject(p), pmemAddr(NULL), pagePtr(0),
-      lat(p->latency), lat_var(p->latency_var),
+    : MemObject(p), pmemAddr(NULL), lat(p->latency), lat_var(p->latency_var),
       _size(params()->range.size()), _start(params()->range.start)
 {
     if (size() % TheISA::PageBytes != 0)
@@ -124,16 +123,6 @@ PhysicalMemory::~PhysicalMemory()
         munmap((char*)pmemAddr, size());
 }
 
-Addr
-PhysicalMemory::new_page()
-{
-    Addr return_addr = pagePtr << LogVMPageSize;
-    return_addr += start();
-
-    ++pagePtr;
-    return return_addr;
-}
-
 unsigned
 PhysicalMemory::deviceBlockSize() const
 {
index a19db4d9d5c4d73d52af20322fbca3418e0bf954..cd6d809e240dd9a6c265b4cc3ee38dec1cb4e7dc 100644 (file)
@@ -148,7 +148,6 @@ class PhysicalMemory : public MemObject
     }
 
     uint8_t *pmemAddr;
-    int pagePtr;
     Tick lat;
     Tick lat_var;
     std::vector<MemoryPort*> ports;
@@ -157,7 +156,6 @@ class PhysicalMemory : public MemObject
     uint64_t _size;
     uint64_t _start;
   public:
-    Addr new_page();
     uint64_t size() { return _size; }
     uint64_t start() { return _start; }
 
index 58e765b89ba55bdcbb3e9f405738eda3b82773aa..d590adc91ff26d80033bfb476e9fcf504693a6be 100644 (file)
@@ -67,8 +67,8 @@ System::System(Params *p)
       init_param(p->init_param),
       loadAddrMask(p->load_addr_mask),
 #else
-      page_ptr(0),
-      next_PID(0),
+      pagePtr(0),
+      nextPID(0),
 #endif
       memoryMode(p->mem_mode), _params(p)
 {
@@ -255,8 +255,8 @@ System::replaceThreadContext(ThreadContext *tc, int context_id)
 Addr
 System::new_page()
 {
-    Addr return_addr = page_ptr << LogVMPageSize;
-    ++page_ptr;
+    Addr return_addr = pagePtr << LogVMPageSize;
+    ++pagePtr;
     if (return_addr >= physmem->size())
         fatal("Out of memory, please increase size of physical memory.");
     return return_addr;
@@ -271,7 +271,7 @@ System::memSize()
 Addr
 System::freeMemSize()
 {
-   return physmem->size() - (page_ptr << LogVMPageSize);
+   return physmem->size() - (pagePtr << LogVMPageSize);
 }
 
 #endif
@@ -282,7 +282,8 @@ System::serialize(ostream &os)
 #if FULL_SYSTEM
     kernelSymtab->serialize("kernel_symtab", os);
 #else // !FULL_SYSTEM
-    SERIALIZE_SCALAR(page_ptr);
+    SERIALIZE_SCALAR(pagePtr);
+    SERIALIZE_SCALAR(nextPID);
 #endif
 }
 
@@ -293,7 +294,8 @@ System::unserialize(Checkpoint *cp, const string &section)
 #if FULL_SYSTEM
     kernelSymtab->unserialize("kernel_symtab", cp, section);
 #else // !FULL_SYSTEM
-    UNSERIALIZE_SCALAR(page_ptr);
+    UNSERIALIZE_SCALAR(pagePtr);
+    UNSERIALIZE_SCALAR(nextPID);
 #endif
 }
 
index 45244662392df75df1a89d2c8886519ae72cbb1f..cdf7d3d7e9d606c6a4c796a867fb10eacbdcfc43 100644 (file)
@@ -137,15 +137,15 @@ class System : public SimObject
 
 #else
 
-    int page_ptr;
+    Addr pagePtr;
 
   protected:
-    uint64_t next_PID;
+    uint64_t nextPID;
 
   public:
     uint64_t allocatePID()
     {
-        return next_PID++;
+        return nextPID++;
     }
 
     /** Amount of physical memory that is still free */