diff options
author | Polina Dudnik <pdudnik@gmail.com> | 2009-08-28 15:09:41 -0500 |
---|---|---|
committer | Polina Dudnik <pdudnik@gmail.com> | 2009-08-28 15:09:41 -0500 |
commit | a02dbd61f9b3fdd1bf93857795f4f92a295fc3db (patch) | |
tree | 82fee0352a8fd9cf24ed5b44cd0cfbadc8b02691 /src/mem | |
parent | 95da6dc84cda1a68f43799960bf0a0077ae8b5e7 (diff) | |
download | gem5-a02dbd61f9b3fdd1bf93857795f4f92a295fc3db.tar.xz |
Reset the atomics flags if RMW_Read is not followed by a RMW_Read or RMW_Write
Diffstat (limited to 'src/mem')
-rw-r--r-- | src/mem/slicc/symbols/StateMachine.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mem/slicc/symbols/StateMachine.cc b/src/mem/slicc/symbols/StateMachine.cc index 0a3d4a85d..86f92b692 100644 --- a/src/mem/slicc/symbols/StateMachine.cc +++ b/src/mem/slicc/symbols/StateMachine.cc @@ -862,7 +862,19 @@ void StateMachine::printCWakeup(ostream& out, string component) assert(0); \n \ } \n \ } \n \ - } \n \ + } \n \ + else { \n \ + if (servicing_atomic > 0) { \n \ + // reset \n \ + servicing_atomic = 0; \n \ + read_counter = 0; \n \ + started_receiving_writes = false; \n \ + locked_read_request1 = Address(-1); \n \ + locked_read_request2 = Address(-1); \n \ + locked_read_request3 = Address(-1); \n \ + locked_read_request4 = Address(-1); \n \ + } \n \ + } \n \ "; output.insert(pos, atomics_string); /*string foo = "// Cannot do anything with this transition, go check next doable transition (mostly likely of next port)\n"; |