diff options
| author | 2023-03-24 14:08:42 +0700 | |
|---|---|---|
| committer | 2023-03-24 17:24:53 +0700 | |
| commit | 564fa462ba1780ac89a909772a440c0ff2ad42be (patch) | |
| tree | c9bd70c20fe9484078a3d2c102a987c364158b84 /src | |
| parent | 2a6879c6a4692726ecae641aa9652453fd64bd28 (diff) | |
mc88200: invalidate colliding block address translation cache entries
Diffstat (limited to 'src')
| -rw-r--r-- | src/devices/machine/mc88200.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/devices/machine/mc88200.cpp b/src/devices/machine/mc88200.cpp index ea32fc4f5f8..c9d5983eeb6 100644 --- a/src/devices/machine/mc88200.cpp +++ b/src/devices/machine/mc88200.cpp @@ -374,6 +374,18 @@ void mc88200_device::bwp_w(offs_t offset, u32 data) { LOG("bwp_w %x,0x%08x (%s)\n", offset, data, machine().describe_context()); + if (data & BATC_V) + { + for (unsigned i = 0; i < std::size(m_batc); i++) + { + if ((i != offset) && (m_batc[i] & BATC_V) && BIT(m_batc[i], 19, 13) == BIT(data, 19, 13)) + { + logerror("duplicate batc entry 0x%08x invalidated (%s)\n", data, machine().describe_context()); + data &= ~BATC_V; + } + } + } + m_batc[offset] = data; } |
