From 226981b2a65ee4c544bc595d7718de8225fda0b0 Mon Sep 17 00:00:00 2001
From: Polina Dudnik <pdudnik@gmail.com>
Date: Mon, 13 Jul 2009 11:13:29 -0500
Subject: Reintegrated Derek's functional implementation of atomics with a
 minor change: don't clear lock on failure

---
 src/mem/ruby/libruby.cc | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

(limited to 'src/mem/ruby/libruby.cc')

diff --git a/src/mem/ruby/libruby.cc b/src/mem/ruby/libruby.cc
index 987f4fd10..d21b29dec 100644
--- a/src/mem/ruby/libruby.cc
+++ b/src/mem/ruby/libruby.cc
@@ -19,8 +19,10 @@ string RubyRequestType_to_string(const RubyRequestType& obj)
     return "LD";
   case RubyRequestType_ST:
     return "ST";
-  case RubyRequestType_RMW:
-    return "RMW";
+  case RubyRequestType_RMW_Read:
+    return "RMW_Read";
+  case RubyRequestType_RMW_Write:
+    return "RMW_Write";
   case RubyRequestType_NULL:
   default:
     assert(0);
@@ -36,8 +38,10 @@ RubyRequestType string_to_RubyRequestType(std::string str)
     return RubyRequestType_LD;
   else if (str == "ST")
     return RubyRequestType_ST;
-  else if (str == "RMW")
-    return RubyRequestType_RMW;
+  else if (str == "RMW_Read")
+    return RubyRequestType_RMW_Read;
+  else if (str == "RMW_Write")
+    return RubyRequestType_RMW_Write;
   else
     assert(0);
   return RubyRequestType_NULL;
-- 
cgit v1.2.3


From 7606c71ea593f46843a0fa91983ae89139271728 Mon Sep 17 00:00:00 2001
From: Polina Dudnik <pdudnik@gmail.com>
Date: Mon, 13 Jul 2009 11:37:56 -0500
Subject: Replaced RMW with Locked. RMW will be used for the coherence-aided
 atomics other than LLSC

---
 src/mem/ruby/libruby.cc | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

(limited to 'src/mem/ruby/libruby.cc')

diff --git a/src/mem/ruby/libruby.cc b/src/mem/ruby/libruby.cc
index d21b29dec..d35600960 100644
--- a/src/mem/ruby/libruby.cc
+++ b/src/mem/ruby/libruby.cc
@@ -19,10 +19,10 @@ string RubyRequestType_to_string(const RubyRequestType& obj)
     return "LD";
   case RubyRequestType_ST:
     return "ST";
-  case RubyRequestType_RMW_Read:
-    return "RMW_Read";
-  case RubyRequestType_RMW_Write:
-    return "RMW_Write";
+  case RubyRequestType_Locked_Read:
+    return "Locked_Read";
+  case RubyRequestType_Locked_Write:
+    return "Locked_Write";
   case RubyRequestType_NULL:
   default:
     assert(0);
@@ -38,10 +38,10 @@ RubyRequestType string_to_RubyRequestType(std::string str)
     return RubyRequestType_LD;
   else if (str == "ST")
     return RubyRequestType_ST;
-  else if (str == "RMW_Read")
-    return RubyRequestType_RMW_Read;
-  else if (str == "RMW_Write")
-    return RubyRequestType_RMW_Write;
+  else if (str == "Locked_Read")
+    return RubyRequestType_Locked_Read;
+  else if (str == "Locked_Write")
+    return RubyRequestType_Locked_Write;
   else
     assert(0);
   return RubyRequestType_NULL;
-- 
cgit v1.2.3


From 9a675a0391aa0c0463baf8bac0b9209b675306a8 Mon Sep 17 00:00:00 2001
From: Polina Dudnik <pdudnik@gmail.com>
Date: Mon, 13 Jul 2009 12:50:10 -0500
Subject: Changes to add tracing and replaying command-line options Trace is
 automatically ended upon a manual checkpoint

---
 src/mem/ruby/libruby.cc | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

(limited to 'src/mem/ruby/libruby.cc')

diff --git a/src/mem/ruby/libruby.cc b/src/mem/ruby/libruby.cc
index d35600960..185797f59 100644
--- a/src/mem/ruby/libruby.cc
+++ b/src/mem/ruby/libruby.cc
@@ -9,6 +9,7 @@
 #include "mem/ruby/eventqueue/RubyEventQueue.hh"
 #include "mem/ruby/system/MemoryVector.hh"
 #include "mem/ruby/common/Address.hh"
+#include "mem/ruby/recorder/Tracer.hh"
 
 string RubyRequestType_to_string(const RubyRequestType& obj)
 {
@@ -204,6 +205,20 @@ void libruby_print_stats(std::ostream & out)
 {
   RubySystem::printStats(out);
 }
+void libruby_playback_trace(char * trace_filename) 
+{
+  RubySystem::getTracer()->playbackTrace(trace_filename);
+}
+
+void libruby_start_tracing(char * record_filename) {
+  // start the trace
+  RubySystem::getTracer()->startTrace(record_filename);
+}
+
+void libruby_stop_tracing() {
+  // start the trace
+  RubySystem::getTracer()->stopTrace();
+}
 
 uint64_t libruby_get_time() {
   return RubySystem::getCycleCount(0);
-- 
cgit v1.2.3


From 5f551d9ca2b61fc97b9530334e538195a84589b3 Mon Sep 17 00:00:00 2001
From: Polina Dudnik <pdudnik@gmail.com>
Date: Mon, 13 Jul 2009 17:22:29 -0500
Subject: 1. Got rid of unused functions in DirectoryMemory 2. Reintroduced
 RMW_Read and RMW_Write 3. Defined -2 in the Sequencer as well as made a note
 about mandatory queue

Did not address the issues in the slicc because remaking the atomics altogether to allow
multiple processors to issue atomic requests at once
---
 src/mem/ruby/libruby.cc | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'src/mem/ruby/libruby.cc')

diff --git a/src/mem/ruby/libruby.cc b/src/mem/ruby/libruby.cc
index 185797f59..b867fec34 100644
--- a/src/mem/ruby/libruby.cc
+++ b/src/mem/ruby/libruby.cc
@@ -24,6 +24,10 @@ string RubyRequestType_to_string(const RubyRequestType& obj)
     return "Locked_Read";
   case RubyRequestType_Locked_Write:
     return "Locked_Write";
+  case RubyRequestType_RMW_Read:
+    return "RMW_Read";
+  case RubyRequestType_RMW_Write:
+    return "RMW_Write";
   case RubyRequestType_NULL:
   default:
     assert(0);
@@ -43,6 +47,10 @@ RubyRequestType string_to_RubyRequestType(std::string str)
     return RubyRequestType_Locked_Read;
   else if (str == "Locked_Write")
     return RubyRequestType_Locked_Write;
+  else if (str == "RMW_Read")
+    return RubyRequestType_RMW_Read;
+  else if (str == "RMW_Write")
+    return RubyRequestType_RMW_Write;
   else
     assert(0);
   return RubyRequestType_NULL;
-- 
cgit v1.2.3