summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m68000/m68kcpu.h
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2016-11-26 22:01:01 -0500
committer arbee <rb6502@users.noreply.github.com>2016-11-26 22:01:01 -0500
commitcc979fbbf3be702bd085a02f7d4a5f6f6378f1dd (patch)
treecf0ed4573b356c9be34df8ba78e78161c2a4967c /src/devices/cpu/m68000/m68kcpu.h
parentf3a89482f28c08f833a61d48d4ecd98993b89d6d (diff)
m68k: respect 68020 "freeze I-cache" bit; micro20 68020 cache test now passes [R. Belmont]
Diffstat (limited to 'src/devices/cpu/m68000/m68kcpu.h')
-rw-r--r--src/devices/cpu/m68000/m68kcpu.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/devices/cpu/m68000/m68kcpu.h b/src/devices/cpu/m68000/m68kcpu.h
index 2d3d7c27fb0..d8c977cca7b 100644
--- a/src/devices/cpu/m68000/m68kcpu.h
+++ b/src/devices/cpu/m68000/m68kcpu.h
@@ -689,9 +689,15 @@ static inline uint32_t m68ki_ic_readimm16(m68000_base_device *m68k, uint32_t add
// do a cache fill if the line is invalid or the tags don't match
if ((!m68k->ic_valid[idx]) || (m68k->ic_address[idx] != tag))
{
+ // if the cache is frozen, don't update it
+ if (m68k->cacr & M68K_CACR_FI)
+ {
+ return m68k->readimm16(address);
+ }
+
uint32_t data = m68k->read32(address & ~3);
-// printf("m68k: doing cache fill at %08x (tag %08x idx %d)\n", address, tag, idx);
+ //printf("m68k: doing cache fill at %08x (tag %08x idx %d)\n", address, tag, idx);
// if no buserror occurred, validate the tag
if (!m68k->mmu_tmp_buserror_occurred)