MEM: Remove the functional ports from the memory system
authorWilliam Wang <william.wang@arm.com>
Tue, 17 Jan 2012 18:55:09 +0000 (12:55 -0600)
committerWilliam Wang <william.wang@arm.com>
Tue, 17 Jan 2012 18:55:09 +0000 (12:55 -0600)
The functional ports are no longer used and this patch cleans up the
legacy that is still present in buses, memories, CPUs etc. Note that
this does not refer to the class FunctionalPort (already removed), but
rather ports with the name (and use) functional.

src/mem/bus.cc
src/mem/bus.hh
src/mem/cache/cache_impl.hh
src/mem/physical.cc
src/mem/ruby/system/RubyPort.cc

index 00caa82894a796a50565a347950133ebf63b3ddc..ea1ec7322e300945ff43bb00d2544e922e59d351 100644 (file)
@@ -59,7 +59,7 @@ Bus::Bus(const BusParams *p)
     : MemObject(p), busId(p->bus_id), clock(p->clock),
       headerCycles(p->header_cycles), width(p->width), tickNextIdle(0),
       drainEvent(NULL), busIdle(this), inRetry(false), maxId(0),
-      defaultPort(NULL), funcPort(NULL), funcPortId(-4),
+      defaultPort(NULL),
       useDefaultRange(p->use_default_range), defaultBlockSize(p->block_size),
       cachedBlockSize(0), cachedBlockSizeValid(false)
 {
@@ -87,16 +87,6 @@ Bus::getPort(const std::string &if_name, int idx)
             fatal("Default port already set\n");
     }
     int id;
-    if (if_name == "functional") {
-        if (!funcPort) {
-            id = maxId++;
-            funcPort = new BusPort(csprintf("%s-p%d-func", name(), id), this, id);
-            funcPortId = id;
-            interfaces[id] = funcPort;
-        }
-        return funcPort;
-    }
-
     // if_name ignored?  forced to be empty?
     id = maxId++;
     assert(maxId < std::numeric_limits<typeof(maxId)>::max());
@@ -546,7 +536,7 @@ Bus::recvRangeChange(int id)
     m5::hash_map<short,BusPort*>::iterator intIter;
 
     for (intIter = interfaces.begin(); intIter != interfaces.end(); intIter++)
-        if (intIter->first != id && intIter->first != funcPortId)
+        if (intIter->first != id)
             intIter->second->sendRangeChange();
 
     if (id != defaultId && defaultPort)
index 6c1b4c19611d5dcda4bc6e08c74ed1def15ecd3c..2ad17cf3bd34e635537074ddf97ced0762fabcdc 100644 (file)
@@ -333,9 +333,6 @@ class Bus : public MemObject
     /** Port that handles requests that don't match any of the interfaces.*/
     BusPort *defaultPort;
 
-    BusPort *funcPort;
-    int funcPortId;
-
     /** If true, use address range provided by default device.  Any
        address not handled by another port and not in default device's
        range will cause a fatal error.  If false, just send all
index 46692a8d3fb0b789633c16277aa8c7b857ca2121..13484eb79f26610b53cde7abca77a347f267f164 100644 (file)
@@ -103,13 +103,7 @@ Cache<TagStore>::getPort(const std::string &if_name, int idx)
         return cpuSidePort;
     } else if (if_name == "mem_side") {
         return memSidePort;
-    } else if (if_name == "functional") {
-        CpuSidePort *funcPort =
-            new CpuSidePort(name() + "-cpu_side_funcport", this,
-                            "CpuSideFuncPort");
-        funcPort->setOtherPort(memSidePort);
-        return funcPort;
-    } else {
+    }  else {
         panic("Port name %s unrecognized\n", if_name);
     }
 }
index bab6e868c31e60c7c9dd2d2b8ba2ddf127cb4214..8b319940baa8d3b35bcb8fc34acce808e7faf05d 100644 (file)
@@ -372,13 +372,6 @@ PhysicalMemory::doFunctionalAccess(PacketPtr pkt)
 Port *
 PhysicalMemory::getPort(const std::string &if_name, int idx)
 {
-    // Accept request for "functional" port for backwards compatibility
-    // with places where this function is called from C++.  I'd prefer
-    // to move all these into Python someday.
-    if (if_name == "functional") {
-        return new MemoryPort(csprintf("%s-functional", name()), this);
-    }
-
     if (if_name != "port") {
         panic("PhysicalMemory::getPort: unknown port %s requested", if_name);
     }
index 59c9bb19d679743be1576cdd6fb6dc1f5a9b300a..ce9973402e7c4cbc010c635e854e256f315df391 100644 (file)
@@ -93,14 +93,6 @@ RubyPort::getPort(const std::string &if_name, int idx)
         return physMemPort;
     }
 
-    if (if_name == "functional") {
-        // Calls for the functional port only want to access
-        // functional memory.  Therefore, directly pass these calls
-        // ports to physmem.
-        assert(physmem != NULL);
-        return physmem->getPort(if_name, idx);
-    }
-
     return NULL;
 }