Add blocksize functions to physical memory. Fix the port we were using in the proces...
authorRon Dreslinski <rdreslin@umich.edu>
Tue, 21 Feb 2006 18:39:01 +0000 (13:39 -0500)
committerRon Dreslinski <rdreslin@umich.edu>
Tue, 21 Feb 2006 18:39:01 +0000 (13:39 -0500)
mem/physical.cc:
    Implement the blockSize function, return VMPageSize for the physical memory
mem/port.hh:
    Add a function to get a pointer to a peer, needed for initVirtMem to work in the loader.
sim/process.cc:
    The way the translating port is setup we don't want the memory port, we want the peer port associated with that memory.  We may need to revisit this.

--HG--
extra : convert_revision : 46a51d448d1683db7bd5afe64adbe167a5743060

mem/physical.cc
mem/port.hh
sim/process.cc

index 02563ac70bf81a6b3bd3f904f952d7257bd83ab4..031d832dda6cf50f734a1623897682f1deee8e0a 100644 (file)
@@ -164,6 +164,13 @@ PhysicalMemory::prot_memset(Addr addr, uint8_t val, int size)
     memset(pmem_addr + addr - base_addr, val, size);
 }
 
+int
+PhysicalMemory::deviceBlockSize()
+{
+    //For now the largest accesses we can take are Page Sized
+    return VMPageSize;
+}
+
 void
 PhysicalMemory::serialize(ostream &os)
 {
index c6dcb5d811318ca33777686cf5860b4830fe757b..88cca885be2a44c29432d177eb97253b393ee027 100644 (file)
@@ -93,6 +93,11 @@ class Port
     */
     void setPeer(Port *port) { peer = port; }
 
+        /** Function to set the pointer for the peer port.
+        @todo should be called by the configuration stuff (python).
+    */
+    Port *getPeer(Port *port) { return peer; }
+
   protected:
 
     /** These functions are protected because they should only be
index 013ac0890b2f3b1c7583b05f73c86c3997ce3998..2335d5cc82fd0f88cbb23b61e21a4c6472c1d616 100644 (file)
@@ -154,7 +154,7 @@ Process::startup()
     if (execContexts.empty())
         fatal("Process %s is not associated with any CPUs!\n", name());
 
-    initVirtMem = new TranslatingPort(system->physmem->getPort("any"), pTable);
+    initVirtMem = new TranslatingPort((system->physmem->getPort("any"))->getPeer(), pTable);
 
     // first exec context for this process... initialize & enable
     ExecContext *xc = execContexts[0];