diff --git a/src/mem/ruby/system/CacheMemory.cc b/src/mem/ruby/system/CacheMemory.cc index 9f1fe6320..393612355 100644 --- a/src/mem/ruby/system/CacheMemory.cc +++ b/src/mem/ruby/system/CacheMemory.cc @@ -339,12 +339,12 @@ CacheMemory::lookup(const Address& address) const void CacheMemory::setMRU(const Address& address) { - Index cacheSet; + Index cacheSet = addressToCacheSet(address); + int loc = findTagInSet(cacheSet, address); - cacheSet = addressToCacheSet(address); - m_replacementPolicy_ptr-> - touch(cacheSet, findTagInSet(cacheSet, address), - g_eventQueue_ptr->getTime()); + if(loc != -1) + m_replacementPolicy_ptr-> + touch(cacheSet, loc, g_eventQueue_ptr->getTime()); } void diff --git a/src/mem/ruby/system/Sequencer.cc b/src/mem/ruby/system/Sequencer.cc index 1cd54d45c..5f64a1ba4 100644 --- a/src/mem/ruby/system/Sequencer.cc +++ b/src/mem/ruby/system/Sequencer.cc @@ -482,11 +482,9 @@ Sequencer::hitCallback(SequencerRequest* srequest, // Set this cache entry to the most recently used if (type == RubyRequestType_IFETCH) { - if (m_instCache_ptr->isTagPresent(request_line_address)) - m_instCache_ptr->setMRU(request_line_address); + m_instCache_ptr->setMRU(request_line_address); } else { - if (m_dataCache_ptr->isTagPresent(request_line_address)) - m_dataCache_ptr->setMRU(request_line_address); + m_dataCache_ptr->setMRU(request_line_address); } assert(g_eventQueue_ptr->getTime() >= issued_time);