diff options
Diffstat (limited to 'src/storage')
-rw-r--r-- | src/storage/cache.cc | 4 | ||||
-rw-r--r-- | src/storage/dram.cc | 10 | ||||
-rw-r--r-- | src/storage/storage.cc | 12 |
3 files changed, 12 insertions, 14 deletions
diff --git a/src/storage/cache.cc b/src/storage/cache.cc index 2630632..dccab47 100644 --- a/src/storage/cache.cc +++ b/src/storage/cache.cc @@ -87,7 +87,11 @@ Response Cache::is_access_cleared(Accessor accessor, int address) if (this->is_waiting) r = BLOCKED; else if (this->wait_time == 0) { + this->requester = IDLE; + this->wait_time = delay; r = OK; + } else { + --this->wait_time; } } return r; diff --git a/src/storage/dram.cc b/src/storage/dram.cc index 2c24b4b..371503d 100644 --- a/src/storage/dram.cc +++ b/src/storage/dram.cc @@ -80,9 +80,15 @@ Response Dram::is_access_cleared(Accessor accessor) else { if (this->requester == IDLE) this->requester = accessor; - if (this->requester == accessor) - if (this->wait_time == 0) + if (this->requester == accessor) { + if (this->wait_time == 0) { + this->requester = IDLE; + this->wait_time = delay; r = OK; + } else { + --this->wait_time; + } + } } return r; } diff --git a/src/storage/storage.cc b/src/storage/storage.cc index 8e2e461..fed607b 100644 --- a/src/storage/storage.cc +++ b/src/storage/storage.cc @@ -14,15 +14,3 @@ Storage::view(int base, int lines) const } Storage *Storage::get_lower() { return this->lower; } - -void Storage::resolve() -{ - if (this->lower) - this->lower->resolve(); - if (this->wait_time == 0) { - this->requester = IDLE; - this->wait_time = delay; - } else if (this->requester != IDLE && !this->is_waiting) { - --this->wait_time; - } -} |