From 46b4c104c2447d9081122696a43094d0cb987de3 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Tue, 28 Apr 2015 19:04:36 -0700 Subject: Fix bug in map_native_address that was breaking some self-modifying code in Gunstar Heroes --- m68k_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'm68k_core.c') diff --git a/m68k_core.c b/m68k_core.c index ff6278c..d3125a9 100644 --- a/m68k_core.c +++ b/m68k_core.c @@ -606,7 +606,7 @@ void map_native_address(m68k_context * context, uint32_t address, code_ptr nativ uint32_t masked = (address & opts->gen.memmap[i].mask); uint32_t final_off = masked + meta_off; uint32_t ram_flags_off = final_off >> (opts->gen.ram_flags_shift + 3); - context->ram_code_flags[ram_flags_off] |= 1 << ((final_off >> opts->gen.ram_flags_shift) & 3); + context->ram_code_flags[ram_flags_off] |= 1 << ((final_off >> opts->gen.ram_flags_shift) & 7); uint32_t slot = final_off / 1024; if (!opts->gen.ram_inst_sizes[slot]) { @@ -618,7 +618,7 @@ void map_native_address(m68k_context * context, uint32_t address, code_ptr nativ masked = (address + size - 1) & opts->gen.memmap[i].mask; final_off = masked + meta_off; ram_flags_off = final_off >> (opts->gen.ram_flags_shift + 3); - context->ram_code_flags[ram_flags_off] |= 1 << ((final_off >> opts->gen.ram_flags_shift) & 3); + context->ram_code_flags[ram_flags_off] |= 1 << ((final_off >> opts->gen.ram_flags_shift) & 7); } break; } else if ((opts->gen.memmap[i].flags & (MMAP_WRITE | MMAP_CODE)) == (MMAP_WRITE | MMAP_CODE)) { -- cgit v1.2.3