diff options
author | Mike Pavone <pavone@retrodev.com> | 2012-12-27 22:41:28 -0800 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2012-12-27 22:41:28 -0800 |
commit | 80c0e194e52522d8c73b04754842c78b015f9307 (patch) | |
tree | 9cbacb0e682d2d1840abe9596d613911322a4d2f /m68k_to_x86.c | |
parent | 51960eeecff84639742ce367058749f451a83cf6 (diff) |
allocate a new native code chunk when we run out of space
Diffstat (limited to 'm68k_to_x86.c')
-rw-r--r-- | m68k_to_x86.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/m68k_to_x86.c b/m68k_to_x86.c index 242fed0..05b65b4 100644 --- a/m68k_to_x86.c +++ b/m68k_to_x86.c @@ -2162,8 +2162,16 @@ uint8_t * translate_m68k_stream(uint32_t address, m68k_context * context) do { do { if (dst_end-dst < 128) { - puts("out of code memory"); - exit(1); + if (dst_end-dst < 5) { + puts("out of code memory, not enough space for jmp to next chunk"); + exit(1); + } + size_t size = 1024*1024; + opts->cur_code = alloc_code(&size); + opts->code_end = opts->cur_code + size; + jmp(dst, opts->cur_code); + dst = opts->cur_code; + dst_end = opts->code_end; } next = m68k_decode(encoded, &instbuf, address); address += (next-encoded)*2; |