summaryrefslogtreecommitdiff
path: root/src/mem/ruby/slicc_interface
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2013-01-14 10:05:10 -0600
committerNilay Vaish <nilay@cs.wisc.edu>2013-01-14 10:05:10 -0600
commit20129837186a5eb28a1b1e2f8dcd441934af68a6 (patch)
treeab8daf1e72d64ec8ffadc6bdce4129c891dd3c8d /src/mem/ruby/slicc_interface
parentcf232de4615f0fe9435d6e92a1d6319c972a8c88 (diff)
downloadgem5-20129837186a5eb28a1b1e2f8dcd441934af68a6.tar.xz
Ruby: remove reference to g_system_ptr from class Message
This patch was initiated so as to remove reference to g_system_ptr, the pointer to Ruby System that is used for getting the current time. That simple change actual requires changing a lot many things in slicc and garnet. All these changes are related to how time is handled. In most of the places, g_system_ptr has been replaced by another clock object. The changes have been done under the assumption that all the components in the memory system are on the same clock frequency, but the actual clocks might be distributed.
Diffstat (limited to 'src/mem/ruby/slicc_interface')
-rw-r--r--src/mem/ruby/slicc_interface/Message.hh9
-rw-r--r--src/mem/ruby/slicc_interface/NetworkMessage.hh6
-rw-r--r--src/mem/ruby/slicc_interface/RubyRequest.hh17
-rw-r--r--src/mem/ruby/slicc_interface/RubySlicc_Util.hh5
4 files changed, 18 insertions, 19 deletions
diff --git a/src/mem/ruby/slicc_interface/Message.hh b/src/mem/ruby/slicc_interface/Message.hh
index 201ec4b60..74b405312 100644
--- a/src/mem/ruby/slicc_interface/Message.hh
+++ b/src/mem/ruby/slicc_interface/Message.hh
@@ -32,9 +32,8 @@
#include <iostream>
#include "base/refcnt.hh"
-#include "mem/ruby/common/Global.hh"
#include "mem/ruby/common/TypeDefines.hh"
-#include "mem/ruby/system/System.hh"
+#include "mem/packet.hh"
class Message;
typedef RefCountingPtr<Message> MsgPtr;
@@ -42,9 +41,9 @@ typedef RefCountingPtr<Message> MsgPtr;
class Message : public RefCounted
{
public:
- Message()
- : m_time(g_system_ptr->getTime()),
- m_LastEnqueueTime(g_system_ptr->getTime()),
+ Message(Time curTime)
+ : m_time(curTime),
+ m_LastEnqueueTime(curTime),
m_DelayedCycles(0)
{ }
diff --git a/src/mem/ruby/slicc_interface/NetworkMessage.hh b/src/mem/ruby/slicc_interface/NetworkMessage.hh
index d2bcb1241..e26612e0f 100644
--- a/src/mem/ruby/slicc_interface/NetworkMessage.hh
+++ b/src/mem/ruby/slicc_interface/NetworkMessage.hh
@@ -36,16 +36,14 @@
#include "mem/ruby/common/NetDest.hh"
#include "mem/ruby/slicc_interface/Message.hh"
-class Address;
-
class NetworkMessage;
typedef RefCountingPtr<NetworkMessage> NetMsgPtr;
class NetworkMessage : public Message
{
public:
- NetworkMessage()
- : m_internal_dest_valid(false)
+ NetworkMessage(Time curTime)
+ : Message(curTime), m_internal_dest_valid(false)
{ }
NetworkMessage(const NetworkMessage &other)
diff --git a/src/mem/ruby/slicc_interface/RubyRequest.hh b/src/mem/ruby/slicc_interface/RubyRequest.hh
index a4dadc7a7..37b89dc8f 100644
--- a/src/mem/ruby/slicc_interface/RubyRequest.hh
+++ b/src/mem/ruby/slicc_interface/RubyRequest.hh
@@ -36,7 +36,6 @@
#include "mem/protocol/RubyAccessMode.hh"
#include "mem/protocol/RubyRequestType.hh"
#include "mem/ruby/common/Address.hh"
-#include "mem/packet.hh"
class RubyRequest : public Message
{
@@ -52,12 +51,12 @@ class RubyRequest : public Message
PacketPtr pkt;
unsigned m_contextId;
- RubyRequest() {}
- RubyRequest(uint64_t _paddr, uint8_t* _data, int _len, uint64_t _pc,
- RubyRequestType _type, RubyAccessMode _access_mode,
- PacketPtr _pkt, PrefetchBit _pb = PrefetchBit_No,
- unsigned _proc_id = 100)
- : m_PhysicalAddress(_paddr),
+ RubyRequest(Time curTime, uint64_t _paddr, uint8_t* _data, int _len,
+ uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode,
+ PacketPtr _pkt, PrefetchBit _pb = PrefetchBit_No,
+ unsigned _proc_id = 100)
+ : Message(curTime),
+ m_PhysicalAddress(_paddr),
m_Type(_type),
m_ProgramCounter(_pc),
m_AccessMode(_access_mode),
@@ -71,10 +70,8 @@ class RubyRequest : public Message
m_LineAddress.makeLineAddress();
}
- static RubyRequest*
- create()
+ RubyRequest(Time curTime) : Message(curTime)
{
- return new RubyRequest();
}
RubyRequest*
diff --git a/src/mem/ruby/slicc_interface/RubySlicc_Util.hh b/src/mem/ruby/slicc_interface/RubySlicc_Util.hh
index 06c540db5..178c4cd1e 100644
--- a/src/mem/ruby/slicc_interface/RubySlicc_Util.hh
+++ b/src/mem/ruby/slicc_interface/RubySlicc_Util.hh
@@ -130,6 +130,11 @@ mod(int val, int mod)
return val % mod;
}
+inline int max_tokens()
+{
+ return 1024;
+}
+
/**
* This function accepts an address, a data block and a packet. If the address
* range for the data block contains the address which the packet needs to