diff options
Diffstat (limited to 'src/storage')
-rw-r--r-- | src/storage/dram.cc | 5 | ||||
-rw-r--r-- | src/storage/storage.cc | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/storage/dram.cc b/src/storage/dram.cc index 5b4c63b..7197668 100644 --- a/src/storage/dram.cc +++ b/src/storage/dram.cc @@ -23,9 +23,10 @@ Response Dram::write(Accessor accessor, signed int data, int address) r = OK; } else { /* Do this first--then process the first cycle immediately. */ - this->deque.push_back(accessor); + if (this->requester == IDLE) + this->requester = accessor; - if (this->deque.front() == accessor) { + if (this->requester == accessor) { if (this->wait_time == 0) { this->do_write(data, address); r = OK; diff --git a/src/storage/storage.cc b/src/storage/storage.cc index 429f8aa..e3067a2 100644 --- a/src/storage/storage.cc +++ b/src/storage/storage.cc @@ -24,9 +24,9 @@ void Storage::do_write(signed data, int address) void Storage::resolve() { if (this->wait_time == 0) { - this->deque.pop_front(); + this->requester = IDLE; this->wait_time = delay; - } else if (!this->deque.empty()) { + } else if (this->requester != IDLE) { --this->wait_time; } } |