# HG changeset patch # User Mike Pavone # Date 1356574823 28800 # Node ID 3d3966c254b2ad904b194fc4cfee4c750e72a5f1 # Parent 1db2a0b655d15406140e3f0581fa3fe834a29066 RTE doesn't crash the emulator anymore diff -r 1db2a0b655d1 -r 3d3966c254b2 m68k_to_x86.c --- a/m68k_to_x86.c Wed Dec 26 17:50:24 2012 -0800 +++ b/m68k_to_x86.c Wed Dec 26 18:20:23 2012 -0800 @@ -479,6 +479,9 @@ uint8_t * get_native_address(native_map_slot * native_code_map, uint32_t address) { address &= 0xFFFFFF; + if (address > 0x400000) { + printf("get_native_address: %X\n", address); + } uint32_t chunk = address / NATIVE_CHUNK_SIZE; if (!native_code_map[chunk].base) { return NULL; diff -r 1db2a0b655d1 -r 3d3966c254b2 m68k_to_x86.h --- a/m68k_to_x86.h Wed Dec 26 17:50:24 2012 -0800 +++ b/m68k_to_x86.h Wed Dec 26 18:20:23 2012 -0800 @@ -2,7 +2,7 @@ #include "68kinst.h" #define NUM_MEM_AREAS 4 -#define NATIVE_MAP_CHUNKS (32*1024) +#define NATIVE_MAP_CHUNKS (64*1024) #define NATIVE_CHUNK_SIZE ((16 * 1024 * 1024 / NATIVE_MAP_CHUNKS)/2) #define INVALID_OFFSET 0xFFFFFFFF diff -r 1db2a0b655d1 -r 3d3966c254b2 runtime.S --- a/runtime.S Wed Dec 26 17:50:24 2012 -0800 +++ b/runtime.S Wed Dec 26 18:20:23 2012 -0800 @@ -268,10 +268,12 @@ .global m68k_write_long_lowfirst m68k_write_long_lowfirst: push %rdi + push %rcx add $2, %edi call m68k_write_word + pop %rcx + pop %rdi shr $16, %ecx - pop %rdi jmp m68k_write_word .global m68k_write_long_highfirst @@ -391,8 +393,8 @@ dyn_addr_msg: .asciz "Program needs dynamically calculated native address\n" - .global m68k_native_addr -m68k_native_addr: + .global m68k_native_addr_and_sync +m68k_native_addr_and_sync: call m68k_save_context push %rcx mov %rsi, %rdi @@ -406,8 +408,8 @@ call m68k_load_context ret - .global m68k_native_addr_and_sync -m68k_native_addr_and_sync: + .global m68k_native_addr +m68k_native_addr: call m68k_save_context push %rsi mov 144(%rsi), %rdi