1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-04 14:20:26 +02:00

fix x86-64 builds

git-archimport-id: bonzini@gnu.org--2004b/lightning--stable--1.2--patch-39
This commit is contained in:
Paolo Bonzini 2006-11-20 13:00:29 +00:00
parent f748b3c5e7
commit 197d20aa96
12 changed files with 80 additions and 24 deletions

View file

@ -1,3 +1,17 @@
2006-11-20 Paolo Bonzini <bonzini@gnu.org>
* 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 <bonzini@gnu.org>
* tests/rpn.c: Remove pushr/popr.

View file

@ -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)

View file

@ -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 )

View file

@ -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))

View file

@ -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__

View file

@ -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))) )

View file

@ -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))

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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