summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-04-20 22:28:58 -0700
committerMichael Pavone <pavone@retrodev.com>2017-04-20 22:28:58 -0700
commit66161b5a973121a69a30245fce65e190cccf2eac (patch)
tree324e9c748ef67992f57a3edc027b9ef8e4af6c38
parentd86e917570832d68c69b5991f987f6101f3709b7 (diff)
Fixed timing for RTS and RTE
-rw-r--r--m68k_core.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/m68k_core.c b/m68k_core.c
index 64bee47..c5b40c2 100644
--- a/m68k_core.c
+++ b/m68k_core.c
@@ -305,10 +305,10 @@ static void translate_m68k_link(m68k_options * opts, m68kinst * inst)
static void translate_m68k_rts(m68k_options * opts, m68kinst * inst)
{
code_info *code = &opts->gen.code;
- //TODO: Add cycles
areg_to_native(opts, 7, opts->gen.scratch1);
addi_areg(opts, 4, 7);
call(code, opts->read_32);
+ cycles(&opts->gen, 2*BUS);
call(code, opts->native_addr);
jmp_r(code, opts->gen.scratch1);
}
@@ -626,6 +626,7 @@ static void translate_m68k_rte(m68k_options *opts, m68kinst *inst)
call(code, opts->read_32);
addi_areg(opts, 4, 7);
check_user_mode_swap_ssp_usp(opts);
+ cycles(&opts->gen, 2*BUS);
//Get native address, sync components, recalculate integer points and jump to returned address
call(code, opts->native_addr_and_sync);
jmp_r(code, opts->gen.scratch1);