From 80c0e194e52522d8c73b04754842c78b015f9307 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Thu, 27 Dec 2012 22:41:28 -0800 Subject: allocate a new native code chunk when we run out of space --- m68k_to_x86.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'm68k_to_x86.c') 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; -- cgit v1.2.3