29a30
> #include "mem/ruby/libruby.hh"
363c364
< bool Sequencer::isReady(const RubyRequest& request, bool dont_set) {
---
> int Sequencer::isReady(const RubyRequest& request) {
368c369
< return false;
---
> return LIBRUBY_BUFFER_FULL;
375c376
< return false;
---
> return LIBRUBY_ALIASED_REQUEST;
377,380c378,387
<
< if (m_servicing_atomic != 200 && m_servicing_atomic != request.proc_id) {
< assert(m_atomics_counter > 0);
< return false;
---
>
> if (request.type == RubyRequestType_RMW_Read) {
> if (m_servicing_atomic == 200) {
> assert(m_atomics_counter == 0);
> m_servicing_atomic = request.proc_id;
> }
> else {
> assert(m_servicing_atomic == request.proc_id);
> }
> m_atomics_counter++;
383,392c390,393
< if (!dont_set) {
< if (request.type == RubyRequestType_RMW_Read) {
< if (m_servicing_atomic == 200) {
< assert(m_atomics_counter == 0);
< m_servicing_atomic = request.proc_id;
< }
< else {
< assert(m_servicing_atomic == request.proc_id);
< }
< m_atomics_counter++;
---
> if (m_servicing_atomic == request.proc_id) {
> if (request.type != RubyRequestType_RMW_Write) {
> m_servicing_atomic = 200;
> m_atomics_counter = 0;
394,401d394
< else {
< if (m_servicing_atomic == request.proc_id) {
< if (request.type != RubyRequestType_RMW_Write) {
< m_servicing_atomic = 200;
< m_atomics_counter = 0;
< }
< }
< }
405c398
< return true;
---
> return 1;
416c409,410
< if (isReady(request)) {
---
> int ready = isReady(request);
> if (ready > 0) {
444c438
< return -1;
---
> return ready;