diff options
author | Derek Hower <drh5@cs.wisc.edu> | 2009-07-21 19:42:09 -0500 |
---|---|---|
committer | Derek Hower <drh5@cs.wisc.edu> | 2009-07-21 19:42:09 -0500 |
commit | 7f34ee36ec2c01d818bd2984745cbd4e62a7f549 (patch) | |
tree | d1ea8ee47327815b30f16409885e16e58af02a11 /src | |
parent | 80544cda8ae97d3041dcc1e078e22c70aba3a9a7 (diff) | |
download | gem5-7f34ee36ec2c01d818bd2984745cbd4e62a7f549.tar.xz |
ruby: fixed sequencer RMW data bug
Diffstat (limited to 'src')
-rw-r--r-- | src/mem/ruby/system/Sequencer.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/mem/ruby/system/Sequencer.cc b/src/mem/ruby/system/Sequencer.cc index 693e931aa..a030fc7c2 100644 --- a/src/mem/ruby/system/Sequencer.cc +++ b/src/mem/ruby/system/Sequencer.cc @@ -285,6 +285,7 @@ void Sequencer::readCallback(const Address& address, DataBlock& data) { removeRequest(request); assert((request->ruby_request.type == RubyRequestType_LD) || + (request->ruby_request.type == RubyRequestType_RMW_Read) || (request->ruby_request.type == RubyRequestType_IFETCH)); hitCallback(request, data); @@ -328,7 +329,8 @@ void Sequencer::hitCallback(SequencerRequest* srequest, DataBlock& data) { // update the data if (ruby_request.data != NULL) { if ((type == RubyRequestType_LD) || - (type == RubyRequestType_IFETCH)) { + (type == RubyRequestType_IFETCH) || + (type == RubyRequestType_RMW_Read)) { memcpy(ruby_request.data, data.getData(request_address.getOffset(), ruby_request.len), ruby_request.len); } else { data.setData(ruby_request.data, request_address.getOffset(), ruby_request.len); |