Mercurial > repos > blastem
changeset 988:ce9df7a5fdf2
Fix changes made to get_instruction_start and map_native_address to cope with being able to translate at odd addresses.
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 27 Apr 2016 19:10:50 -0700 |
parents | 1f09994e92c5 |
children | d70000fdff0b |
files | m68k_core.c |
diffstat | 1 files changed, 4 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/m68k_core.c Tue Apr 26 23:13:37 2016 -0700 +++ b/m68k_core.c Wed Apr 27 19:10:50 2016 -0700 @@ -586,6 +586,7 @@ if (address >= opts->gen.memmap[i].start && address < opts->gen.memmap[i].end) { //calculate the lowest alias for this address address = opts->gen.memmap[i].start + ((address - opts->gen.memmap[i].start) & opts->gen.memmap[i].mask); + break; } } @@ -602,7 +603,7 @@ chunk = address / NATIVE_CHUNK_SIZE; offset = address % NATIVE_CHUNK_SIZE; } - return address*2; + return address; } void map_native_address(m68k_context * context, uint32_t address, code_ptr native_addr, uint8_t size, uint8_t native_size) @@ -649,8 +650,8 @@ } uint32_t offset = address % NATIVE_CHUNK_SIZE; native_code_map[chunk].offsets[offset] = native_addr-native_code_map[chunk].base; - for(address++,size-=2; size; address++,size-=2) { - address &= opts->gen.address_mask >> 1; + for(address++,size-=1; size; address++,size-=1) { + address &= opts->gen.address_mask; chunk = address / NATIVE_CHUNK_SIZE; offset = address % NATIVE_CHUNK_SIZE; if (!native_code_map[chunk].base) {