Closed Waccoon closed 1 year ago
Surprising that 68030 MMU + prefetch/cache emulation even works :) 68030 MMU is really complex and on the "wrong" side of cache and it is impossible to have really accurate timing without knowing how 68020/030 microcode works. 68040+ MMU emulation is much more simpler.
Yeah, I've wondered for a while why enabling MMU/EC mode makes the CPU run twice as fast as the base mode (and much faster than real hardware). I've been looking into fixing some timing issues, but it's likely this stuff falls into the "nobody cares" category, and I don't want to risk breaking anything.
Cache burst fill had wrong timing (memory delays added twice) and used logical address rather than physical address for memory bank checks. More work still needed to properly handle memory burst timing. Tested new MMU addressing with NetBSD 9.3 and Enforcer.