Ruby: Add support for functional accesses
[gem5.git] / src / mem / ruby / network / Network.cc
index f2e056f756a2bd2b02effb78babc399b6fa74d44..adb90eba99326575f075dbfa6ffb2dde49c1d101 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include "base/misc.hh"
 #include "mem/protocol/MachineType.hh"
 #include "mem/ruby/network/Network.hh"
-#include "mem/ruby/network/simple/Topology.hh"
+#include "mem/ruby/network/Topology.hh"
 
 Network::Network(const Params *p)
     : SimObject(p)
 {
     m_virtual_networks = p->number_of_virtual_networks;
     m_topology_ptr = p->topology;
-    m_buffer_size = p->buffer_size;
-    m_endpoint_bandwidth = p->endpoint_bandwidth;
-    m_adaptive_routing = p->adaptive_routing;
-    m_link_latency = p->link_latency;
     m_control_msg_size = p->control_msg_size;
 
     // Total nodes/controllers in network
@@ -51,6 +48,7 @@ Network::Network(const Params *p)
 
     // Initialize the controller's network pointers
     m_topology_ptr->initNetworkPtr(this);
+    p->ruby_system->registerNetwork(this);
 }
 
 void
@@ -64,13 +62,15 @@ Network::MessageSizeType_to_int(MessageSizeType size_type)
 {
     switch(size_type) {
       case MessageSizeType_Undefined:
-        ERROR_MSG("Can't convert Undefined MessageSizeType to integer");
+        panic("Can't convert Undefined MessageSizeType to integer");
         break;
       case MessageSizeType_Control:
       case MessageSizeType_Request_Control:
       case MessageSizeType_Reissue_Control:
       case MessageSizeType_Response_Control:
       case MessageSizeType_Writeback_Control:
+      case MessageSizeType_Broadcast_Control:
+      case MessageSizeType_Multicast_Control:
       case MessageSizeType_Forwarded_Control:
       case MessageSizeType_Invalidate_Control:
       case MessageSizeType_Unblock_Control:
@@ -84,10 +84,9 @@ Network::MessageSizeType_to_int(MessageSizeType size_type)
       case MessageSizeType_Writeback_Data:
         return m_data_msg_size;
       default:
-        ERROR_MSG("Invalid range for type MessageSizeType");
+        panic("Invalid range for type MessageSizeType");
         break;
     }
-    return 0;
 }
 
 const std::vector<Throttle*>*