summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Patrick Mackinlay <pmackinlay@hotmail.com>2023-03-24 14:08:42 +0700
committer Patrick Mackinlay <pmackinlay@hotmail.com>2023-03-24 17:24:53 +0700
commit564fa462ba1780ac89a909772a440c0ff2ad42be (patch)
treec9bd70c20fe9484078a3d2c102a987c364158b84 /src
parent2a6879c6a4692726ecae641aa9652453fd64bd28 (diff)
mc88200: invalidate colliding block address translation cache entries
Diffstat (limited to 'src')
-rw-r--r--src/devices/machine/mc88200.cpp12
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;
}