summaryrefslogtreecommitdiff
path: root/m68k_to_x86.c
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2012-12-27 22:41:28 -0800
committerMike Pavone <pavone@retrodev.com>2012-12-27 22:41:28 -0800
commit80c0e194e52522d8c73b04754842c78b015f9307 (patch)
tree9cbacb0e682d2d1840abe9596d613911322a4d2f /m68k_to_x86.c
parent51960eeecff84639742ce367058749f451a83cf6 (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.c12
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;