changeset 125:dc5fc3adf705

Fix encoding of movsx instruction when used with new (i.e. r9-r15) registers. This fixes the indexed addressing modes when used with a word-wide index register
author Mike Pavone <pavone@retrodev.com>
date Sat, 29 Dec 2012 22:11:28 -0800
parents da95566514f3
children 4e45d75501cf
files gen_x86.c m68k_to_x86.c
diffstat 2 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/gen_x86.c	Sat Dec 29 21:55:42 2012 -0800
+++ b/gen_x86.c	Sat Dec 29 22:11:28 2012 -0800
@@ -962,11 +962,11 @@
 			*out |= REX_QUAD;
 		}
 		if (src >= R8) {
-			*out |= REX_REG_FIELD;
+			*out |= REX_RM_FIELD;
 			src -= (R8 - X86_R8);
 		}
 		if (dst >= R8) {
-			*out |= REX_RM_FIELD;
+			*out |= REX_REG_FIELD;
 			dst -= (R8 - X86_R8);
 		}
 		out++;
@@ -992,11 +992,11 @@
 			*out |= REX_QUAD;
 		}
 		if (src >= R8) {
-			*out |= REX_REG_FIELD;
+			*out |= REX_RM_FIELD;
 			src -= (R8 - X86_R8);
 		}
 		if (dst >= R8) {
-			*out |= REX_RM_FIELD;
+			*out |= REX_REG_FIELD;
 			dst -= (R8 - X86_R8);
 		}
 		out++;
--- a/m68k_to_x86.c	Sat Dec 29 21:55:42 2012 -0800
+++ b/m68k_to_x86.c	Sat Dec 29 22:11:28 2012 -0800
@@ -635,9 +635,9 @@
 uint8_t * get_native_address(native_map_slot * native_code_map, uint32_t address)
 {
 	address &= 0xFFFFFF;
-	if (address > 0x400000) {
+	//if (address > 0x400000) {
 		printf("get_native_address: %X\n", address);
-	}
+	//}
 	address /= 2;
 	uint32_t chunk = address / NATIVE_CHUNK_SIZE;
 	if (!native_code_map[chunk].base) {