summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrad Beckmann <Brad.Beckmann@amd.com>2011-04-06 14:41:41 -0700
committerBrad Beckmann <Brad.Beckmann@amd.com>2011-04-06 14:41:41 -0700
commit95faf1904bb9d0e66e9007e1ce15d7201342a25b (patch)
treefe7545990e5066c6ab19437616e5be7a3657ae17 /src
parentafa897403d72725a6965366647232937e90df5b6 (diff)
downloadgem5-95faf1904bb9d0e66e9007e1ce15d7201342a25b.tar.xz
ruby: fixes to support more types of RubyRequests
Diffstat (limited to 'src')
-rw-r--r--src/mem/ruby/system/Sequencer.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mem/ruby/system/Sequencer.cc b/src/mem/ruby/system/Sequencer.cc
index 94d41ffe4..0d8120330 100644
--- a/src/mem/ruby/system/Sequencer.cc
+++ b/src/mem/ruby/system/Sequencer.cc
@@ -229,6 +229,7 @@ Sequencer::insertRequest(SequencerRequest* request)
Address line_addr(request->ruby_request.m_PhysicalAddress);
line_addr.makeLineAddress();
if ((request->ruby_request.m_Type == RubyRequestType_ST) ||
+ (request->ruby_request.m_Type == RubyRequestType_ATOMIC) ||
(request->ruby_request.m_Type == RubyRequestType_RMW_Read) ||
(request->ruby_request.m_Type == RubyRequestType_RMW_Write) ||
(request->ruby_request.m_Type == RubyRequestType_Load_Linked) ||
@@ -381,6 +382,7 @@ Sequencer::writeCallback(const Address& address,
markRemoved();
assert((request->ruby_request.m_Type == RubyRequestType_ST) ||
+ (request->ruby_request.m_Type == RubyRequestType_ATOMIC) ||
(request->ruby_request.m_Type == RubyRequestType_RMW_Read) ||
(request->ruby_request.m_Type == RubyRequestType_RMW_Write) ||
(request->ruby_request.m_Type == RubyRequestType_Load_Linked) ||
@@ -648,6 +650,7 @@ Sequencer::issueRequest(const RubyRequest& request)
//
case RubyRequestType_Load_Linked:
case RubyRequestType_Store_Conditional:
+ case RubyRequestType_ATOMIC:
ctype = RubyRequestType_ATOMIC;
break;
default:
@@ -671,8 +674,10 @@ Sequencer::issueRequest(const RubyRequest& request)
Address line_addr(request.m_PhysicalAddress);
line_addr.makeLineAddress();
- int proc_id = request.pkt->req->hasContextId() ?
- request.pkt->req->contextId() : -1;
+ int proc_id = -1;
+ if (request.pkt != NULL && request.pkt->req->hasContextId()) {
+ proc_id = request.pkt->req->contextId();
+ }
RubyRequest *msg = new RubyRequest(request.m_PhysicalAddress.getAddress(),
request.data, request.m_Size,
request.m_ProgramCounter.getAddress(),