aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2019-03-17 01:07:01 +0100
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2019-03-17 01:07:01 +0100
commitf44ecd1e02c0f4760124a95b5019f67d0e77ecb7 (patch)
tree8fee484f9778fb8509c262c34dd7f2974d7105dd /qtmips_machine
parent8b5298566773275b5c8423dace3396a325f38541 (diff)
downloadqtmips-f44ecd1e02c0f4760124a95b5019f67d0e77ecb7.tar.gz
qtmips-f44ecd1e02c0f4760124a95b5019f67d0e77ecb7.tar.bz2
qtmips-f44ecd1e02c0f4760124a95b5019f67d0e77ecb7.zip
Highlight actual word read or written to the cache.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine')
-rw-r--r--qtmips_machine/cache.cpp6
-rw-r--r--qtmips_machine/cache.h3
2 files changed, 5 insertions, 4 deletions
diff --git a/qtmips_machine/cache.cpp b/qtmips_machine/cache.cpp
index 961ab49..ec6a021 100644
--- a/qtmips_machine/cache.cpp
+++ b/qtmips_machine/cache.cpp
@@ -179,7 +179,7 @@ void Cache::flush() {
for (unsigned st = 0; st < cnf.sets(); st++)
if (dt[as][st].valid) {
kick(as, st);
- emit cache_update(as, st, 0, false, false, 0, 0);
+ emit cache_update(as, st, 0, false, false, 0, 0, false);
}
change_counter++;
update_statistics();
@@ -264,7 +264,7 @@ void Cache::reset() {
if (cnf.enabled()) {
for (unsigned as = 0; as < cnf.associativity(); as++)
for (unsigned st = 0; st < cnf.sets(); st++)
- emit cache_update(as, st, 0, false, false, 0, 0);
+ emit cache_update(as, st, 0, false, false, 0, 0, false);
}
}
@@ -415,7 +415,7 @@ bool Cache::access(std::uint32_t address, std::uint32_t *data, bool write, std::
cd.data[col] = value;
}
- emit cache_update(indx, row, col, cd.valid, cd.dirty, cd.tag, cd.data);
+ emit cache_update(indx, row, col, cd.valid, cd.dirty, cd.tag, cd.data, write);
if (changed)
change_counter++;
return changed;
diff --git a/qtmips_machine/cache.h b/qtmips_machine/cache.h
index 2602f0b..324d55a 100644
--- a/qtmips_machine/cache.h
+++ b/qtmips_machine/cache.h
@@ -76,7 +76,8 @@ signals:
void hit_update(unsigned) const;
void miss_update(unsigned) const;
void statistics_update(unsigned stalled_cycles, double speed_improv, double hit_rate) const;
- void cache_update(unsigned associat, unsigned set, unsigned col, bool valid, bool dirty, std::uint32_t tag, const std::uint32_t *data) const;
+ void cache_update(unsigned associat, unsigned set, unsigned col, bool valid, bool dirty,
+ std::uint32_t tag, const std::uint32_t *data, bool write) const;
void memory_writes_update(unsigned) const;
void memory_reads_update(unsigned) const;