diff options
author | Brad Beckmann <Brad.Beckmann@amd.com> | 2011-04-06 14:41:41 -0700 |
---|---|---|
committer | Brad Beckmann <Brad.Beckmann@amd.com> | 2011-04-06 14:41:41 -0700 |
commit | 95faf1904bb9d0e66e9007e1ce15d7201342a25b (patch) | |
tree | fe7545990e5066c6ab19437616e5be7a3657ae17 /src | |
parent | afa897403d72725a6965366647232937e90df5b6 (diff) | |
download | gem5-95faf1904bb9d0e66e9007e1ce15d7201342a25b.tar.xz |
ruby: fixes to support more types of RubyRequests
Diffstat (limited to 'src')
-rw-r--r-- | src/mem/ruby/system/Sequencer.cc | 9 |
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(), |