summaryrefslogtreecommitdiff
path: root/src/mem/ruby
diff options
context:
space:
mode:
authorPolina Dudnik <pdudnik@gmail.com>2009-08-15 12:45:11 -0500
committerPolina Dudnik <pdudnik@gmail.com>2009-08-15 12:45:11 -0500
commit6654fe02daf6285cb43aa1c6e0e35f6c9c8786f1 (patch)
treef0aa578fb78e4f7e2acd708a64c2a1e3b6591bf9 /src/mem/ruby
parenta8e11cf3bbb3cdb1e49a4bc0ae8e2e47fbc8400d (diff)
downloadgem5-6654fe02daf6285cb43aa1c6e0e35f6c9c8786f1.tar.xz
Made servicing_atomic a counter and added started writes:
a function for setting the flag to indicate that the rmw_writes started issuing
Diffstat (limited to 'src/mem/ruby')
-rw-r--r--src/mem/ruby/slicc_interface/AbstractController.hh1
-rw-r--r--src/mem/ruby/system/Sequencer.cc3
2 files changed, 4 insertions, 0 deletions
diff --git a/src/mem/ruby/slicc_interface/AbstractController.hh b/src/mem/ruby/slicc_interface/AbstractController.hh
index 329730ffd..7da3d317a 100644
--- a/src/mem/ruby/slicc_interface/AbstractController.hh
+++ b/src/mem/ruby/slicc_interface/AbstractController.hh
@@ -22,6 +22,7 @@ public:
virtual const string getName() const = 0; // return instance name
virtual const MachineType getMachineType() const = 0;
virtual void set_atomic(Address addr) = 0;
+ virtual void started_writes() = 0;
virtual void clear_atomic() = 0;
virtual void print(ostream & out) const = 0;
diff --git a/src/mem/ruby/system/Sequencer.cc b/src/mem/ruby/system/Sequencer.cc
index eb3430b7f..780c1128e 100644
--- a/src/mem/ruby/system/Sequencer.cc
+++ b/src/mem/ruby/system/Sequencer.cc
@@ -416,6 +416,9 @@ int64_t Sequencer::makeRequest(const RubyRequest & request)
m_dataCache_ptr->clearLocked(line_address(Address(request.paddr)));
}
}
+ if (request.type == RubyRequestType_RMW_Write) {
+ m_controller->started_writes();
+ }
issueRequest(request);
// TODO: issue hardware prefetches here