cpu/m68000: For 68010 only, do not throw away buserr on prefetch (#13405)

This commit is contained in:
Adam Billyard 2025-03-31 17:04:48 +01:00 committed by GitHub
parent 3e29087147
commit e0ea955d1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 11 additions and 2 deletions

View File

@ -18,6 +18,11 @@ m68010_device::m68010_device(const machine_config &mconfig, const char *tag, dev
{
}
m68010_device::m68010_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock, address_map_constructor internal_map)
: m68000_musashi_device(mconfig, tag, owner, clock, M68010, 16,24, internal_map)
{
}
void m68010_device::device_start()
{
m68000_musashi_device::device_start();

View File

@ -12,6 +12,7 @@ class m68010_device : public m68000_musashi_device
public:
// construction/destruction
m68010_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
m68010_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock, address_map_constructor internal_map);
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;

View File

@ -604,11 +604,14 @@ inline u32 m68ki_read_imm_16()
result = MASK_OUT_ABOVE_16(m_pref_data);
m_pc += 2;
if (!m_mmu_tmp_buserror_occurred) {
// prefetch only if no bus error occurred in opcode fetch
m_pref_data = m68ki_ic_readimm16(m_pc);
m_pref_addr = m_mmu_tmp_buserror_occurred ? ~0 : m_pc;
// ignore bus error on prefetch
m_mmu_tmp_buserror_occurred = 0;
if (!CPU_TYPE_IS_010())
{
m_mmu_tmp_buserror_occurred = 0;
}
}
return result;