summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2011-09-29 20:02:54 +0000
committer Olivier Galibert <galibert@pobox.com>2011-09-29 20:02:54 +0000
commitc19d93027bb155b7190603ae8e9b21c573305df1 (patch)
treeaadaa65028a0992f344b07e29ab43743194996df /src/emu
parent040b619770dc20f484dda8933d43c3e0b7fa9cdd (diff)
m68k: Activate trace emulation and fix it [O. Galibert]
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/cpu/m68000/m68k_in.c78
-rw-r--r--src/emu/cpu/m68000/m68kcpu.c6
-rw-r--r--src/emu/cpu/m68000/m68kcpu.h30
-rw-r--r--src/emu/cpu/m68000/m68kfpu.c4
4 files changed, 53 insertions, 65 deletions
diff --git a/src/emu/cpu/m68000/m68k_in.c b/src/emu/cpu/m68000/m68k_in.c
index 16b6334e8a6..aadb1096a62 100644
--- a/src/emu/cpu/m68000/m68k_in.c
+++ b/src/emu/cpu/m68000/m68k_in.c
@@ -1824,7 +1824,7 @@ M68KMAKE_OP(andi, 16, tos, .)
if((mc68kcpu)->s_flag)
{
UINT32 src = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) & src);
return;
}
@@ -2263,7 +2263,7 @@ M68KMAKE_OP(bcc, 8, ., .)
{
if(M68KMAKE_CC)
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
return;
}
@@ -2277,7 +2277,7 @@ M68KMAKE_OP(bcc, 16, ., .)
{
UINT32 offset = OPER_I_16(mc68kcpu);
REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_16((mc68kcpu), offset);
return;
}
@@ -2294,7 +2294,7 @@ M68KMAKE_OP(bcc, 32, ., .)
{
UINT32 offset = OPER_I_32(mc68kcpu);
REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_32((mc68kcpu), offset);
return;
}
@@ -2305,7 +2305,7 @@ M68KMAKE_OP(bcc, 32, ., .)
{
if(M68KMAKE_CC)
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
return;
}
@@ -3141,7 +3141,7 @@ M68KMAKE_OP(bkpt, 0, ., .)
M68KMAKE_OP(bra, 8, ., .)
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
(mc68kcpu)->remaining_cycles = 0;
@@ -3152,7 +3152,7 @@ M68KMAKE_OP(bra, 16, ., .)
{
UINT32 offset = OPER_I_16(mc68kcpu);
REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_16((mc68kcpu), offset);
if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
(mc68kcpu)->remaining_cycles = 0;
@@ -3165,7 +3165,7 @@ M68KMAKE_OP(bra, 32, ., .)
{
UINT32 offset = OPER_I_32(mc68kcpu);
REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_32((mc68kcpu), offset);
if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
(mc68kcpu)->remaining_cycles = 0;
@@ -3173,7 +3173,7 @@ M68KMAKE_OP(bra, 32, ., .)
}
else
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
(mc68kcpu)->remaining_cycles = 0;
@@ -3225,7 +3225,7 @@ M68KMAKE_OP(bset, 8, s, .)
M68KMAKE_OP(bsr, 8, ., .)
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
}
@@ -3234,7 +3234,7 @@ M68KMAKE_OP(bsr, 8, ., .)
M68KMAKE_OP(bsr, 16, ., .)
{
UINT32 offset = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
REG_PC(mc68kcpu) -= 2;
m68ki_branch_16((mc68kcpu), offset);
@@ -3246,7 +3246,7 @@ M68KMAKE_OP(bsr, 32, ., .)
if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
{
UINT32 offset = OPER_I_32(mc68kcpu);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
REG_PC(mc68kcpu) -= 4;
m68ki_branch_32((mc68kcpu), offset);
@@ -3254,7 +3254,7 @@ M68KMAKE_OP(bsr, 32, ., .)
}
else
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
}
@@ -3294,7 +3294,7 @@ M68KMAKE_OP(callm, 32, ., .)
{
UINT32 ea = M68KMAKE_GET_EA_AY_32;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
REG_PC(mc68kcpu) += 2;
(void)ea; /* just to avoid an 'unused variable' warning */
logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
@@ -3315,7 +3315,7 @@ M68KMAKE_OP(cas, 8, ., .)
UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
(mc68kcpu)->n_flag = NFLAG_8(res);
(mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
(mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
@@ -3344,7 +3344,7 @@ M68KMAKE_OP(cas, 16, ., .)
UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
UINT32 res = dest - MASK_OUT_ABOVE_16(*compare);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
(mc68kcpu)->n_flag = NFLAG_16(res);
(mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
(mc68kcpu)->v_flag = VFLAG_SUB_16(*compare, dest, res);
@@ -3373,7 +3373,7 @@ M68KMAKE_OP(cas, 32, ., .)
UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
UINT32 res = dest - *compare;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
(mc68kcpu)->n_flag = NFLAG_32(res);
(mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
(mc68kcpu)->v_flag = VFLAG_SUB_32(*compare, dest, res);
@@ -3406,7 +3406,7 @@ M68KMAKE_OP(cas2, 16, ., .)
UINT32 dest2 = m68ki_read_16((mc68kcpu), ea2);
UINT32 res2;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
(mc68kcpu)->n_flag = NFLAG_16(res1);
(mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res1);
(mc68kcpu)->v_flag = VFLAG_SUB_16(*compare1, dest1, res1);
@@ -3451,7 +3451,7 @@ M68KMAKE_OP(cas2, 32, ., .)
UINT32 dest2 = m68ki_read_32((mc68kcpu), ea2);
UINT32 res2;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
(mc68kcpu)->n_flag = NFLAG_32(res1);
(mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res1);
(mc68kcpu)->v_flag = VFLAG_SUB_32(*compare1, dest1, res1);
@@ -4446,7 +4446,7 @@ M68KMAKE_OP(dbf, 16, ., .)
{
UINT32 offset = OPER_I_16(mc68kcpu);
REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_16((mc68kcpu), offset);
(mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
return;
@@ -4468,7 +4468,7 @@ M68KMAKE_OP(dbcc, 16, ., .)
{
UINT32 offset = OPER_I_16(mc68kcpu);
REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_branch_16((mc68kcpu), offset);
(mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
return;
@@ -4913,7 +4913,7 @@ M68KMAKE_OP(eori, 16, tos, .)
if((mc68kcpu)->s_flag)
{
UINT32 src = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) ^ src);
return;
}
@@ -5003,7 +5003,7 @@ M68KMAKE_OP(illegal, 0, ., .)
M68KMAKE_OP(jmp, 32, ., .)
{
m68ki_jump((mc68kcpu), M68KMAKE_GET_EA_AY_32);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
(mc68kcpu)->remaining_cycles = 0;
}
@@ -5012,7 +5012,7 @@ M68KMAKE_OP(jmp, 32, ., .)
M68KMAKE_OP(jsr, 32, ., .)
{
UINT32 ea = M68KMAKE_GET_EA_AY_32;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
m68ki_jump((mc68kcpu), ea);
}
@@ -6498,7 +6498,7 @@ M68KMAKE_OP(move, 16, tos, .)
if((mc68kcpu)->s_flag)
{
UINT32 new_sr = M68KMAKE_GET_OPER_AY_16;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_set_sr((mc68kcpu), new_sr);
return;
}
@@ -6521,7 +6521,7 @@ M68KMAKE_OP(move, 32, tou, .)
{
if((mc68kcpu)->s_flag)
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
REG_USP(mc68kcpu) = AY(mc68kcpu);
return;
}
@@ -6537,7 +6537,7 @@ M68KMAKE_OP(movec, 32, cr, .)
{
UINT32 word2 = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
switch (word2 & 0xfff)
{
case 0x000: /* SFC */
@@ -6667,7 +6667,7 @@ M68KMAKE_OP(movec, 32, rc, .)
{
UINT32 word2 = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
switch (word2 & 0xfff)
{
case 0x000: /* SFC */
@@ -7102,7 +7102,7 @@ M68KMAKE_OP(moves, 8, ., .)
UINT32 word2 = OPER_I_16(mc68kcpu);
UINT32 ea = M68KMAKE_GET_EA_AY_8;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
if(BIT_B(word2)) /* Register to memory */
{
m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
@@ -7137,7 +7137,7 @@ M68KMAKE_OP(moves, 16, ., .)
UINT32 word2 = OPER_I_16(mc68kcpu);
UINT32 ea = M68KMAKE_GET_EA_AY_16;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
if(BIT_B(word2)) /* Register to memory */
{
m68ki_write_16_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
@@ -7172,7 +7172,7 @@ M68KMAKE_OP(moves, 32, ., .)
UINT32 word2 = OPER_I_16(mc68kcpu);
UINT32 ea = M68KMAKE_GET_EA_AY_32;
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
if(BIT_B(word2)) /* Register to memory */
{
m68ki_write_32_fc((mc68kcpu), ea, (mc68kcpu)->dfc, REG_DA(mc68kcpu)[(word2 >> 12) & 15]);
@@ -7629,7 +7629,7 @@ M68KMAKE_OP(negx, 32, ., .)
M68KMAKE_OP(nop, 0, ., .)
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
}
@@ -7912,7 +7912,7 @@ M68KMAKE_OP(ori, 16, tos, .)
if((mc68kcpu)->s_flag)
{
UINT32 src = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) | src);
return;
}
@@ -8724,7 +8724,7 @@ M68KMAKE_OP(rtd, 32, ., .)
{
UINT32 new_pc = m68ki_pull_32(mc68kcpu);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + MAKE_INT_16(OPER_I_16(mc68kcpu)));
m68ki_jump((mc68kcpu), new_pc);
return;
@@ -8743,7 +8743,7 @@ M68KMAKE_OP(rte, 32, ., .)
if ((mc68kcpu)->rte_instr_callback != NULL)
(*(mc68kcpu)->rte_instr_callback)((mc68kcpu)->device);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
{
@@ -8876,7 +8876,7 @@ M68KMAKE_OP(rtm, 32, ., .)
{
if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
logerror("%s at %08x: called unimplemented instruction %04x (rtm)\n",
(mc68kcpu)->device->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
return;
@@ -8887,7 +8887,7 @@ M68KMAKE_OP(rtm, 32, ., .)
M68KMAKE_OP(rtr, 32, ., .)
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_set_ccr((mc68kcpu), m68ki_pull_16(mc68kcpu));
m68ki_jump((mc68kcpu), m68ki_pull_32(mc68kcpu));
}
@@ -8895,7 +8895,7 @@ M68KMAKE_OP(rtr, 32, ., .)
M68KMAKE_OP(rts, 32, ., .)
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
m68ki_jump((mc68kcpu), m68ki_pull_32(mc68kcpu));
}
@@ -9107,7 +9107,7 @@ M68KMAKE_OP(stop, 0, ., .)
if((mc68kcpu)->s_flag)
{
UINT32 new_sr = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
(mc68kcpu)->stopped |= STOP_LEVEL_STOP;
m68ki_set_sr((mc68kcpu), new_sr);
(mc68kcpu)->remaining_cycles = 0;
diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/emu/cpu/m68000/m68kcpu.c
index 1093bcba4e3..2bd885801ca 100644
--- a/src/emu/cpu/m68000/m68kcpu.c
+++ b/src/emu/cpu/m68000/m68kcpu.c
@@ -725,7 +725,7 @@ static CPU_EXECUTE( m68k )
do
{
/* Set tracing accodring to T1. (T0 is done inside instruction) */
- m68ki_trace_t1(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t1(m68k); /* auto-disable (see m68kcpu.h) */
/* Call external hook to peek at CPU */
debugger_instruction_hook(device, REG_PC(m68k));
@@ -810,7 +810,7 @@ static CPU_EXECUTE( m68k )
}
/* Trace m68k_exception, if necessary */
- m68ki_exception_if_trace(); /* auto-disable (see m68kcpu.h) */
+ m68ki_exception_if_trace(m68k); /* auto-disable (see m68kcpu.h) */
} while (m68k->remaining_cycles > 0);
/* set previous PC to current PC for the next entry into the loop */
@@ -886,7 +886,7 @@ static CPU_RESET( m68k )
/* Turn off tracing */
m68k->t1_flag = m68k->t0_flag = 0;
- m68ki_clear_trace();
+ m68ki_clear_trace(m68k);
/* Interrupt mask to level 7 */
m68k->int_mask = 0x0700;
m68k->int_level = 0;
diff --git a/src/emu/cpu/m68000/m68kcpu.h b/src/emu/cpu/m68000/m68kcpu.h
index 62634ed0f25..5ea17526079 100644
--- a/src/emu/cpu/m68000/m68kcpu.h
+++ b/src/emu/cpu/m68000/m68kcpu.h
@@ -255,26 +255,14 @@ typedef struct _m68ki_cpu_core m68ki_cpu_core;
#define CPU_TYPE_IS_000(A) ((A) == CPU_TYPE_000 || (A) == CPU_TYPE_008)
-/* Configuration switches (see m68kconf.h for explanation) */
-#define M68K_EMULATE_TRACE 0
-
-/* Enable or disable trace emulation */
-#if M68K_EMULATE_TRACE
- /* Initiates trace checking before each instruction (t1) */
- #define m68ki_trace_t1() m68ki_tracing = m68k->t1_flag
- /* adds t0 to trace checking if we encounter change of flow */
- #define m68ki_trace_t0() m68ki_tracing |= m68k->t0_flag
- /* Clear all tracing */
- #define m68ki_clear_trace() m68ki_tracing = 0
- /* Cause a trace exception if we are tracing */
- #define m68ki_exception_if_trace() if(m68ki_tracing) m68ki_exception_trace(m68k)
-#else
- #define m68ki_trace_t1()
- #define m68ki_trace_t0()
- #define m68ki_clear_trace()
- #define m68ki_exception_if_trace()
-#endif /* M68K_EMULATE_TRACE */
-
+/* Initiates trace checking before each instruction (t1) */
+#define m68ki_trace_t1(m68k) m68k->tracing = m68k->t1_flag
+/* adds t0 to trace checking if we encounter change of flow */
+#define m68ki_trace_t0(m68k) m68k->tracing |= m68k->t0_flag
+/* Clear all tracing */
+#define m68ki_clear_trace(m68k) m68k->tracing = 0
+/* Cause a trace exception if we are tracing */
+#define m68ki_exception_if_trace(m68k) if(m68k->tracing) m68ki_exception_trace(m68k)
/* Address error */
@@ -1448,7 +1436,7 @@ INLINE UINT32 m68ki_init_exception(m68ki_cpu_core *m68k)
/* Turn off trace flag, clear pending traces */
m68k->t1_flag = m68k->t0_flag = 0;
- m68ki_clear_trace();
+ m68ki_clear_trace(m68k);
/* Enter supervisor mode */
m68ki_set_s_flag(m68k, SFLAG_SET);
diff --git a/src/emu/cpu/m68000/m68kfpu.c b/src/emu/cpu/m68000/m68kfpu.c
index 8aca216c46c..adeb77591db 100644
--- a/src/emu/cpu/m68000/m68kfpu.c
+++ b/src/emu/cpu/m68000/m68kfpu.c
@@ -1683,7 +1683,7 @@ static void fbcc16(m68ki_cpu_core *m68k)
// TODO: condition and jump!!!
if (TEST_CONDITION(m68k, condition))
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(m68k); /* auto-disable (see m68kcpu.h) */
m68ki_branch_16(m68k, offset-2);
}
@@ -1700,7 +1700,7 @@ static void fbcc32(m68ki_cpu_core *m68k)
// TODO: condition and jump!!!
if (TEST_CONDITION(m68k, condition))
{
- m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(m68k); /* auto-disable (see m68kcpu.h) */
m68ki_branch_32(m68k, offset-4);
}