Mercurial > repos > blastem
changeset 86:3d3966c254b2
RTE doesn't crash the emulator anymore
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 26 Dec 2012 18:20:23 -0800 |
parents | 1db2a0b655d1 |
children | 60b5c9e2f4e0 |
files | m68k_to_x86.c m68k_to_x86.h runtime.S |
diffstat | 3 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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
--- 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