diff backend_x86.c @ 2036:45c4b74e7676

Fix bug in handling of MMAP_CODE regions smaller than 16KB
author Michael Pavone <pavone@retrodev.com>
date Sun, 07 Mar 2021 22:43:51 -0800
parents 2a5649a767e7
children 8ee7ecbf3f21
line wrap: on
line diff
--- a/backend_x86.c	Sun Mar 07 10:41:35 2021 -0800
+++ b/backend_x86.c	Sun Mar 07 22:43:51 2021 -0800
@@ -299,10 +299,16 @@
 			retn(code);
 		}
 		if (memmap[chunk].flags & MMAP_CODE) {
+			uint32_t added_offset;
 			if (memmap[chunk].mask == opts->address_mask) {
-				ram_flags_off += (memmap[chunk].end - memmap[chunk].start) / (1 << opts->ram_flags_shift) / 8; ;
+				added_offset = (memmap[chunk].end - memmap[chunk].start) / (1 << opts->ram_flags_shift) / 8;
 			} else {
-				ram_flags_off += (memmap[chunk].mask + 1) /  (1 << opts->ram_flags_shift) / 8;;
+				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) {