[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 37/437: fix x86-64 builds
From: |
Andy Wingo |
Subject: |
[Guile-commits] 37/437: fix x86-64 builds |
Date: |
Mon, 2 Jul 2018 05:13:40 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit 197d20aa966dfdb19dcf53e389b919d7d41796b0
Author: Paolo Bonzini <address@hidden>
Date: Mon Nov 20 13:00:29 2006 +0000
fix x86-64 builds
git-archimport-id: address@hidden/lightning--stable--1.2--patch-39
---
ChangeLog | 14 ++++++++++++++
lightning/asm-common.h | 9 ++++++---
lightning/i386/asm-64.h | 7 +++++++
lightning/i386/asm-i386.h | 2 ++
lightning/i386/core-32.h | 9 +++++++--
lightning/i386/core-64.h | 24 +++++++++++++++---------
lightning/i386/core-i386.h | 9 ---------
lightning/i386/funcs.h | 2 +-
tests/funcfp.c | 8 ++++++++
tests/rpnfp.c | 8 ++++++++
tests/run-test | 4 ++++
tests/testfp.c | 8 ++++++++
12 files changed, 80 insertions(+), 24 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 287cdda..c99af46 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2006-11-20 Paolo Bonzini <address@hidden>
+
+ * lightning/asm-common.h: Make 64-bit safe.
+ * lightning/i386/funcs.h: Make 64-bit safe.
+
+ * lightning/i386/asm-64.h: More merge from mzscheme.
+ * lightning/i386/asm-i386.h: More merge from mzscheme.
+ * lightning/i386/core-32.h: More merge from mzscheme.
+ * lightning/i386/core-64.h: More merge from mzscheme.
+ * lightning/i386/core-i386.h: More merge from mzscheme.
+
+ * tests/rpnfp.c, tests/testfp.c, tests/funcfp.c: Skip if no
floating-point
+ support.
+
2006-11-04 Paolo Bonzini <address@hidden>
* tests/rpn.c: Remove pushr/popr.
diff --git a/lightning/asm-common.h b/lightning/asm-common.h
index 6f61521..58e89b4 100644
--- a/lightning/asm-common.h
+++ b/lightning/asm-common.h
@@ -95,11 +95,13 @@ typedef unsigned long _ul;
#define _jit_UC(X) ((_uc )(X))
#define _jit_US(X) ((_us )(X))
#define _jit_UI(X) ((_ui )(X))
+#define _jit_SI(X) ((int )(X))
#define _jit_SL(X) ((_sl )(X))
#define _jit_UL(X) ((_ul )(X))
# define _PUC(X) ((_uc *)(X))
# define _PUS(X) ((_us *)(X))
# define _PUI(X) ((_ui *)(X))
+# define _PSI(X) ((int *)(X))
# define _PSL(X) ((_sl *)(X))
# define _PUL(X) ((_ul *)(X))
@@ -109,9 +111,9 @@ typedef unsigned long _ul;
#define _jit_L(L) _jit_UL(((*_jit.x.ul_pc++)= _jit_UL((L) )))
#define _jit_I_noinc(I) _jit_UL(((*_jit.x.ui_pc)= _jit_UI((I) )))
-#define _MASK(N) ((unsigned)((1<<(N)))-1)
-#define _siP(N,I) (!((((unsigned)(I))^(((unsigned)(I))<<1))&~_MASK(N)))
-#define _uiP(N,I) (!(((unsigned)(I))&~_MASK(N)))
+#define _MASK(N) ((unsigned long)((1L<<(N)))-1L)
+#define _siP(N,I) (!((((unsigned long)(I))^(((unsigned
long)(I))<<1))&~_MASK(N)))
+#define _uiP(N,I) (!(((unsigned long)(I))&~_MASK(N)))
#define _suiP(N,I) (_siP(N,I) | _uiP(N,I))
#ifndef _ASM_SAFETY
@@ -131,6 +133,7 @@ typedef unsigned long _ul;
#define _s16P(I) _siP(16,I)
#define _u8P(I) _uiP(8,I)
#define _u16P(I) _uiP(16,I)
+#define _u32P(I) _uiP(32,I)
#define _su8(I) _ck_su(8,I)
#define _su16(I) _ck_su(16,I)
diff --git a/lightning/i386/asm-64.h b/lightning/i386/asm-64.h
index f44f203..5079d0a 100644
--- a/lightning/i386/asm-64.h
+++ b/lightning/i386/asm-64.h
@@ -57,6 +57,13 @@
#define _qO( OP, R,X,B ) ( _REX(R,X,B), _jit_B( OP
) )
#define _qOr( OP,R ) ( _REX(0,0,R), _jit_B(
(OP)|_r(R&0x7)) )
#define _qOs( OP, B, R, M ) ( _REX(0, M, R), _Os(OP, B) )
+#define _qOr_Q( OP,R ,Q ) ( _qOr (
OP,R) ,_jit_L(Q) )
+#define _qO_Mrm( OP ,MO,R,M ) ( _qO (
OP,R,0,M),_qMrm(MO,R,M ) )
+#define _qO_Mrm_L( OP ,MO,R,M ,L ) ( _qO (
OP,R,0,M),_qMrm(MO,R,M ) ,_jit_I(L) )
+#define _qOs_Mrm_sL(OP ,MO,R,M ,L ) ( _qOs (
OP,L,R,M),_qMrm(MO,R,M ),_sL(L) )
+#define _qO_r_X( OP ,R ,MD,MB,MI,MS ) ( _qO (
OP,R,0,MS),_qr_X(R,MD,MB,MI,MS) )
+#define _qO_r_XB( OP ,R ,MD,MB,MI,MS ) ( _qO (
OP,R,0,MB),_qr_X(R,MD,MB,MI,MS) )
+
#define ADDQrr(RS, RD) _qO_Mrm (0x01
,_b11,_r8(RS),_r8(RD) )
#define ADDQir(IM, RD) _qOs_Mrm_sL (0x81
,_b11,_b000 ,_r8(RD) ,IM )
diff --git a/lightning/i386/asm-i386.h b/lightning/i386/asm-i386.h
index 9bcf4ce..6169bb4 100644
--- a/lightning/i386/asm-i386.h
+++ b/lightning/i386/asm-i386.h
@@ -111,6 +111,8 @@ typedef _uc jit_insn;
#define _r4(R) ((_rS(R)==4) ? _rN(R) : JITFAIL("32-bit register
required"))
#endif
+#define _r8(R) _r4(R)
+
/*** ASSEMBLER ***/
#define _OFF4(D) (_jit_UL(D) - _jit_UL(_jit.x.pc))
diff --git a/lightning/i386/core-32.h b/lightning/i386/core-32.h
index 805af03..87ebc80 100644
--- a/lightning/i386/core-32.h
+++ b/lightning/i386/core-32.h
@@ -34,9 +34,10 @@
#ifndef __lightning_core_h
#define __lightning_core_h
-#include "core-i386.h"
-
#define JIT_CAN_16 1
+#define JIT_AP _EBP
+
+#include "core-i386.h"
struct jit_local_state {
int framesize;
@@ -61,6 +62,10 @@ struct jit_local_state {
_jitl.alloca_slack -= (amount), \
_jitl.alloca_offset -= (amount))
+/* Stack */
+#define jit_pushr_i(rs) PUSHLr(rs)
+#define jit_popr_i(rs) POPLr(rs)
+
/* The += in argssize allows for stack pollution */
#ifdef __APPLE__
diff --git a/lightning/i386/core-64.h b/lightning/i386/core-64.h
index 420fbcf..0f97476 100644
--- a/lightning/i386/core-64.h
+++ b/lightning/i386/core-64.h
@@ -34,6 +34,9 @@
#ifndef __lightning_core_h
#define __lightning_core_h
+/* Used to implement ldc, stc, ... */
+#define JIT_CAN_16 0
+
#include "core-i386.h"
struct jit_local_state {
@@ -77,9 +80,6 @@ struct jit_local_state {
#define jit_bra_l0(rs, is, op, op0) \
( (is) == 0 ? (TESTQrr(rs, rs), op0, _jit.x.pc) : jit_bra_l(rs, is, op))
-/* Used to implement ldc, stc, ... */
-#define JIT_CAN_16 0
-
#define jit_reduceQ(op, is, rs)
\
(_u8P(is) && jit_check8(rs) ? jit_reduce_(op##Bir(is, jit_reg8(rs))) :
\
jit_reduce_(op##Qir(is, rs)) )
@@ -106,8 +106,8 @@ struct jit_local_state {
#define jit_rshr_ul(d, r1, r2) jit_replace((r1), (r2), _ECX,
jit_qop_ ((d), (r1), SHRQrr(_CL, (d)) ))
/* Stack */
-#define jit_pushr_l(rs) PUSHQr(rs)
-#define jit_popr_l(rs) POPQr(rs)
+#define jit_pushr_i(rs) PUSHQr(rs)
+#define jit_popr_i(rs) POPQr(rs)
#define jit_base_prolog() (PUSHQr(_EBP), MOVQrr(_ESP, _EBP), PUSHQr(_EBX),
PUSHQr(_R12), PUSHQr(_R13))
#define jit_prolog(n) (_jitl.nextarg_geti = 0, _jitl.alloca_offset = -24,
jit_base_prolog())
@@ -140,10 +140,16 @@ struct jit_local_state {
(MOVQrr(_R12, _ESI), MOVQrr(_R13, _EDI))
#define jit_retval_l(rd) ((void)jit_movr_l ((rd), _EAX))
-#define jit_arg_i() (_jitl.nextarg_geti++)
-#define jit_arg_l() (_jitl.nextarg_geti++)
-#define jit_arg_p() (_jitl.nextarg_geti++)
-#define jit_arg_reg(p) (jit_arg_reg_order[p])
+#define jit_arg_c()
(jit_arg_reg_order[_jitl.nextarg_geti++])
+#define jit_arg_uc()
(jit_arg_reg_order[_jitl.nextarg_geti++])
+#define jit_arg_s()
(jit_arg_reg_order[_jitl.nextarg_geti++])
+#define jit_arg_us()
(jit_arg_reg_order[_jitl.nextarg_geti++])
+#define jit_arg_i()
(jit_arg_reg_order[_jitl.nextarg_geti++])
+#define jit_arg_ui()
(jit_arg_reg_order[_jitl.nextarg_geti++])
+#define jit_arg_l()
(jit_arg_reg_order[_jitl.nextarg_geti++])
+#define jit_arg_ul()
(jit_arg_reg_order[_jitl.nextarg_geti++])
+#define jit_arg_p()
(jit_arg_reg_order[_jitl.nextarg_geti++])
+#define jit_arg_up()
(jit_arg_reg_order[_jitl.nextarg_geti++])
static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX };
#define jit_negr_l(d, rs) jit_opi_((d), (rs), NEGQr(d), (XORQrr((d),
(d)), SUBQrr((rs), (d))) )
diff --git a/lightning/i386/core-i386.h b/lightning/i386/core-i386.h
index 0e3e97b..3f06c0e 100644
--- a/lightning/i386/core-i386.h
+++ b/lightning/i386/core-i386.h
@@ -34,7 +34,6 @@
#ifndef __lightning_core_i386_h
#define __lightning_core_i386_h
-#define JIT_AP _EBP
#define JIT_FP _EBP
#define JIT_SP _ESP
#define JIT_RET _EAX
@@ -107,11 +106,6 @@
: jit_replace(_EBX, rs, _EAX, MOVBrm(_AL, dd, db, di, ds)))
/* Reduce arguments of XOR/OR/TEST */
-#ifdef JIT_X86_64
-# define JIT_CAN_16 0
-#else
-# define JIT_CAN_16 1
-#endif
#define jit_reduce_(op) op
#define jit_reduce(op, is, rs)
\
(_u8P(is) && jit_check8(rs) ? jit_reduce_(op##Bir(is, jit_reg8(rs))) :
\
@@ -261,9 +255,6 @@
#define jit_rshr_ui(d, r1, r2) jit_replace((r1), (r2), _ECX,
jit_op_ ((d), (r1), SHRLrr(_CL, (d)) ))
/* Stack */
-#define jit_pushr_i(rs) PUSHLr(rs)
-#define jit_popr_i(rs) POPLr(rs)
-
#define jit_prepare_f(nf) (_jitl.argssize += (nf))
#define jit_prepare_d(nd) (_jitl.argssize += 2 * (nd))
#define jit_retval_i(rd) ((void)jit_movr_i ((rd), _EAX))
diff --git a/lightning/i386/funcs.h b/lightning/i386/funcs.h
index 4daaf48..77171ec 100644
--- a/lightning/i386/funcs.h
+++ b/lightning/i386/funcs.h
@@ -53,7 +53,7 @@ jit_flush_code(void *dest, void *end)
jit_flush_code as an mprotect. */
#ifdef __linux__
static unsigned long prev_page = 0, prev_length = 0;
- int page, length;
+ long page, length;
#ifdef PAGESIZE
const int page_size = PAGESIZE;
#else
diff --git a/tests/funcfp.c b/tests/funcfp.c
index 8e8b565..7858c4c 100644
--- a/tests/funcfp.c
+++ b/tests/funcfp.c
@@ -37,6 +37,7 @@
#include <stdio.h>
#include "lightning.h"
+#ifdef JIT_FPR
static jit_insn codeBuffer[300];
typedef int (*intFunc) (int, int);
@@ -175,3 +176,10 @@ main (int argc, char *argv[])
return 0;
}
+#else
+int
+main()
+{
+ return (77);
+}
+#endif
diff --git a/tests/rpnfp.c b/tests/rpnfp.c
index 2c7193f..a3b322c 100644
--- a/tests/rpnfp.c
+++ b/tests/rpnfp.c
@@ -38,6 +38,7 @@
#include <stdlib.h>
#include "lightning.h"
+#ifdef JIT_FPR
static jit_insn codeBuffer[1024];
typedef double (*pdfd) (double); /* Pointer to Double Function of Double
*/
@@ -136,3 +137,10 @@ main ()
#endif
return 0;
}
+#else
+int
+main()
+{
+ return (77);
+}
+#endif
diff --git a/tests/run-test b/tests/run-test
index ae3dfc7..83b3270 100755
--- a/tests/run-test
+++ b/tests/run-test
@@ -1,6 +1,10 @@
#! /bin/sh
./$1 > $1.log
+if test $? = 77; then
+ exit 77
+fi
+
if cmp -s $srcdir/$1.ok $1.log; then
rm $1.log
else
diff --git a/tests/testfp.c b/tests/testfp.c
index 1de858b..dc7574d 100644
--- a/tests/testfp.c
+++ b/tests/testfp.c
@@ -37,6 +37,7 @@
#include <stdio.h>
#include "lightning.h"
+#ifdef JIT_FPR
static jit_insn codeBuffer[300];
static double a;
@@ -215,3 +216,10 @@ main()
return (0);
}
+#else
+int
+main()
+{
+ return (77);
+}
+#endif
- [Guile-commits] 21/437: clarify bundling documentation and improve autoconf macro, (continued)
- [Guile-commits] 21/437: clarify bundling documentation and improve autoconf macro, Andy Wingo, 2018/07/02
- [Guile-commits] 32/437: fix powerpc jit_bms, Andy Wingo, 2018/07/02
- [Guile-commits] 24/437: bump version, add ldxi test case, Andy Wingo, 2018/07/02
- [Guile-commits] 30/437: added ret test and clarified JIT_RET documentation, Andy Wingo, 2018/07/02
- [Guile-commits] 20/437: fix PPC modi, Andy Wingo, 2018/07/02
- [Guile-commits] 35/437: remove pushr/popr from testsuite, Andy Wingo, 2018/07/02
- [Guile-commits] 31/437: prepare for automatic variables support, Andy Wingo, 2018/07/02
- [Guile-commits] 29/437: cherrypick from ludovic courtes, Andy Wingo, 2018/07/02
- [Guile-commits] 33/437: add jit_allocai for SPARC, Andy Wingo, 2018/07/02
- [Guile-commits] 16/437: Fix comments in config.h.in git-archimport-id: address@hidden/lightning--stable--1.2--patch-18, Andy Wingo, 2018/07/02
- [Guile-commits] 37/437: fix x86-64 builds,
Andy Wingo <=
- [Guile-commits] 42/437: add an underscore to macros without a parameter [x86], Andy Wingo, 2018/07/02
- [Guile-commits] 36/437: update manual for jit_allocai, Andy Wingo, 2018/07/02
- [Guile-commits] 46/437: merge from ludovic, Andy Wingo, 2018/07/02
- [Guile-commits] 14/437: update FSF address, Andy Wingo, 2018/07/02
- [Guile-commits] 34/437: finish jit_allocai implementation, Andy Wingo, 2018/07/02
- [Guile-commits] 43/437: give credit to whom credit is due, Andy Wingo, 2018/07/02
- [Guile-commits] 41/437: x86-64 now passes test suite, Andy Wingo, 2018/07/02
- [Guile-commits] 47/437: refine ludovic's doc patch, Andy Wingo, 2018/07/02
- [Guile-commits] 38/437: add JIT_NEED_PUSH_POP and merge correct implementation of push/pop for SPARC, Andy Wingo, 2018/07/02
- [Guile-commits] 50/437: fix imprecisions in the ChangeLog, Andy Wingo, 2018/07/02