summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/emu/cpu/s2650/s2650.c3
-rw-r--r--src/emu/devcpu.c2
-rw-r--r--src/emu/diexec.c4
3 files changed, 8 insertions, 1 deletions
diff --git a/src/emu/cpu/s2650/s2650.c b/src/emu/cpu/s2650/s2650.c
index 4b73f2da0f8..6f710e5f530 100644
--- a/src/emu/cpu/s2650/s2650.c
+++ b/src/emu/cpu/s2650/s2650.c
@@ -890,7 +890,8 @@ static CPU_EXECUTE( s2650 )
s2650c->icount = cycles;
/* check for external irqs */
- s2650c->icount -= check_irq_line(s2650c);
+ int irqcycles = check_irq_line(s2650c);
+ s2650c->icount -= irqcycles;
do
{
diff --git a/src/emu/devcpu.c b/src/emu/devcpu.c
index 2bf5d32b0cf..9f9a4d752aa 100644
--- a/src/emu/devcpu.c
+++ b/src/emu/devcpu.c
@@ -312,6 +312,8 @@ void cpu_device::device_start()
// get our icount pointer
m_icount = reinterpret_cast<int *>(get_legacy_runtime_ptr(CPUINFO_PTR_INSTRUCTION_COUNTER));
+ assert(m_icount != 0);
+ *m_icount = 0;
}
diff --git a/src/emu/diexec.c b/src/emu/diexec.c
index 02766c063b6..47fb9f0e826 100644
--- a/src/emu/diexec.c
+++ b/src/emu/diexec.c
@@ -476,6 +476,7 @@ attotime device_execute_interface::local_time() const
attotime result = m_localtime;
if (is_executing())
{
+ assert(m_cycles_running >= *m_icount);
int cycles = m_cycles_running - *m_icount;
result = attotime_add(result, m_device.clocks_to_attotime(cycles));
}
@@ -491,7 +492,10 @@ attotime device_execute_interface::local_time() const
UINT64 device_execute_interface::total_cycles() const
{
if (is_executing())
+ {
+ assert(m_cycles_running >= *m_icount);
return m_totalcycles + m_cycles_running - *m_icount;
+ }
else
return m_totalcycles;
}