changeset 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 8e51c0c3f2e3
children 598017ef4b0d
files backend_x86.c
diffstat 1 files changed, 13 insertions(+), 13 deletions(-) [+]
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;
 		}