diff --git a/src/iss/arch/wt_cache.h b/src/iss/arch/wt_cache.h index 967d464..61e64fe 100644 --- a/src/iss/arch/wt_cache.h +++ b/src/iss/arch/wt_cache.h @@ -119,7 +119,7 @@ template iss::status iss::arch::wt_cache::read_cache(phys_ icache_ptr.reset(new cache::cache(size, line_sz, ways)); dcache_ptr.reset(new cache::cache(size, line_sz, ways)); } - if((a.val & io_addr_mask) != io_address) { + if((a.access & iss::access_type::FETCH)== iss::access_type::FETCH || (a.val & io_addr_mask) != io_address) { auto set_addr = (a.val & (size - 1)) >> util::ilog2(line_sz * ways); auto tag_addr = a.val >> util::ilog2(line_sz); auto& set = (is_fetch(a.access) ? icache_ptr : dcache_ptr)->sets[set_addr];