# HG changeset patch # User Mike Pavone # Date 1403535955 14400 # Node ID f9431cb3a39c065dc3c5669ac6921eb0e0218ccb # Parent 6b248602ab845f829e26f734e83a3e1b4042450d Fix x86_rrindex_sizedir. Pass the correct scale to mov_rindexr in gen_mem_fun. BlastEm now sort of works on OS X. Runs reliably from lldb, but only intermittently from the shell diff -r 6b248602ab84 -r f9431cb3a39c gen_x86.c --- a/gen_x86.c Tue Jun 17 01:50:29 2014 -0400 +++ b/gen_x86.c Mon Jun 23 11:05:55 2014 -0400 @@ -359,13 +359,11 @@ opcode |= BIT_SIZE; } *(out++) = opcode | dir; - *(out++) = MODE_REG_INDIRECT | base | (RSP << 3); - if (base == RSP) { - if (scale == 4) { - scale = 3; - } - *(out++) = scale << 6 | (index << 3) | base; + *(out++) = MODE_REG_INDIRECT | RSP | (reg << 3); + if (scale == 4) { + scale = 3; } + *(out++) = scale << 6 | (index << 3) | base; return out; } diff -r 6b248602ab84 -r f9431cb3a39c m68k_to_x86.c --- a/m68k_to_x86.c Tue Jun 17 01:50:29 2014 -0400 +++ b/m68k_to_x86.c Mon Jun 23 11:05:55 2014 -0400 @@ -4499,7 +4499,7 @@ dst = mov_rrind(dst, SCRATCH1, SCRATCH2, tmp_size); } else { dst = mov_ir(dst, (intptr_t)memmap[chunk].buffer, SCRATCH2, SZ_PTR); - dst = mov_rindexr(dst, SCRATCH2, SCRATCH1, 1, SCRATCH1, tmp_size); + dst = mov_rindexr(dst, SCRATCH2, SCRATCH1, 0, SCRATCH1, tmp_size); } } if (size != tmp_size && !is_write) {