diff m68k_to_x86.c @ 97:c7185fd840fc

Fix address register indexed addressing (probably)
author Mike Pavone <pavone@retrodev.com>
date Thu, 27 Dec 2012 21:32:00 -0800
parents f894f85cf39d
children 104e257fb93c
line wrap: on
line diff
--- a/m68k_to_x86.c	Thu Dec 27 21:23:55 2012 -0800
+++ b/m68k_to_x86.c	Thu Dec 27 21:32:00 2012 -0800
@@ -224,6 +224,20 @@
 		if (inst->src.params.regs.displacement) {
 			out = add_ir(out, inst->src.params.regs.displacement, SCRATCH1, SZ_D);
 		}
+		switch (inst->extra.size)
+		{
+		case OPSIZE_BYTE:
+			out = call(out, (char *)m68k_read_byte_scratch1);
+			break;
+		case OPSIZE_WORD:
+			out = call(out, (char *)m68k_read_word_scratch1);
+			break;
+		case OPSIZE_LONG:
+			out = call(out, (char *)m68k_read_long_scratch1);
+			break;
+		}
+		ea->mode = MODE_REG_DIRECT;
+		ea->base = SCRATCH1;
 		break;
 	case MODE_PC_DISPLACE:
 		out = cycles(out, BUS);