changeset 751:cf09b189a0ca

Fix negative offsets in calc_areg_displace
author Michael Pavone <pavone@retrodev.com>
date Mon, 22 Jun 2015 22:00:02 -0700
parents 59b499f6b24f
children 296ddfcf0d43
files m68k_core_x86.c
diffstat 1 files changed, 1 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/m68k_core_x86.c	Mon Jun 22 09:22:18 2015 -0700
+++ b/m68k_core_x86.c	Mon Jun 22 22:00:02 2015 -0700
@@ -317,7 +317,7 @@
 void calc_areg_displace(m68k_options *opts, m68k_op_info *op, uint8_t native_reg)
 {
 	areg_to_native(opts, op->params.regs.pri, native_reg);
-	add_ir(&opts->gen.code, op->params.regs.displacement, native_reg, SZ_D);
+	add_ir(&opts->gen.code, op->params.regs.displacement & 0x8000 ? op->params.regs.displacement | 0xFFFF0000 : op->params.regs.displacement, native_reg, SZ_D);
 }
 
 void calc_index_disp8(m68k_options *opts, m68k_op_info *op, uint8_t native_reg)