comparison m68k_core_x86.c @ 2330:959a3e9aaac5

Fix M68K STOP instruction for sub CPU
author Michael Pavone <pavone@retrodev.com>
date Wed, 23 Aug 2023 22:09:35 -0700
parents 3b5fef896475
children f0fc6c09517d
comparison
equal deleted inserted replaced
2329:06d5e9b08bdb 2330:959a3e9aaac5
2370 //leave supervisor mode 2370 //leave supervisor mode
2371 swap_ssp_usp(opts); 2371 swap_ssp_usp(opts);
2372 } 2372 }
2373 code_ptr loop_top = code->cur; 2373 code_ptr loop_top = code->cur;
2374 call(code, opts->do_sync); 2374 call(code, opts->do_sync);
2375 cmp_irdisp(code, 0, opts->gen.context_reg, offsetof(m68k_context, should_return), SZ_B);
2376 code_ptr no_return = code->cur + 1;
2377 jcc(code, CC_Z, no_return);
2378 mov_irdisp(code, (intptr_t)loop_top, opts->gen.context_reg, offsetof(m68k_context, resume_pc), SZ_PTR);
2379 retn(code);
2380 *no_return = code->cur - (no_return+1);
2375 cmp_rr(code, opts->gen.cycles, opts->gen.limit, SZ_D); 2381 cmp_rr(code, opts->gen.cycles, opts->gen.limit, SZ_D);
2376 code_ptr normal_cycle_up = code->cur + 1; 2382 code_ptr normal_cycle_up = code->cur + 1;
2377 jcc(code, CC_A, code->cur + 2); 2383 jcc(code, CC_A, code->cur + 2);
2378 cycles(&opts->gen, BUS); 2384 cycles(&opts->gen, BUS);
2379 code_ptr after_cycle_up = code->cur + 1; 2385 code_ptr after_cycle_up = code->cur + 1;