changeset 1469:723f6381cffa

Attempt at fixing issue reported when compiling with MSVC
author Michael Pavone <pavone@retrodev.com>
date Mon, 09 Oct 2017 07:48:48 -0700
parents 17c1c30e0d6f
children 1e3e0205640f
files gen_x86.c
diffstat 1 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/gen_x86.c	Mon Oct 09 07:42:33 2017 -0700
+++ b/gen_x86.c	Mon Oct 09 07:48:48 2017 -0700
@@ -170,6 +170,12 @@
 	"b", "w", "d", "q"
 };
 
+#ifdef X86_64
+#define CHECK_DISP(disp) (disp <= 0x7FFFFFFF && disp >= -2147483648)
+#else
+#define CHECK_DISP(disp) 1
+#endif
+
 void jmp_nocheck(code_info *code, code_ptr dest)
 {
 	code_ptr out = code->cur;
@@ -179,7 +185,7 @@
 		*(out++) = disp;
 	} else {
 		disp = dest-(out+5);
-		if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+		if (CHECK_DISP(disp)) {
 			*(out++) = OP_JMP;
 			*(out++) = disp;
 			disp >>= 8;
@@ -1917,7 +1923,7 @@
 		*(out++) = disp;
 	} else {
 		disp = dest-(out+6);
-		if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+		if (CHECK_DISP(disp)) {
 			*(out++) = PRE_2BYTE;
 			*(out++) = OP2_JCC | cc;
 			*(out++) = disp;
@@ -1944,7 +1950,7 @@
 		*(out++) = disp;
 	} else {
 		disp = dest-(out+5);
-		if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+		if (CHECK_DISP(disp)) {
 			*(out++) = OP_JMP;
 			*(out++) = disp;
 			disp >>= 8;
@@ -1991,7 +1997,7 @@
 	check_alloc_code(code, 5);
 	code_ptr out = code->cur;
 	ptrdiff_t disp = fun-(out+5);
-	if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+	if (CHECK_DISP(disp)) {
 		*(out++) = OP_CALL;
 		*(out++) = disp;
 		disp >>= 8;
@@ -2029,7 +2035,7 @@
 	check_alloc_code(code, 5);
 	code_ptr out = code->cur;
 	ptrdiff_t disp = fun-(out+5);
-	if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+	if (CHECK_DISP(disp)) {
 		*(out++) = OP_CALL;
 		*(out++) = disp;
 		disp >>= 8;