diff m68k_core_x86.c @ 872:7022ba865cfd

Initial work for allowing loading a ROM from menu
author Michael Pavone <pavone@retrodev.com>
date Sun, 08 Nov 2015 15:51:57 -0800
parents 7decd421cdc8
children 9f149f0e98b7
line wrap: on
line diff
--- a/m68k_core_x86.c	Fri Nov 06 19:47:58 2015 -0800
+++ b/m68k_core_x86.c	Sun Nov 08 15:51:57 2015 -0800
@@ -2509,7 +2509,14 @@
 	mov_rr(code, RAX, opts->gen.context_reg, SZ_PTR);
 	jmp(code, opts->gen.load_context);
 	*skip_sync = code->cur - (skip_sync+1);
+	cmp_irdisp(code, 0, opts->gen.context_reg, offsetof(m68k_context, should_return), SZ_B);
+	code_ptr do_ret = code->cur + 1;
+	jcc(code, CC_NZ, do_ret);
 	retn(code);
+	*do_ret = code->cur - (do_ret+1);
+	pop_r(code, opts->gen.scratch1);
+	retn(code);
+	mov_rrdisp(code, opts->gen.scratch1, opts->gen.context_reg, offsetof(m68k_context, resume_pc), SZ_PTR);
 	*do_int = code->cur - (do_int+1);
 	//implement 1 instruction latency
 	cmp_irdisp(code, 0, opts->gen.context_reg, offsetof(m68k_context, int_pending), SZ_B);