Mercurial > repos > blastem
comparison z80_to_x86.c @ 702:144df1a6d3b9
Save PC to context struct when syncing Z80 at instruction start. This fixes saving savestates and probably the Z80 debugger as well
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 12 May 2015 19:14:09 -0700 |
parents | 200ee73c7210 |
children | 382a2b5b70c0 |
comparison
equal
deleted
inserted
replaced
701:200ee73c7210 | 702:144df1a6d3b9 |
---|---|
2119 retn(code); | 2119 retn(code); |
2120 *skip_int = code->cur - (skip_int+1); | 2120 *skip_int = code->cur - (skip_int+1); |
2121 cmp_rdispr(code, options->gen.context_reg, offsetof(z80_context, sync_cycle), options->gen.cycles, SZ_D); | 2121 cmp_rdispr(code, options->gen.context_reg, offsetof(z80_context, sync_cycle), options->gen.cycles, SZ_D); |
2122 code_ptr skip_sync = code->cur + 1; | 2122 code_ptr skip_sync = code->cur + 1; |
2123 jcc(code, CC_B, skip_sync); | 2123 jcc(code, CC_B, skip_sync); |
2124 //save PC | |
2125 mov_rrdisp(code, options->gen.scratch1, options->gen.context_reg, offsetof(z80_context, pc), SZ_D); | |
2124 options->do_sync = code->cur; | 2126 options->do_sync = code->cur; |
2125 call(code, options->gen.save_context); | 2127 call(code, options->gen.save_context); |
2126 pop_rind(code, options->gen.context_reg); | 2128 pop_rind(code, options->gen.context_reg); |
2127 //restore callee saved registers | 2129 //restore callee saved registers |
2128 restore_callee_save_regs(code); | 2130 restore_callee_save_regs(code); |