mirror of
https://github.com/holub/mame
synced 2025-04-18 22:49:58 +03:00
cpu/m68000: For 68010 only, do not throw away buserr on prefetch (#13405)
This commit is contained in:
parent
3e29087147
commit
e0ea955d1b
@ -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()
|
void m68010_device::device_start()
|
||||||
{
|
{
|
||||||
m68000_musashi_device::device_start();
|
m68000_musashi_device::device_start();
|
||||||
|
@ -12,6 +12,7 @@ class m68010_device : public m68000_musashi_device
|
|||||||
public:
|
public:
|
||||||
// construction/destruction
|
// 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);
|
||||||
|
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;
|
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
|
||||||
|
|
||||||
|
@ -604,11 +604,14 @@ inline u32 m68ki_read_imm_16()
|
|||||||
result = MASK_OUT_ABOVE_16(m_pref_data);
|
result = MASK_OUT_ABOVE_16(m_pref_data);
|
||||||
m_pc += 2;
|
m_pc += 2;
|
||||||
if (!m_mmu_tmp_buserror_occurred) {
|
if (!m_mmu_tmp_buserror_occurred) {
|
||||||
|
|
||||||
// prefetch only if no bus error occurred in opcode fetch
|
// prefetch only if no bus error occurred in opcode fetch
|
||||||
m_pref_data = m68ki_ic_readimm16(m_pc);
|
m_pref_data = m68ki_ic_readimm16(m_pc);
|
||||||
m_pref_addr = m_mmu_tmp_buserror_occurred ? ~0 : m_pc;
|
m_pref_addr = m_mmu_tmp_buserror_occurred ? ~0 : m_pc;
|
||||||
// ignore bus error on prefetch
|
if (!CPU_TYPE_IS_010())
|
||||||
m_mmu_tmp_buserror_occurred = 0;
|
{
|
||||||
|
m_mmu_tmp_buserror_occurred = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
Reference in New Issue
Block a user