changeset 2225:e22137f0aca4

Fix some 68K exception processing cycle times
author Michael Pavone <pavone@retrodev.com>
date Mon, 05 Sep 2022 01:15:15 -0700
parents d8b0244101c4
children d15c68157288
files m68k_core.c m68k_core_x86.c
diffstat 2 files changed, 3 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/m68k_core.c	Mon Sep 05 00:49:03 2022 -0700
+++ b/m68k_core.c	Mon Sep 05 01:15:15 2022 -0700
@@ -363,7 +363,6 @@
 static void translate_m68k_illegal(m68k_options *opts, m68kinst *inst)
 {
 	code_info *code = &opts->gen.code;
-	cycles(&opts->gen, BUS);
 	ldi_native(opts, VECTOR_ILLEGAL_INST, opts->gen.scratch2);
 	ldi_native(opts, inst->address, opts->gen.scratch1);
 	jmp(code, opts->trap);
--- a/m68k_core_x86.c	Mon Sep 05 00:49:03 2022 -0700
+++ b/m68k_core_x86.c	Mon Sep 05 01:15:15 2022 -0700
@@ -1708,7 +1708,7 @@
 void translate_m68k_chk(m68k_options *opts, m68kinst *inst, host_ea *src_op, host_ea *dst_op)
 	{
 	code_info *code = &opts->gen.code;
-	cycles(&opts->gen, 6);
+	cycles(&opts->gen, 4);
 	if (dst_op->mode == MODE_REG_DIRECT) {
 		cmp_ir(code, 0, dst_op->base, inst->extra.size);
 	} else {
@@ -1762,7 +1762,7 @@
 	mov_ir(code, inst->address+isize, opts->gen.scratch1, SZ_D);
 	jmp(code, opts->trap);
 	*passed = code->cur - (passed+1);
-	cycles(&opts->gen, 4);
+	cycles(&opts->gen, 6);
 }
 
 static uint32_t divu(uint32_t dividend, m68k_context *context, uint32_t divisor_shift)
@@ -3207,7 +3207,7 @@
 	shl_ir(code, 2, opts->gen.scratch1, SZ_D);
 	call(code, opts->read_32);
 	call(code, opts->native_addr_and_sync);
-	cycles(&opts->gen, 18);
+	cycles(&opts->gen, 14);
 	jmp_r(code, opts->gen.scratch1);
 
 	opts->retrans_stub = code->cur;