From 023de5734c9862ec39fa6f9c77f4f0c2835dec4e Mon Sep 17 00:00:00 2001 From: Happy Date: Tue, 1 Mar 2016 10:23:13 -0700 Subject: [PATCH] Fix for mips3 compare timer. --- src/devices/cpu/mips/mips3com.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/devices/cpu/mips/mips3com.cpp b/src/devices/cpu/mips/mips3com.cpp index 2fcf8de1844..d0b4b53c534 100644 --- a/src/devices/cpu/mips/mips3com.cpp +++ b/src/devices/cpu/mips/mips3com.cpp @@ -70,16 +70,16 @@ void mips3_device::execute_set_input(int inputnum, int state) void mips3_device::mips3com_update_cycle_counting() { /* modify the timer to go off */ - if (m_core->compare_armed && (m_core->cpr[0][COP0_Status] & SR_IMEX5)) + if (m_core->compare_armed) { UINT32 count = (total_cycles() - m_core->count_zero_time) / 2; UINT32 compare = m_core->cpr[0][COP0_Compare]; UINT32 delta = compare - count; + m_core->compare_armed = 0; attotime newtime = cycles_to_attotime((UINT64)delta * 2); m_compare_int_timer->adjust(newtime); return; } - m_compare_int_timer->adjust(attotime::never); } @@ -199,6 +199,7 @@ void mips3_device::mips3com_tlbp() TIMER_CALLBACK_MEMBER( mips3_device::compare_int_callback ) { + m_compare_int_timer->adjust(attotime::never); set_input_line(MIPS3_IRQ5, ASSERT_LINE); }