Mercurial > repos > blastem
diff backend_x86.c @ 2070:afc54649ebed segacd
Fix error in code write detection introduced from "wide" jcc change
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 30 Jan 2022 19:56:09 -0800 |
parents | 8ee7ecbf3f21 |
children | 0013362c320c |
line wrap: on
line diff
--- a/backend_x86.c Sun Jan 30 19:55:33 2022 -0800 +++ b/backend_x86.c Sun Jan 30 19:56:09 2022 -0800 @@ -310,19 +310,6 @@ } retn(code); } - if (memmap[chunk].flags & MMAP_CODE) { - uint32_t added_offset; - if (memmap[chunk].mask == opts->address_mask) { - added_offset = (memmap[chunk].end - memmap[chunk].start) / (1 << opts->ram_flags_shift) / 8; - } else { - added_offset = (memmap[chunk].mask + 1) / (1 << opts->ram_flags_shift) / 8; - } - if (added_offset) { - ram_flags_off += added_offset; - } else { - ram_flags_off += 1; - } - } if (lb_jcc) { if (need_wide_jcc) { *((int32_t*)lb_jcc) = code->cur - (lb_jcc+4); @@ -350,6 +337,19 @@ ub_jcc = NULL; } + if (memmap[chunk].flags & MMAP_CODE) { + uint32_t added_offset; + if (memmap[chunk].mask == opts->address_mask) { + added_offset = (memmap[chunk].end - memmap[chunk].start) / (1 << opts->ram_flags_shift) / 8; + } else { + added_offset = (memmap[chunk].mask + 1) / (1 << opts->ram_flags_shift) / 8; + } + if (added_offset) { + ram_flags_off += added_offset; + } else { + ram_flags_off += 1; + } + } if (need_wide_jcc) { need_wide_jcc = 0; }