diff options
author | Uri Wiener <uri.wiener@arm.com> | 2013-04-22 13:20:33 -0400 |
---|---|---|
committer | Uri Wiener <uri.wiener@arm.com> | 2013-04-22 13:20:33 -0400 |
commit | a8fbfefb5e0fd3b45d6961b07a172018c87c0251 (patch) | |
tree | dbc13a043ab0c0daa0da3913ee349c933fc94ac6 /src/mem/cache/tags/lru.cc | |
parent | 9929e884b6fe6567c3bd2fe2dd3bba85d4e9bbd1 (diff) | |
download | gem5-a8fbfefb5e0fd3b45d6961b07a172018c87c0251.tar.xz |
mem: Adding verbose debug output in the memory system
This patch provides useful printouts throughut the memory system. This
includes pretty-printed cache tags and function call messages
(call-stack like).
Diffstat (limited to 'src/mem/cache/tags/lru.cc')
-rw-r--r-- | src/mem/cache/tags/lru.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/mem/cache/tags/lru.cc b/src/mem/cache/tags/lru.cc index 00b13e2d8..f515ed053 100644 --- a/src/mem/cache/tags/lru.cc +++ b/src/mem/cache/tags/lru.cc @@ -1,4 +1,16 @@ /* + * Copyright (c) 2012 ARM Limited + * All rights reserved. + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 2003-2005 The Regents of The University of Michigan * All rights reserved. * @@ -36,6 +48,7 @@ #include <string> #include "base/intmath.hh" +#include "debug/Cache.hh" #include "debug/CacheRepl.hh" #include "mem/cache/tags/cacheset.hh" #include "mem/cache/tags/lru.hh" @@ -226,6 +239,23 @@ LRU::clearLocks() } } +std::string +LRU::print() const { + std::string cache_state; + for (unsigned i = 0; i < numSets; ++i) { + // link in the data blocks + for (unsigned j = 0; j < assoc; ++j) { + BlkType *blk = sets[i].blks[j]; + if (blk->isValid()) + cache_state += csprintf("\tset: %d block: %d %s\n", i, j, + blk->print()); + } + } + if (cache_state.empty()) + cache_state = "no valid tags\n"; + return cache_state; +} + void LRU::cleanupRefs() { |