mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 20:30:28 +02:00
first merge of x86-64 backend and related configury changes
Patches applied: * bonzini@gnu.org--2004b/lightning--x86-64--1.3--base-0 tag of bonzini@gnu.org--2004b/lightning--stable--1.2--patch-28 * bonzini@gnu.org--2004b/lightning--x86-64--1.3--patch-1 start merging from mzscheme... * bonzini@gnu.org--2004b/lightning--x86-64--1.3--patch-2 fix i386 * bonzini@gnu.org--2004b/lightning--x86-64--1.3--patch-3 fix distribution hiccups * bonzini@gnu.org--2004b/lightning--x86-64--1.3--patch-4 adapt for usage outside distribution. * bonzini@gnu.org--2004b/lightning--x86-64--1.3--patch-6 fixes for GNU Smalltalk git-archimport-id: bonzini@gnu.org--2004b/lightning--stable--1.2--patch-30
This commit is contained in:
parent
065bc52d7f
commit
1f7feaffe2
29 changed files with 900 additions and 305 deletions
51
ChangeLog
51
ChangeLog
|
@ -1,10 +1,59 @@
|
||||||
|
2006-10-30 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
|
* lightning/Makefile.am: Use "ln -sf".
|
||||||
|
* lightning/core-common.h: Define jit_negr_l if necessary.
|
||||||
|
|
||||||
2006-10-30 Paolo Bonzini <bonzini@gnu.org>
|
2006-10-30 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
* lightning/i386/asm.h (MOVS*, MOVZ*): Use correct _r[124] macros.
|
* lightning/i386/asm.h (MOVS*, MOVZ*): Use correct _r[124] macros.
|
||||||
|
|
||||||
|
2006-10-29 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
|
* configure.ac: Use lightning.m4 macros.
|
||||||
|
* lightning.m4: Refactor to use common code in configure.ac. Move...
|
||||||
|
* build-aux/lightning.m4: ... here.
|
||||||
|
* lightningize.in: Support suffixes.
|
||||||
|
* opcode/disass.in: Adapt to changes in configure.ac.
|
||||||
|
|
||||||
|
* lightning/ppc/funcs.h: Use __APPLE__ instead of _CALL_DARWIN.
|
||||||
|
* lightning/i386/core-32.h: Likewise.
|
||||||
|
|
||||||
|
2006-10-26 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
|
* configure.ac: Fix compilation test.
|
||||||
|
* lightning/Makefile.am: Symlink LIGHTNING_TARGET_FILES in
|
||||||
|
non-distribution mode.
|
||||||
|
* lightning/i386/Makefile.frag: Use LIGHTNING_TARGET_FILES.
|
||||||
|
|
||||||
|
2006-10-26 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
|
* configure.ac: Subst cpu.
|
||||||
|
* lightning/core-common.h: Make tests pass on i386.
|
||||||
|
* lightning/i386/asm-32.h: Make tests pass on i386.
|
||||||
|
* lightning/i386/asm-64.h: Make tests pass on i386.
|
||||||
|
* lightning/i386/asm-i386.h: Make tests pass on i386.
|
||||||
|
* lightning/i386/core-32.h: Make tests pass on i386.
|
||||||
|
* lightning/i386/core-64.h: Make tests pass on i386.
|
||||||
|
* lightning/i386/core-i386.h: Make tests pass on i386.
|
||||||
|
* tests/Makefile.am: Include files from cpu directory.
|
||||||
|
|
||||||
|
2006-10-26 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
|
* lightning/i386/asm.h: Move to asm-i386.h
|
||||||
|
* lightning/i386/asm-32.h: New, from Matthew Flatt.
|
||||||
|
* lightning/i386/asm-64.h: New, from Matthew Flatt.
|
||||||
|
* lightning/i386/core.h: Move to core-i386.h
|
||||||
|
* lightning/i386/core-32.h: New, from Matthew Flatt.
|
||||||
|
* lightning/i386/core-64.h: New, from Matthew Flatt.
|
||||||
|
* lightning/i386/fp.h: Move to fp-32.h
|
||||||
|
* lightning/i386/fp-64.h: New, dummy.
|
||||||
|
* lightning/i386/Makefile.frag: New.
|
||||||
|
* lightning/Makefile.am: Support per-target Makefile fragments.
|
||||||
|
* configure.ac: Support per-target Makefile fragments and CPU suffixes.
|
||||||
|
|
||||||
2006-10-16 Paolo Bonzini <bonzini@gnu.org>
|
2006-10-16 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
* lightning/i386/funcs.h (jit_flush_code): Fix syntax error. :-(
|
* lightning/i386/i386.h (jit_flush_code): Fix syntax error. :-(
|
||||||
|
|
||||||
2006-07-06 Paolo Bonzini <bonzini@gnu.org>
|
2006-07-06 Paolo Bonzini <bonzini@gnu.org>
|
||||||
Ludovic Courtes <ludovic.courtes@laas.fr>
|
Ludovic Courtes <ludovic.courtes@laas.fr>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# Automake requirements:
|
# Automake requirements:
|
||||||
AUTOMAKE_OPTIONS = 1.7 gnu
|
AUTOMAKE_OPTIONS = 1.8 gnu
|
||||||
|
ACLOCAL_AMFLAGS = -I build-aux
|
||||||
|
|
||||||
SUBDIRS = . doc lightning opcode tests
|
SUBDIRS = . doc lightning opcode tests
|
||||||
EXTRA_DIST = build-aux/texi2dvi build-aux/help2man
|
EXTRA_DIST = build-aux/texi2dvi build-aux/help2man
|
||||||
|
@ -7,5 +8,5 @@ EXTRA_DIST = build-aux/texi2dvi build-aux/help2man
|
||||||
include_HEADERS = lightning.h
|
include_HEADERS = lightning.h
|
||||||
|
|
||||||
aclocaldir = $(datadir)/aclocal
|
aclocaldir = $(datadir)/aclocal
|
||||||
dist_aclocal_DATA = lightning.m4
|
dist_aclocal_DATA = build-aux/lightning.m4
|
||||||
bin_SCRIPTS = lightningize
|
bin_SCRIPTS = lightningize
|
||||||
|
|
11
Makefile.in
11
Makefile.in
|
@ -43,13 +43,14 @@ DIST_COMMON = README $(am__configure_deps) $(dist_aclocal_DATA) \
|
||||||
$(include_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
$(include_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||||
$(srcdir)/config.h.in $(srcdir)/lightningize.in \
|
$(srcdir)/config.h.in $(srcdir)/lightningize.in \
|
||||||
$(top_srcdir)/configure AUTHORS COPYING COPYING.DOC \
|
$(top_srcdir)/configure AUTHORS COPYING COPYING.DOC \
|
||||||
COPYING.LESSER ChangeLog INSTALL NEWS THANKS \
|
COPYING.LESSER ChangeLog INSTALL NEWS THANKS TODO \
|
||||||
build-aux/config.guess build-aux/config.sub build-aux/depcomp \
|
build-aux/config.guess build-aux/config.sub build-aux/depcomp \
|
||||||
build-aux/install-sh build-aux/mdate-sh build-aux/missing \
|
build-aux/install-sh build-aux/mdate-sh build-aux/missing \
|
||||||
build-aux/texinfo.tex
|
build-aux/texinfo.tex
|
||||||
subdir = .
|
subdir = .
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/build-aux/lightning.m4 \
|
||||||
|
$(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
|
@ -159,6 +160,7 @@ build_alias = @build_alias@
|
||||||
build_cpu = @build_cpu@
|
build_cpu = @build_cpu@
|
||||||
build_os = @build_os@
|
build_os = @build_os@
|
||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
|
cpu = @cpu@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
|
@ -194,12 +196,13 @@ target_os = @target_os@
|
||||||
target_vendor = @target_vendor@
|
target_vendor = @target_vendor@
|
||||||
|
|
||||||
# Automake requirements:
|
# Automake requirements:
|
||||||
AUTOMAKE_OPTIONS = 1.7 gnu
|
AUTOMAKE_OPTIONS = 1.8 gnu
|
||||||
|
ACLOCAL_AMFLAGS = -I build-aux
|
||||||
SUBDIRS = . doc lightning opcode tests
|
SUBDIRS = . doc lightning opcode tests
|
||||||
EXTRA_DIST = build-aux/texi2dvi build-aux/help2man
|
EXTRA_DIST = build-aux/texi2dvi build-aux/help2man
|
||||||
include_HEADERS = lightning.h
|
include_HEADERS = lightning.h
|
||||||
aclocaldir = $(datadir)/aclocal
|
aclocaldir = $(datadir)/aclocal
|
||||||
dist_aclocal_DATA = lightning.m4
|
dist_aclocal_DATA = build-aux/lightning.m4
|
||||||
bin_SCRIPTS = lightningize
|
bin_SCRIPTS = lightningize
|
||||||
all: config.h
|
all: config.h
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
1
aclocal.m4
vendored
1
aclocal.m4
vendored
|
@ -848,3 +848,4 @@ AC_SUBST([am__tar])
|
||||||
AC_SUBST([am__untar])
|
AC_SUBST([am__untar])
|
||||||
]) # _AM_PROG_TAR
|
]) # _AM_PROG_TAR
|
||||||
|
|
||||||
|
m4_include([build-aux/lightning.m4])
|
||||||
|
|
64
build-aux/lightning.m4
Normal file
64
build-aux/lightning.m4
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
dnl I'd like this to be edited in -*- Autoconf -*- mode...
|
||||||
|
dnl
|
||||||
|
# serial 2 LIGHTNING_CONFIGURE_IF_NOT_FOUND
|
||||||
|
m4_define([LIGHTNING_BACKENDS], [i386:-32 i386:-64 sparc ppc])
|
||||||
|
|
||||||
|
AC_DEFUN([LIGHTNING_CONFIGURE_LINKS], [
|
||||||
|
|
||||||
|
suffix=
|
||||||
|
case "$host_cpu" in
|
||||||
|
i?86) cpu=i386; suffix=-32 ;;
|
||||||
|
x86_64) cpu=i386; suffix=-64 ;;
|
||||||
|
sparc*) cpu=sparc ;;
|
||||||
|
powerpc) cpu=ppc ;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
if test -n "$cpu" && test -d "$srcdir/lightning/$cpu"; then
|
||||||
|
$1
|
||||||
|
lightning_frag=`cd $srcdir && pwd`/lightning/$cpu/Makefile.frag
|
||||||
|
test -f $lightning_frag || lightning_frag=/dev/null
|
||||||
|
|
||||||
|
asm_src=lightning/$cpu/asm.h
|
||||||
|
test -f $srcdir/lightning/$cpu/asm$suffix.h && asm_src=lightning/$cpu/asm$suffix.h
|
||||||
|
AC_CONFIG_LINKS(lightning/asm.h:$asm_src, [], [asm_src=$asm_src])
|
||||||
|
|
||||||
|
fp_src=lightning/$cpu/fp.h
|
||||||
|
test -f $srcdir/lightning/$cpu/fp$suffix.h && fp_src=lightning/$cpu/fp$suffix.h
|
||||||
|
AC_CONFIG_LINKS(lightning/fp.h:$fp_src, [], [fp_src=$fp_src])
|
||||||
|
|
||||||
|
core_src=lightning/$cpu/core.h
|
||||||
|
test -f $srcdir/lightning/$cpu/core$suffix.h && core_src=lightning/$cpu/core$suffix.h
|
||||||
|
AC_CONFIG_LINKS(lightning/core.h:$core_src, [], [core_src=$core_src])
|
||||||
|
|
||||||
|
funcs_src=lightning/$cpu/funcs.h
|
||||||
|
test -f $srcdir/lightning/$cpu/funcs$suffix.h && funcs_src=lightning/$cpu/funcs$suffix.h
|
||||||
|
AC_CONFIG_LINKS(lightning/funcs.h:$funcs_src, [], [funcs_src=$funcs_src])
|
||||||
|
else
|
||||||
|
$2
|
||||||
|
lightning_frag=/dev/null
|
||||||
|
fi
|
||||||
|
AC_SUBST_FILE(lightning_frag)
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([LIGHTNING_CONFIGURE_IF_NOT_FOUND], [
|
||||||
|
AC_REQUIRE([AC_PROG_LN_S])dnl
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||||
|
AC_CHECK_HEADER(lightning.h)
|
||||||
|
AM_CONDITIONAL(LIGHTNING_MAIN, (exit 1))
|
||||||
|
AM_CONDITIONAL(HAVE_INSTALLED_LIGHTNING, test "$ac_cv_header_lightning_h" = yes)
|
||||||
|
|
||||||
|
lightning=
|
||||||
|
if test "$ac_cv_header_lightning_h" = yes; then
|
||||||
|
lightning=yes
|
||||||
|
else
|
||||||
|
LIGHTNING_CONFIGURE_LINKS(lightning=yes, lightning=no)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AS_IF([test "$lightning" = yes], [
|
||||||
|
AC_DEFINE(HAVE_LIGHTNING, 1, [Define if GNU lightning can be used])
|
||||||
|
$1
|
||||||
|
], [$2])
|
||||||
|
unset lightning
|
||||||
|
|
||||||
|
])dnl
|
10
config.h.in
10
config.h.in
|
@ -6,14 +6,8 @@
|
||||||
/* Define if the test programs should disassemble the code they produce */
|
/* Define if the test programs should disassemble the code they produce */
|
||||||
#undef LIGHTNING_DISASSEMBLE
|
#undef LIGHTNING_DISASSEMBLE
|
||||||
|
|
||||||
/* Define if lightning is targeting the x86 architecture */
|
/* Used to pick the appropriate disassembler, for debugging */
|
||||||
#undef LIGHTNING_I386
|
#undef LIGHTNING_TARGET
|
||||||
|
|
||||||
/* Define if lightning is targeting the PowerPC architecture */
|
|
||||||
#undef LIGHTNING_PPC
|
|
||||||
|
|
||||||
/* Define if lightning is targeting the SPARC architecture */
|
|
||||||
#undef LIGHTNING_SPARC
|
|
||||||
|
|
||||||
/* Name of package */
|
/* Name of package */
|
||||||
#undef PACKAGE
|
#undef PACKAGE
|
||||||
|
|
161
configure
vendored
161
configure
vendored
|
@ -655,16 +655,17 @@ LN_S
|
||||||
RANLIB
|
RANLIB
|
||||||
INSTALL_INFO
|
INSTALL_INFO
|
||||||
BACKENDS
|
BACKENDS
|
||||||
|
cpu
|
||||||
|
LIGHTNING_MAIN_TRUE
|
||||||
|
LIGHTNING_MAIN_FALSE
|
||||||
REGRESSION_TESTING_TRUE
|
REGRESSION_TESTING_TRUE
|
||||||
REGRESSION_TESTING_FALSE
|
REGRESSION_TESTING_FALSE
|
||||||
DISASS_TRUE
|
DISASS_TRUE
|
||||||
DISASS_FALSE
|
DISASS_FALSE
|
||||||
LIGHTNING_MAIN_TRUE
|
|
||||||
LIGHTNING_MAIN_FALSE
|
|
||||||
LIBDISASS
|
LIBDISASS
|
||||||
LIBOBJS
|
LIBOBJS
|
||||||
LTLIBOBJS'
|
LTLIBOBJS'
|
||||||
ac_subst_files=''
|
ac_subst_files='lightning_frag'
|
||||||
ac_precious_vars='build_alias
|
ac_precious_vars='build_alias
|
||||||
host_alias
|
host_alias
|
||||||
target_alias
|
target_alias
|
||||||
|
@ -3995,29 +3996,68 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BACKENDS="i386 sparc ppc"
|
BACKENDS="i386:-32 i386:-64 sparc ppc"
|
||||||
|
|
||||||
|
|
||||||
case "$target_cpu" in
|
|
||||||
i?86) cpu=i386;
|
|
||||||
cat >>confdefs.h <<\_ACEOF
|
suffix=
|
||||||
#define LIGHTNING_I386 1
|
case "$host_cpu" in
|
||||||
_ACEOF
|
i?86) cpu=i386; suffix=-32 ;;
|
||||||
;;
|
x86_64) cpu=i386; suffix=-64 ;;
|
||||||
sparc*) cpu=sparc;
|
sparc*) cpu=sparc ;;
|
||||||
cat >>confdefs.h <<\_ACEOF
|
powerpc) cpu=ppc ;;
|
||||||
#define LIGHTNING_SPARC 1
|
*) ;;
|
||||||
_ACEOF
|
|
||||||
;;
|
|
||||||
powerpc) cpu=ppc;
|
|
||||||
cat >>confdefs.h <<\_ACEOF
|
|
||||||
#define LIGHTNING_PPC 1
|
|
||||||
_ACEOF
|
|
||||||
;;
|
|
||||||
*) { { echo "$as_me:$LINENO: error: cpu $target_cpu not supported" >&5
|
|
||||||
echo "$as_me: error: cpu $target_cpu not supported" >&2;}
|
|
||||||
{ (exit 1); exit 1; }; } ;;
|
|
||||||
esac
|
esac
|
||||||
|
if test -n "$cpu" && test -d "$srcdir/lightning/$cpu"; then
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define LIGHTNING_TARGET `echo "LIGHTNING_$cpu$suffix" | $as_tr_cpp`
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
lightning_frag=`cd $srcdir && pwd`/lightning/$cpu/Makefile.frag
|
||||||
|
test -f $lightning_frag || lightning_frag=/dev/null
|
||||||
|
|
||||||
|
asm_src=lightning/$cpu/asm.h
|
||||||
|
test -f $srcdir/lightning/$cpu/asm$suffix.h && asm_src=lightning/$cpu/asm$suffix.h
|
||||||
|
ac_config_links="$ac_config_links lightning/asm.h:$asm_src"
|
||||||
|
|
||||||
|
|
||||||
|
fp_src=lightning/$cpu/fp.h
|
||||||
|
test -f $srcdir/lightning/$cpu/fp$suffix.h && fp_src=lightning/$cpu/fp$suffix.h
|
||||||
|
ac_config_links="$ac_config_links lightning/fp.h:$fp_src"
|
||||||
|
|
||||||
|
|
||||||
|
core_src=lightning/$cpu/core.h
|
||||||
|
test -f $srcdir/lightning/$cpu/core$suffix.h && core_src=lightning/$cpu/core$suffix.h
|
||||||
|
ac_config_links="$ac_config_links lightning/core.h:$core_src"
|
||||||
|
|
||||||
|
|
||||||
|
funcs_src=lightning/$cpu/funcs.h
|
||||||
|
test -f $srcdir/lightning/$cpu/funcs$suffix.h && funcs_src=lightning/$cpu/funcs$suffix.h
|
||||||
|
ac_config_links="$ac_config_links lightning/funcs.h:$funcs_src"
|
||||||
|
|
||||||
|
else
|
||||||
|
{ { echo "$as_me:$LINENO: error: cpu $target_cpu not supported" >&5
|
||||||
|
echo "$as_me: error: cpu $target_cpu not supported" >&2;}
|
||||||
|
{ (exit 1); exit 1; }; }
|
||||||
|
lightning_frag=/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if :; then
|
||||||
|
LIGHTNING_MAIN_TRUE=
|
||||||
|
LIGHTNING_MAIN_FALSE='#'
|
||||||
|
else
|
||||||
|
LIGHTNING_MAIN_TRUE='#'
|
||||||
|
LIGHTNING_MAIN_FALSE=
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Check whether --enable-disassembling was given.
|
# Check whether --enable-disassembling was given.
|
||||||
|
@ -4053,8 +4093,10 @@ cat >>confdefs.h <<\_ACEOF
|
||||||
#define LIGHTNING_DISASSEMBLE 1
|
#define LIGHTNING_DISASSEMBLE 1
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
|
LIBDISASS="libdisass.a"
|
||||||
|
else
|
||||||
|
LIBDISASS=
|
||||||
fi
|
fi
|
||||||
LIBDISASS=""
|
|
||||||
|
|
||||||
|
|
||||||
if test "$enable_disassembling" != no; then
|
if test "$enable_disassembling" != no; then
|
||||||
|
@ -4065,7 +4107,8 @@ else
|
||||||
DISASS_FALSE=
|
DISASS_FALSE=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
test "$enable_disassembling" != no && LIBDISASS="libdisass.a"
|
test "$enable_disassembling" != no &&
|
||||||
|
|
||||||
|
|
||||||
# Check whether --enable-assertions was given.
|
# Check whether --enable-assertions was given.
|
||||||
if test "${enable_assertions+set}" = set; then
|
if test "${enable_assertions+set}" = set; then
|
||||||
|
@ -4084,23 +4127,6 @@ _ACEOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if :; then
|
|
||||||
LIGHTNING_MAIN_TRUE=
|
|
||||||
LIGHTNING_MAIN_FALSE='#'
|
|
||||||
else
|
|
||||||
LIGHTNING_MAIN_TRUE='#'
|
|
||||||
LIGHTNING_MAIN_FALSE=
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cpu_dir=lightning/$cpu
|
|
||||||
ac_config_links="$ac_config_links lightning/asm.h:$cpu_dir/asm.h lightning/fp.h:$cpu_dir/fp.h lightning/core.h:$cpu_dir/core.h lightning/funcs.h:$cpu_dir/funcs.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ac_config_files="$ac_config_files Makefile doc/Makefile tests/Makefile opcode/Makefile lightning/Makefile"
|
ac_config_files="$ac_config_files Makefile doc/Makefile tests/Makefile opcode/Makefile lightning/Makefile"
|
||||||
|
|
||||||
ac_config_files="$ac_config_files lightningize"
|
ac_config_files="$ac_config_files lightningize"
|
||||||
|
@ -4216,6 +4242,13 @@ echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
|
||||||
Usually this means the macro was only invoked conditionally." >&2;}
|
Usually this means the macro was only invoked conditionally." >&2;}
|
||||||
{ (exit 1); exit 1; }; }
|
{ (exit 1); exit 1; }; }
|
||||||
fi
|
fi
|
||||||
|
if test -z "${LIGHTNING_MAIN_TRUE}" && test -z "${LIGHTNING_MAIN_FALSE}"; then
|
||||||
|
{ { echo "$as_me:$LINENO: error: conditional \"LIGHTNING_MAIN\" was never defined.
|
||||||
|
Usually this means the macro was only invoked conditionally." >&5
|
||||||
|
echo "$as_me: error: conditional \"LIGHTNING_MAIN\" was never defined.
|
||||||
|
Usually this means the macro was only invoked conditionally." >&2;}
|
||||||
|
{ (exit 1); exit 1; }; }
|
||||||
|
fi
|
||||||
if test -z "${REGRESSION_TESTING_TRUE}" && test -z "${REGRESSION_TESTING_FALSE}"; then
|
if test -z "${REGRESSION_TESTING_TRUE}" && test -z "${REGRESSION_TESTING_FALSE}"; then
|
||||||
{ { echo "$as_me:$LINENO: error: conditional \"REGRESSION_TESTING\" was never defined.
|
{ { echo "$as_me:$LINENO: error: conditional \"REGRESSION_TESTING\" was never defined.
|
||||||
Usually this means the macro was only invoked conditionally." >&5
|
Usually this means the macro was only invoked conditionally." >&5
|
||||||
|
@ -4230,13 +4263,6 @@ echo "$as_me: error: conditional \"DISASS\" was never defined.
|
||||||
Usually this means the macro was only invoked conditionally." >&2;}
|
Usually this means the macro was only invoked conditionally." >&2;}
|
||||||
{ (exit 1); exit 1; }; }
|
{ (exit 1); exit 1; }; }
|
||||||
fi
|
fi
|
||||||
if test -z "${LIGHTNING_MAIN_TRUE}" && test -z "${LIGHTNING_MAIN_FALSE}"; then
|
|
||||||
{ { echo "$as_me:$LINENO: error: conditional \"LIGHTNING_MAIN\" was never defined.
|
|
||||||
Usually this means the macro was only invoked conditionally." >&5
|
|
||||||
echo "$as_me: error: conditional \"LIGHTNING_MAIN\" was never defined.
|
|
||||||
Usually this means the macro was only invoked conditionally." >&2;}
|
|
||||||
{ (exit 1); exit 1; }; }
|
|
||||||
fi
|
|
||||||
|
|
||||||
: ${CONFIG_STATUS=./config.status}
|
: ${CONFIG_STATUS=./config.status}
|
||||||
ac_clean_files_save=$ac_clean_files
|
ac_clean_files_save=$ac_clean_files
|
||||||
|
@ -4685,7 +4711,10 @@ cat >>$CONFIG_STATUS <<_ACEOF
|
||||||
# INIT-COMMANDS
|
# INIT-COMMANDS
|
||||||
#
|
#
|
||||||
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
|
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
|
||||||
cpu_dir=$cpu_dir
|
asm_src=$asm_src
|
||||||
|
fp_src=$fp_src
|
||||||
|
core_src=$core_src
|
||||||
|
funcs_src=$funcs_src
|
||||||
|
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
|
@ -4697,10 +4726,10 @@ do
|
||||||
case $ac_config_target in
|
case $ac_config_target in
|
||||||
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
|
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
|
||||||
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
|
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
|
||||||
"lightning/asm.h") CONFIG_LINKS="$CONFIG_LINKS lightning/asm.h:$cpu_dir/asm.h" ;;
|
"lightning/asm.h") CONFIG_LINKS="$CONFIG_LINKS lightning/asm.h:$asm_src" ;;
|
||||||
"lightning/fp.h") CONFIG_LINKS="$CONFIG_LINKS lightning/fp.h:$cpu_dir/fp.h" ;;
|
"lightning/fp.h") CONFIG_LINKS="$CONFIG_LINKS lightning/fp.h:$fp_src" ;;
|
||||||
"lightning/core.h") CONFIG_LINKS="$CONFIG_LINKS lightning/core.h:$cpu_dir/core.h" ;;
|
"lightning/core.h") CONFIG_LINKS="$CONFIG_LINKS lightning/core.h:$core_src" ;;
|
||||||
"lightning/funcs.h") CONFIG_LINKS="$CONFIG_LINKS lightning/funcs.h:$cpu_dir/funcs.h" ;;
|
"lightning/funcs.h") CONFIG_LINKS="$CONFIG_LINKS lightning/funcs.h:$funcs_src" ;;
|
||||||
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
||||||
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
|
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
|
||||||
"tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
|
"tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
|
||||||
|
@ -4765,6 +4794,11 @@ if test -n "$CONFIG_FILES"; then
|
||||||
|
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
|
# Create sed commands to just substitute file output variables.
|
||||||
|
|
||||||
|
# Remaining file output variables are in a fragment that also has non-file
|
||||||
|
# output varibles.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ac_delim='%!_!# '
|
ac_delim='%!_!# '
|
||||||
|
@ -4861,15 +4895,12 @@ LN_S!$LN_S$ac_delim
|
||||||
RANLIB!$RANLIB$ac_delim
|
RANLIB!$RANLIB$ac_delim
|
||||||
INSTALL_INFO!$INSTALL_INFO$ac_delim
|
INSTALL_INFO!$INSTALL_INFO$ac_delim
|
||||||
BACKENDS!$BACKENDS$ac_delim
|
BACKENDS!$BACKENDS$ac_delim
|
||||||
REGRESSION_TESTING_TRUE!$REGRESSION_TESTING_TRUE$ac_delim
|
cpu!$cpu$ac_delim
|
||||||
REGRESSION_TESTING_FALSE!$REGRESSION_TESTING_FALSE$ac_delim
|
|
||||||
DISASS_TRUE!$DISASS_TRUE$ac_delim
|
|
||||||
DISASS_FALSE!$DISASS_FALSE$ac_delim
|
|
||||||
LIGHTNING_MAIN_TRUE!$LIGHTNING_MAIN_TRUE$ac_delim
|
LIGHTNING_MAIN_TRUE!$LIGHTNING_MAIN_TRUE$ac_delim
|
||||||
LIGHTNING_MAIN_FALSE!$LIGHTNING_MAIN_FALSE$ac_delim
|
LIGHTNING_MAIN_FALSE!$LIGHTNING_MAIN_FALSE$ac_delim
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
|
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 94; then
|
||||||
break
|
break
|
||||||
elif $ac_last_try; then
|
elif $ac_last_try; then
|
||||||
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
||||||
|
@ -4889,6 +4920,10 @@ fi
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF
|
cat >>$CONFIG_STATUS <<_ACEOF
|
||||||
cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
|
cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
|
||||||
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
|
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
|
||||||
|
/^[ ]*@lightning_frag@[ ]*$/{
|
||||||
|
r $lightning_frag
|
||||||
|
d
|
||||||
|
}
|
||||||
_ACEOF
|
_ACEOF
|
||||||
sed '
|
sed '
|
||||||
s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
|
s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
|
||||||
|
@ -4908,12 +4943,16 @@ _ACEOF
|
||||||
ac_delim='%!_!# '
|
ac_delim='%!_!# '
|
||||||
for ac_last_try in false false false false false :; do
|
for ac_last_try in false false false false false :; do
|
||||||
cat >conf$$subs.sed <<_ACEOF
|
cat >conf$$subs.sed <<_ACEOF
|
||||||
|
REGRESSION_TESTING_TRUE!$REGRESSION_TESTING_TRUE$ac_delim
|
||||||
|
REGRESSION_TESTING_FALSE!$REGRESSION_TESTING_FALSE$ac_delim
|
||||||
|
DISASS_TRUE!$DISASS_TRUE$ac_delim
|
||||||
|
DISASS_FALSE!$DISASS_FALSE$ac_delim
|
||||||
LIBDISASS!$LIBDISASS$ac_delim
|
LIBDISASS!$LIBDISASS$ac_delim
|
||||||
LIBOBJS!$LIBOBJS$ac_delim
|
LIBOBJS!$LIBOBJS$ac_delim
|
||||||
LTLIBOBJS!$LTLIBOBJS$ac_delim
|
LTLIBOBJS!$LTLIBOBJS$ac_delim
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 3; then
|
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 7; then
|
||||||
break
|
break
|
||||||
elif $ac_last_try; then
|
elif $ac_last_try; then
|
||||||
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
||||||
|
@ -5534,7 +5573,7 @@ fi
|
||||||
|
|
||||||
# A small sanity check
|
# A small sanity check
|
||||||
echo "#include <stdio.h>" > confdefs.h # dummy input file
|
echo "#include <stdio.h>" > confdefs.h # dummy input file
|
||||||
CPPFLAGS="$CPPFLAGS -I. -I$srcdir"
|
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/lightning/$cpu"
|
||||||
|
|
||||||
cat >conftest.$ac_ext <<_ACEOF
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
/* confdefs.h. */
|
/* confdefs.h. */
|
||||||
|
|
38
configure.ac
38
configure.ac
|
@ -26,18 +26,16 @@ AC_PROG_MAKE_SET
|
||||||
AC_PATH_PROG(INSTALL_INFO, install-info, :, $PATH:/sbin)
|
AC_PATH_PROG(INSTALL_INFO, install-info, :, $PATH:/sbin)
|
||||||
AC_EXEEXT
|
AC_EXEEXT
|
||||||
|
|
||||||
BACKENDS="i386 sparc ppc"
|
BACKENDS="LIGHTNING_BACKENDS"
|
||||||
AC_SUBST(BACKENDS)
|
AC_SUBST(BACKENDS)
|
||||||
|
|
||||||
case "$target_cpu" in
|
LIGHTNING_CONFIGURE_LINKS(
|
||||||
i?86) cpu=i386; AC_DEFINE(LIGHTNING_I386, 1,
|
[AC_DEFINE_UNQUOTED(LIGHTNING_TARGET, [AS_TR_CPP([LIGHTNING_$cpu$suffix])],
|
||||||
[Define if lightning is targeting the x86 architecture]) ;;
|
[Used to pick the appropriate disassembler, for debugging])],
|
||||||
sparc*) cpu=sparc; AC_DEFINE(LIGHTNING_SPARC, 1,
|
[AC_MSG_ERROR([cpu $target_cpu not supported])])
|
||||||
[Define if lightning is targeting the SPARC architecture]) ;;
|
|
||||||
powerpc) cpu=ppc; AC_DEFINE(LIGHTNING_PPC, 1,
|
AC_SUBST(cpu)
|
||||||
[Define if lightning is targeting the PowerPC architecture]) ;;
|
AM_CONDITIONAL(LIGHTNING_MAIN, :)
|
||||||
*) AC_MSG_ERROR([cpu $target_cpu not supported]) ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
dnl ---------------------------- COMMAND LINE ---------------------------------
|
dnl ---------------------------- COMMAND LINE ---------------------------------
|
||||||
|
|
||||||
|
@ -56,10 +54,13 @@ fi
|
||||||
if test "$enable_disassembling" != no; then
|
if test "$enable_disassembling" != no; then
|
||||||
AC_DEFINE(LIGHTNING_DISASSEMBLE, 1,
|
AC_DEFINE(LIGHTNING_DISASSEMBLE, 1,
|
||||||
[Define if the test programs should disassemble the code they produce])
|
[Define if the test programs should disassemble the code they produce])
|
||||||
|
LIBDISASS="libdisass.a"
|
||||||
|
else
|
||||||
|
LIBDISASS=
|
||||||
fi
|
fi
|
||||||
LIBDISASS=""
|
|
||||||
AM_CONDITIONAL(DISASS, test "$enable_disassembling" != no)
|
AM_CONDITIONAL(DISASS, test "$enable_disassembling" != no)
|
||||||
test "$enable_disassembling" != no && LIBDISASS="libdisass.a"
|
test "$enable_disassembling" != no &&
|
||||||
|
AC_SUBST(LIBDISASS)
|
||||||
|
|
||||||
AC_ARG_ENABLE( assertions,
|
AC_ARG_ENABLE( assertions,
|
||||||
[ --enable-assertions perform internal consistency checks],
|
[ --enable-assertions perform internal consistency checks],
|
||||||
|
@ -69,19 +70,8 @@ if test "$enable_assertions" != no; then
|
||||||
AC_DEFINE(_ASM_SAFETY, 1, [Define to enable assertions])
|
AC_DEFINE(_ASM_SAFETY, 1, [Define to enable assertions])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AM_CONDITIONAL(LIGHTNING_MAIN, :)
|
|
||||||
|
|
||||||
dnl --------------------------- PRODUCE OUTPUT --------------------------------
|
dnl --------------------------- PRODUCE OUTPUT --------------------------------
|
||||||
|
|
||||||
cpu_dir=lightning/$cpu
|
|
||||||
AC_CONFIG_LINKS(lightning/asm.h:$cpu_dir/asm.h dnl
|
|
||||||
lightning/fp.h:$cpu_dir/fp.h dnl
|
|
||||||
lightning/core.h:$cpu_dir/core.h dnl
|
|
||||||
lightning/funcs.h:$cpu_dir/funcs.h, [],
|
|
||||||
[cpu_dir=$cpu_dir])
|
|
||||||
|
|
||||||
AC_SUBST(LIBDISASS)
|
|
||||||
|
|
||||||
AC_CONFIG_FILES(Makefile doc/Makefile tests/Makefile opcode/Makefile
|
AC_CONFIG_FILES(Makefile doc/Makefile tests/Makefile opcode/Makefile
|
||||||
lightning/Makefile)
|
lightning/Makefile)
|
||||||
AC_CONFIG_FILES(lightningize, chmod +x lightningize)
|
AC_CONFIG_FILES(lightningize, chmod +x lightningize)
|
||||||
|
@ -90,6 +80,6 @@ AC_OUTPUT
|
||||||
|
|
||||||
# A small sanity check
|
# A small sanity check
|
||||||
echo "#include <stdio.h>" > confdefs.h # dummy input file
|
echo "#include <stdio.h>" > confdefs.h # dummy input file
|
||||||
CPPFLAGS="$CPPFLAGS -I. -I$srcdir"
|
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/lightning/$cpu"
|
||||||
AC_TRY_COMPILE([#include "lightning.h"], , ,
|
AC_TRY_COMPILE([#include "lightning.h"], , ,
|
||||||
AC_MSG_WARN(the compiler that was found could not compile GNU lightning))
|
AC_MSG_WARN(the compiler that was found could not compile GNU lightning))
|
||||||
|
|
|
@ -41,7 +41,8 @@ DIST_COMMON = $(dist_man1_MANS) $(lightning_TEXINFOS) \
|
||||||
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||||
$(srcdir)/stamp-vti $(srcdir)/version.texi
|
$(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/build-aux/lightning.m4 \
|
||||||
|
$(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
@ -132,6 +133,7 @@ build_alias = @build_alias@
|
||||||
build_cpu = @build_cpu@
|
build_cpu = @build_cpu@
|
||||||
build_os = @build_os@
|
build_os = @build_os@
|
||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
|
cpu = @cpu@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28.
|
||||||
.TH LIGHTNINGIZE "1" "September 2006" "lightningize 1.2b" "User Commands"
|
.TH LIGHTNINGIZE "1" "October 2006" "lightningize 1.2b" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
lightningize \- manual page for lightningize 1.2b
|
lightningize \- manual page for lightningize 1.2b
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
58
lightning.m4
58
lightning.m4
|
@ -1,58 +0,0 @@
|
||||||
dnl I'd like this to be edited in -*- Autoconf -*- mode...
|
|
||||||
dnl
|
|
||||||
# serial 1 LIGHTNING_CONFIGURE_IF_NOT_FOUND
|
|
||||||
AC_DEFUN([LIGHTNING_CONFIGURE_IF_NOT_FOUND], [
|
|
||||||
AC_REQUIRE([AC_PROG_LN_S])dnl
|
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
|
||||||
AC_CHECK_HEADER(lightning.h)
|
|
||||||
AM_CONDITIONAL(LIGHTNING_MAIN, (exit 1))
|
|
||||||
AM_CONDITIONAL(HAVE_INSTALLED_LIGHTNING, test "$ac_cv_header_lightning_h" = yes)
|
|
||||||
|
|
||||||
lightning=
|
|
||||||
if test "$ac_cv_header_lightning_h" = yes; then
|
|
||||||
lightning=yes
|
|
||||||
else
|
|
||||||
case "$host_cpu" in
|
|
||||||
i?86) cpu_subdir=i386 ;;
|
|
||||||
sparc*) cpu_subdir=sparc ;;
|
|
||||||
powerpc) cpu_subdir=ppc ;;
|
|
||||||
*) ;;
|
|
||||||
esac
|
|
||||||
test -n "$cpu_subdir" && test -d "$srcdir/lightning/$cpu_subdir" && \
|
|
||||||
lightning=yes
|
|
||||||
fi
|
|
||||||
|
|
||||||
ifdef([AC_HELP_STRING], [
|
|
||||||
dnl autoconf 2.50 style
|
|
||||||
if test -n "$cpu_subdir" && test -d "$srcdir/lightning/$cpu_subdir"; then
|
|
||||||
AC_CONFIG_LINKS(lightning/asm.h:lightning/$cpu_subdir/asm.h
|
|
||||||
lightning/core.h:lightning/$cpu_subdir/core.h
|
|
||||||
lightning/fp.h:lightning/$cpu_subdir/fp.h
|
|
||||||
lightning/funcs.h:lightning/$cpu_subdir/funcs.h, , [
|
|
||||||
cpu_subdir=$cpu_subdir
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
], [
|
|
||||||
dnl autoconf 2.13 style
|
|
||||||
AC_OUTPUT_COMMANDS([
|
|
||||||
if test -n "$cpu_subdir" && test -d "$srcdir/lightning/$cpu_subdir"; then
|
|
||||||
for i in asm fp core funcs; do
|
|
||||||
echo linking $srcdir/lightning/$cpu_subdir/$i.h to lightning/$i.h
|
|
||||||
(cd lightning && $LN_S -f $srcdir/$cpu_subdir/$i.h $i.h)
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
], [
|
|
||||||
LN_S='$LN_S'
|
|
||||||
cpu_subdir=$cpu_subdir
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
if test -n "$lightning"; then
|
|
||||||
AC_DEFINE(HAVE_LIGHTNING, 1, [Define if GNU lightning can be used])
|
|
||||||
lightning=
|
|
||||||
ifelse([$1], , :, [$1])
|
|
||||||
else
|
|
||||||
ifelse([$2], , :, [$2])
|
|
||||||
fi
|
|
||||||
|
|
||||||
])dnl
|
|
|
@ -1,18 +1,32 @@
|
||||||
DISTCLEANFILES = asm.h core.h funcs.h fp.h
|
DISTCLEANFILES = asm.h core.h funcs.h fp.h
|
||||||
|
|
||||||
LIGHTNING_FILES = funcs-common.h core-common.h fp-common.h \
|
EXTRA_DIST = i386/Makefile.frag \
|
||||||
asm-common.h \
|
i386/asm-32.h i386/asm-64.h i386/asm-i386.h \
|
||||||
i386/asm.h i386/core.h i386/funcs.h i386/fp.h \
|
i386/core-32.h i386/core-64.h i386/core-i386.h \
|
||||||
sparc/asm.h sparc/core.h sparc/funcs.h sparc/fp.h \
|
i386/fp-32.h i386/fp-64.h \
|
||||||
ppc/asm.h ppc/core.h ppc/funcs.h ppc/fp.h
|
i386/funcs.h \
|
||||||
|
sparc/asm.h sparc/core.h sparc/funcs.h sparc/fp.h \
|
||||||
|
ppc/asm.h ppc/core.h ppc/funcs.h ppc/fp.h
|
||||||
|
|
||||||
|
@lightning_frag@
|
||||||
|
|
||||||
|
LIGHTNING_FILES = funcs-common.h core-common.h fp-common.h asm-common.h \
|
||||||
|
asm.h core.h funcs.h fp.h $(LIGHTNING_TARGET_FILES)
|
||||||
|
|
||||||
if LIGHTNING_MAIN
|
if LIGHTNING_MAIN
|
||||||
|
|
||||||
lightningdir = $(includedir)/lightning
|
lightningdir = $(includedir)/lightning
|
||||||
dist_pkgdata_DATA = Makefile.am
|
dist_pkgdata_DATA = Makefile.am
|
||||||
nobase_dist_lightning_HEADERS = $(LIGHTNING_FILES)
|
dist_lightning_HEADERS = $(LIGHTNING_FILES)
|
||||||
nodist_lightning_HEADERS = asm.h core.h funcs.h fp.h
|
|
||||||
else
|
else
|
||||||
dist_noinst_HEADERS = $(LIGHTNING_FILES)
|
all-am:
|
||||||
|
@set frob $(LIGHTNING_TARGET_FILES); shift; \
|
||||||
|
for i; \
|
||||||
|
do \
|
||||||
|
echo $(LN_S) -f $(srcdir)/$$i `basename $$i`; \
|
||||||
|
$(LN_S) -f $(srcdir)/$$i `basename $$i`; \
|
||||||
|
done
|
||||||
|
|
||||||
dist-hook:
|
dist-hook:
|
||||||
cp -p $(srcdir)/lightning.h $(distdir)
|
cp -p $(srcdir)/lightning.h $(distdir)
|
||||||
|
|
|
@ -39,12 +39,12 @@ build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
target_triplet = @target@
|
target_triplet = @target@
|
||||||
subdir = lightning
|
subdir = lightning
|
||||||
DIST_COMMON = $(am__dist_noinst_HEADERS_DIST) \
|
DIST_COMMON = $(am__dist_lightning_HEADERS_DIST) \
|
||||||
$(am__dist_pkgdata_DATA_DIST) \
|
$(am__dist_pkgdata_DATA_DIST) $(srcdir)/Makefile.am \
|
||||||
$(am__nobase_dist_lightning_HEADERS_DIST) \
|
$(srcdir)/Makefile.in
|
||||||
$(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/build-aux/lightning.m4 \
|
||||||
|
$(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
@ -60,21 +60,13 @@ am__vpath_adj = case $$p in \
|
||||||
esac;
|
esac;
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
am__installdirs = "$(DESTDIR)$(pkgdatadir)" \
|
am__installdirs = "$(DESTDIR)$(pkgdatadir)" \
|
||||||
"$(DESTDIR)$(lightningdir)" "$(DESTDIR)$(lightningdir)"
|
"$(DESTDIR)$(lightningdir)"
|
||||||
dist_pkgdataDATA_INSTALL = $(INSTALL_DATA)
|
dist_pkgdataDATA_INSTALL = $(INSTALL_DATA)
|
||||||
DATA = $(dist_pkgdata_DATA)
|
DATA = $(dist_pkgdata_DATA)
|
||||||
am__dist_noinst_HEADERS_DIST = funcs-common.h core-common.h \
|
am__dist_lightning_HEADERS_DIST = funcs-common.h core-common.h \
|
||||||
fp-common.h asm-common.h i386/asm.h i386/core.h i386/funcs.h \
|
fp-common.h asm-common.h asm.h core.h funcs.h fp.h
|
||||||
i386/fp.h sparc/asm.h sparc/core.h sparc/funcs.h sparc/fp.h \
|
dist_lightningHEADERS_INSTALL = $(INSTALL_HEADER)
|
||||||
ppc/asm.h ppc/core.h ppc/funcs.h ppc/fp.h
|
HEADERS = $(dist_lightning_HEADERS)
|
||||||
am__nobase_dist_lightning_HEADERS_DIST = funcs-common.h core-common.h \
|
|
||||||
fp-common.h asm-common.h i386/asm.h i386/core.h i386/funcs.h \
|
|
||||||
i386/fp.h sparc/asm.h sparc/core.h sparc/funcs.h sparc/fp.h \
|
|
||||||
ppc/asm.h ppc/core.h ppc/funcs.h ppc/fp.h
|
|
||||||
nobase_dist_lightningHEADERS_INSTALL = $(install_sh_DATA)
|
|
||||||
nodist_lightningHEADERS_INSTALL = $(INSTALL_HEADER)
|
|
||||||
HEADERS = $(dist_noinst_HEADERS) $(nobase_dist_lightning_HEADERS) \
|
|
||||||
$(nodist_lightning_HEADERS)
|
|
||||||
ETAGS = etags
|
ETAGS = etags
|
||||||
CTAGS = ctags
|
CTAGS = ctags
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
@ -144,6 +136,7 @@ build_alias = @build_alias@
|
||||||
build_cpu = @build_cpu@
|
build_cpu = @build_cpu@
|
||||||
build_os = @build_os@
|
build_os = @build_os@
|
||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
|
cpu = @cpu@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
|
@ -178,17 +171,20 @@ target_cpu = @target_cpu@
|
||||||
target_os = @target_os@
|
target_os = @target_os@
|
||||||
target_vendor = @target_vendor@
|
target_vendor = @target_vendor@
|
||||||
DISTCLEANFILES = asm.h core.h funcs.h fp.h
|
DISTCLEANFILES = asm.h core.h funcs.h fp.h
|
||||||
LIGHTNING_FILES = funcs-common.h core-common.h fp-common.h \
|
EXTRA_DIST = i386/Makefile.frag \
|
||||||
asm-common.h \
|
i386/asm-32.h i386/asm-64.h i386/asm-i386.h \
|
||||||
i386/asm.h i386/core.h i386/funcs.h i386/fp.h \
|
i386/core-32.h i386/core-64.h i386/core-i386.h \
|
||||||
sparc/asm.h sparc/core.h sparc/funcs.h sparc/fp.h \
|
i386/fp-32.h i386/fp-64.h \
|
||||||
ppc/asm.h ppc/core.h ppc/funcs.h ppc/fp.h
|
i386/funcs.h \
|
||||||
|
sparc/asm.h sparc/core.h sparc/funcs.h sparc/fp.h \
|
||||||
|
ppc/asm.h ppc/core.h ppc/funcs.h ppc/fp.h
|
||||||
|
|
||||||
|
LIGHTNING_FILES = funcs-common.h core-common.h fp-common.h asm-common.h \
|
||||||
|
asm.h core.h funcs.h fp.h $(LIGHTNING_TARGET_FILES)
|
||||||
|
|
||||||
@LIGHTNING_MAIN_TRUE@lightningdir = $(includedir)/lightning
|
@LIGHTNING_MAIN_TRUE@lightningdir = $(includedir)/lightning
|
||||||
@LIGHTNING_MAIN_TRUE@dist_pkgdata_DATA = Makefile.am
|
@LIGHTNING_MAIN_TRUE@dist_pkgdata_DATA = Makefile.am
|
||||||
@LIGHTNING_MAIN_TRUE@nobase_dist_lightning_HEADERS = $(LIGHTNING_FILES)
|
@LIGHTNING_MAIN_TRUE@dist_lightning_HEADERS = $(LIGHTNING_FILES)
|
||||||
@LIGHTNING_MAIN_TRUE@nodist_lightning_HEADERS = asm.h core.h funcs.h fp.h
|
|
||||||
@LIGHTNING_MAIN_FALSE@dist_noinst_HEADERS = $(LIGHTNING_FILES)
|
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
|
@ -239,38 +235,19 @@ uninstall-dist_pkgdataDATA:
|
||||||
echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
|
echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
|
||||||
rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
|
rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
|
||||||
done
|
done
|
||||||
install-nobase_dist_lightningHEADERS: $(nobase_dist_lightning_HEADERS)
|
install-dist_lightningHEADERS: $(dist_lightning_HEADERS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(lightningdir)" || $(mkdir_p) "$(DESTDIR)$(lightningdir)"
|
test -z "$(lightningdir)" || $(mkdir_p) "$(DESTDIR)$(lightningdir)"
|
||||||
@$(am__vpath_adj_setup) \
|
@list='$(dist_lightning_HEADERS)'; for p in $$list; do \
|
||||||
list='$(nobase_dist_lightning_HEADERS)'; for p in $$list; do \
|
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
|
||||||
$(am__vpath_adj) \
|
|
||||||
echo " $(nobase_dist_lightningHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(lightningdir)/$$f'"; \
|
|
||||||
$(nobase_dist_lightningHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(lightningdir)/$$f"; \
|
|
||||||
done
|
|
||||||
|
|
||||||
uninstall-nobase_dist_lightningHEADERS:
|
|
||||||
@$(NORMAL_UNINSTALL)
|
|
||||||
@$(am__vpath_adj_setup) \
|
|
||||||
list='$(nobase_dist_lightning_HEADERS)'; for p in $$list; do \
|
|
||||||
$(am__vpath_adj) \
|
|
||||||
echo " rm -f '$(DESTDIR)$(lightningdir)/$$f'"; \
|
|
||||||
rm -f "$(DESTDIR)$(lightningdir)/$$f"; \
|
|
||||||
done
|
|
||||||
install-nodist_lightningHEADERS: $(nodist_lightning_HEADERS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
test -z "$(lightningdir)" || $(mkdir_p) "$(DESTDIR)$(lightningdir)"
|
|
||||||
@list='$(nodist_lightning_HEADERS)'; for p in $$list; do \
|
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
f=$(am__strip_dir) \
|
||||||
echo " $(nodist_lightningHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(lightningdir)/$$f'"; \
|
echo " $(dist_lightningHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(lightningdir)/$$f'"; \
|
||||||
$(nodist_lightningHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(lightningdir)/$$f"; \
|
$(dist_lightningHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(lightningdir)/$$f"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-nodist_lightningHEADERS:
|
uninstall-dist_lightningHEADERS:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(nodist_lightning_HEADERS)'; for p in $$list; do \
|
@list='$(dist_lightning_HEADERS)'; for p in $$list; do \
|
||||||
f=$(am__strip_dir) \
|
f=$(am__strip_dir) \
|
||||||
echo " rm -f '$(DESTDIR)$(lightningdir)/$$f'"; \
|
echo " rm -f '$(DESTDIR)$(lightningdir)/$$f'"; \
|
||||||
rm -f "$(DESTDIR)$(lightningdir)/$$f"; \
|
rm -f "$(DESTDIR)$(lightningdir)/$$f"; \
|
||||||
|
@ -360,7 +337,7 @@ check-am: all-am
|
||||||
check: check-am
|
check: check-am
|
||||||
all-am: Makefile $(DATA) $(HEADERS)
|
all-am: Makefile $(DATA) $(HEADERS)
|
||||||
installdirs:
|
installdirs:
|
||||||
for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(lightningdir)" "$(DESTDIR)$(lightningdir)"; do \
|
for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(lightningdir)"; do \
|
||||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
done
|
done
|
||||||
install: install-am
|
install: install-am
|
||||||
|
@ -406,9 +383,8 @@ info: info-am
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
|
|
||||||
install-data-am: install-dist_pkgdataDATA \
|
install-data-am: install-dist_lightningHEADERS \
|
||||||
install-nobase_dist_lightningHEADERS \
|
install-dist_pkgdataDATA
|
||||||
install-nodist_lightningHEADERS
|
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
|
@ -434,26 +410,32 @@ ps: ps-am
|
||||||
|
|
||||||
ps-am:
|
ps-am:
|
||||||
|
|
||||||
uninstall-am: uninstall-dist_pkgdataDATA uninstall-info-am \
|
uninstall-am: uninstall-dist_lightningHEADERS \
|
||||||
uninstall-nobase_dist_lightningHEADERS \
|
uninstall-dist_pkgdataDATA uninstall-info-am
|
||||||
uninstall-nodist_lightningHEADERS
|
|
||||||
|
|
||||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
ctags dist-hook distclean distclean-generic distclean-tags \
|
ctags dist-hook distclean distclean-generic distclean-tags \
|
||||||
distdir dvi dvi-am html html-am info info-am install \
|
distdir dvi dvi-am html html-am info info-am install \
|
||||||
install-am install-data install-data-am \
|
install-am install-data install-data-am \
|
||||||
install-dist_pkgdataDATA install-exec install-exec-am \
|
install-dist_lightningHEADERS install-dist_pkgdataDATA \
|
||||||
install-info install-info-am install-man \
|
install-exec install-exec-am install-info install-info-am \
|
||||||
install-nobase_dist_lightningHEADERS \
|
install-man install-strip installcheck installcheck-am \
|
||||||
install-nodist_lightningHEADERS install-strip installcheck \
|
installdirs maintainer-clean maintainer-clean-generic \
|
||||||
installcheck-am installdirs maintainer-clean \
|
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
|
uninstall uninstall-am uninstall-dist_lightningHEADERS \
|
||||||
pdf-am ps ps-am tags uninstall uninstall-am \
|
uninstall-dist_pkgdataDATA uninstall-info-am
|
||||||
uninstall-dist_pkgdataDATA uninstall-info-am \
|
|
||||||
uninstall-nobase_dist_lightningHEADERS \
|
|
||||||
uninstall-nodist_lightningHEADERS
|
|
||||||
|
|
||||||
|
|
||||||
|
@lightning_frag@
|
||||||
|
|
||||||
|
@LIGHTNING_MAIN_FALSE@all-am:
|
||||||
|
@LIGHTNING_MAIN_FALSE@ @set frob $(LIGHTNING_TARGET_FILES); shift; \
|
||||||
|
@LIGHTNING_MAIN_FALSE@ for i; \
|
||||||
|
@LIGHTNING_MAIN_FALSE@ do \
|
||||||
|
@LIGHTNING_MAIN_FALSE@ echo $(LN_S) $(srcdir)/$$i `basename $$i`; \
|
||||||
|
@LIGHTNING_MAIN_FALSE@ $(LN_S) $(srcdir)/$$i `basename $$i`; \
|
||||||
|
@LIGHTNING_MAIN_FALSE@ done
|
||||||
|
|
||||||
@LIGHTNING_MAIN_FALSE@dist-hook:
|
@LIGHTNING_MAIN_FALSE@dist-hook:
|
||||||
@LIGHTNING_MAIN_FALSE@ cp -p $(srcdir)/lightning.h $(distdir)
|
@LIGHTNING_MAIN_FALSE@ cp -p $(srcdir)/lightning.h $(distdir)
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
|
|
@ -480,8 +480,12 @@ typedef union jit_code {
|
||||||
/* ALU */
|
/* ALU */
|
||||||
#define jit_addi_l(d, rs, is) jit_addi_i((d), (rs), (is))
|
#define jit_addi_l(d, rs, is) jit_addi_i((d), (rs), (is))
|
||||||
#define jit_addr_l(d, s1, s2) jit_addr_i((d), (s1), (s2))
|
#define jit_addr_l(d, s1, s2) jit_addr_i((d), (s1), (s2))
|
||||||
|
#ifndef jit_addci_l
|
||||||
#define jit_addci_l(d, rs, is) jit_addci_i((d), (rs), (is))
|
#define jit_addci_l(d, rs, is) jit_addci_i((d), (rs), (is))
|
||||||
|
#endif
|
||||||
|
#ifndef jit_addcr_l
|
||||||
#define jit_addcr_l(d, s1, s2) jit_addcr_i((d), (s1), (s2))
|
#define jit_addcr_l(d, s1, s2) jit_addcr_i((d), (s1), (s2))
|
||||||
|
#endif
|
||||||
#define jit_addxi_l(d, rs, is) jit_addxi_i((d), (rs), (is))
|
#define jit_addxi_l(d, rs, is) jit_addxi_i((d), (rs), (is))
|
||||||
#define jit_addxr_l(d, s1, s2) jit_addxr_i((d), (s1), (s2))
|
#define jit_addxr_l(d, s1, s2) jit_addxr_i((d), (s1), (s2))
|
||||||
#define jit_andi_l(d, rs, is) jit_andi_i((d), (rs), (is))
|
#define jit_andi_l(d, rs, is) jit_andi_i((d), (rs), (is))
|
||||||
|
@ -496,6 +500,9 @@ typedef union jit_code {
|
||||||
#define jit_modr_l(d, s1, s2) jit_modr_i((d), (s1), (s2))
|
#define jit_modr_l(d, s1, s2) jit_modr_i((d), (s1), (s2))
|
||||||
#define jit_muli_l(d, rs, is) jit_muli_i((d), (rs), (is))
|
#define jit_muli_l(d, rs, is) jit_muli_i((d), (rs), (is))
|
||||||
#define jit_mulr_l(d, s1, s2) jit_mulr_i((d), (s1), (s2))
|
#define jit_mulr_l(d, s1, s2) jit_mulr_i((d), (s1), (s2))
|
||||||
|
#ifndef jit_negr_l
|
||||||
|
#define jit_negr_l(d, s1) jit_negr_i((d), (s1))
|
||||||
|
#endif
|
||||||
#define jit_ori_l(d, rs, is) jit_ori_i((d), (rs), (is))
|
#define jit_ori_l(d, rs, is) jit_ori_i((d), (rs), (is))
|
||||||
#define jit_orr_l(d, s1, s2) jit_orr_i((d), (s1), (s2))
|
#define jit_orr_l(d, s1, s2) jit_orr_i((d), (s1), (s2))
|
||||||
#define jit_rshi_l(d, rs, is) jit_rshi_i((d), (rs), (is))
|
#define jit_rshi_l(d, rs, is) jit_rshi_i((d), (rs), (is))
|
||||||
|
|
1
lightning/i386/Makefile.frag
Normal file
1
lightning/i386/Makefile.frag
Normal file
|
@ -0,0 +1 @@
|
||||||
|
LIGHTNING_TARGET_FILES += i386/asm-i386.h i386/core-i386.h
|
61
lightning/i386/asm-32.h
Normal file
61
lightning/i386/asm-32.h
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
/******************************** -*- C -*- ****************************
|
||||||
|
*
|
||||||
|
* Run-time assembler for the i386
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2006 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* This file is part of GNU lightning.
|
||||||
|
*
|
||||||
|
* GNU lightning is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation; either version 2.1, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* GNU lightning is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU lightning; see the file COPYING.LESSER; if not, write to the
|
||||||
|
* Free Software Foundation, 59 Temple Place - Suite 330, Boston,
|
||||||
|
* MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __lightning_asm_h
|
||||||
|
#define __lightning_asm_h
|
||||||
|
|
||||||
|
/* OPCODE + i = immediate operand
|
||||||
|
* + r = register operand
|
||||||
|
* + m = memory operand (disp,base,index,scale)
|
||||||
|
* + sr/sm = a star preceding a register or memory
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "asm-i386.h"
|
||||||
|
|
||||||
|
#ifndef LIGHTNING_DEBUG
|
||||||
|
|
||||||
|
#define _r_D( R, D ) (_Mrm(_b00,_rN(R),_b101 ) ,_jit_I((long)(D)))
|
||||||
|
|
||||||
|
#define CALLm(D,B,I,S) ((_r0P(B) && _r0P(I)) ? _O_D32 (0xe8 ,(long)(D) ) : \
|
||||||
|
JITFAIL("illegal mode in direct jump"))
|
||||||
|
|
||||||
|
#define JCCim(CC,D,B,I,S) ((_r0P(B) && _r0P(I)) ? _OO_D32 (0x0f80|(CC) ,(long)(D) ) : \
|
||||||
|
JITFAIL("illegal mode in conditional jump"))
|
||||||
|
|
||||||
|
#define JMPm(D,B,I,S) ((_r0P(B) && _r0P(I)) ? _O_D32 (0xe9 ,(long)(D) ) : \
|
||||||
|
JITFAIL("illegal mode in direct jump"))
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif /* __lightning_asm_h */
|
||||||
|
|
||||||
|
|
134
lightning/i386/asm-64.h
Normal file
134
lightning/i386/asm-64.h
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
/******************************** -*- C -*- ****************************
|
||||||
|
*
|
||||||
|
* Run-time assembler for the x86-64
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2006 Matthew Flatt
|
||||||
|
*
|
||||||
|
* This file is part of GNU lightning.
|
||||||
|
*
|
||||||
|
* GNU lightning is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation; either version 2.1, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* GNU lightning is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU lightning; see the file COPYING.LESSER; if not, write to the
|
||||||
|
* Free Software Foundation, 59 Temple Place - Suite 330, Boston,
|
||||||
|
* MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __lightning_asm_h
|
||||||
|
#define __lightning_asm_h
|
||||||
|
|
||||||
|
#include "asm-i386.h"
|
||||||
|
|
||||||
|
/* OPCODE + i = immediate operand
|
||||||
|
* + r = register operand
|
||||||
|
* + m = memory operand (disp,base,index,scale)
|
||||||
|
* + sr/sm = a star preceding a register or memory
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef LIGHTNING_DEBUG
|
||||||
|
#define _R12 0x4C
|
||||||
|
#define _R13 0x4D
|
||||||
|
#define JIT_CALLTMPSTART 0x48
|
||||||
|
#define JIT_REXTMP 0x4B
|
||||||
|
|
||||||
|
#define _qMrm(Md,R,M) _jit_B((_M(Md)<<6)|(_r((R & 0x7))<<3)|_m((M & 0x7)))
|
||||||
|
#define _r_D( R, D ) (_Mrm(_b00,_rN(R),_b100 ),_SIB(0,_b100,_b101) ,_jit_I((long)(D)))
|
||||||
|
#define _r_Q( R, D ) (_qMrm(_b00,_rN(R),_b100 ),_SIB(0,_b100,_b101) ,_jit_I((long)(D)))
|
||||||
|
|
||||||
|
#define _REX(R,X,B) ( _jit_B(0x48|((R&0x8)>>1)|((X&0x8)>>2)|((B&0x8)>>3)) )
|
||||||
|
#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 ADDQrr(RS, RD) _qO_Mrm (0x01 ,_b11,_r8(RS),_r8(RD) )
|
||||||
|
#define ADDQir(IM, RD) _qOs_Mrm_sL (0x81 ,_b11,_b000 ,_r8(RD) ,IM )
|
||||||
|
|
||||||
|
#define ANDQrr(RS, RD) _qO_Mrm (0x21 ,_b11,_r8(RS),_r8(RD) )
|
||||||
|
#define ANDQir(IM, RD) _qOs_Mrm_sL (0x81 ,_b11,_b100 ,_r8(RD) ,IM )
|
||||||
|
|
||||||
|
#define CALLm(D,B,I,S) (MOVQir((D), JIT_REXTMP), CALLQsr(JIT_REXTMP))
|
||||||
|
|
||||||
|
#define CALLsr(R) _O_Mrm (0xff ,_b11,_b010,_r4(R) )
|
||||||
|
#define CALLQsr(R) _qO_Mrm (0xff ,_b11,_b010,_r8(R))
|
||||||
|
|
||||||
|
#define CMPQrr(RS, RD) _qO_Mrm (0x39 ,_b11,_r8(RS),_r8(RD) )
|
||||||
|
#define CMPQir(IM, RD) _qO_Mrm_L (0x81 ,_b11,_b111 ,_r8(RD) ,IM )
|
||||||
|
|
||||||
|
#define JCCim(CC,D,B,I,S) (!_jitl.long_jumps \
|
||||||
|
? _OO_D32(0x0f80|(CC), (long)(D) ) \
|
||||||
|
: (_O_D8(0x71^(CC), _jit_UL(_jit.x.pc) + 13), JMPm((long)D, 0, 0, 0)))
|
||||||
|
|
||||||
|
#define JMPm(D,B,I,S) (!_jitl.long_jumps \
|
||||||
|
? _O_D32(0xe9, (long)(D)) \
|
||||||
|
: (MOVQir((D), JIT_REXTMP), _qO_Mrm(0xff,_b11,_b100,_r8(JIT_REXTMP))))
|
||||||
|
|
||||||
|
#define LEAQmr(MD, MB, MI, MS, RD) _qO_r_X (0x8d ,_r8(RD) ,MD,MB,MI,MS )
|
||||||
|
#define MOVQmr(MD, MB, MI, MS, RD) _qO_r_X (0x8b ,_r8(RD) ,MD,MB,MI,MS )
|
||||||
|
#define MOVQrm(RS, MD, MB, MI, MS) _qO_r_X (0x89 ,_r8(RS) ,MD,MB,MI,MS )
|
||||||
|
#define MOVQrQm(RS, MD, MB, MI, MS) _qO_r_XB (0x89 ,_r8(RS) ,MD,MB,MI,MS )
|
||||||
|
#define MOVQir(IM, R) _qOr_Q (0xb8,_r8(R) ,IM )
|
||||||
|
|
||||||
|
#define MOVQrr(RS, RD) _qO_Mrm (0x89 ,_b11,_r8(RS),_r8(RD) )
|
||||||
|
|
||||||
|
#define NEGQr(RD) _qO_Mrm (0xf7 ,_b11,_b011 ,_r8(RD) )
|
||||||
|
|
||||||
|
#define ORQrr(RS, RD) _qO_Mrm (0x09 ,_b11,_r8(RS),_r8(RD) )
|
||||||
|
#define ORQir(IM, RD) _qOs_Mrm_sL (0x81 ,_b11,_b001 ,_r8(RD) ,IM )
|
||||||
|
|
||||||
|
#define POPQr(RD) _qOr (0x58,_r8(RD) )
|
||||||
|
|
||||||
|
#define PUSHQr(R) _qOr (0x50,_r8(R) )
|
||||||
|
#define SALQir SHLQir
|
||||||
|
#define SALQim SHLQim
|
||||||
|
#define SALQrr SHLQrr
|
||||||
|
#define SALQrm SHLQrm
|
||||||
|
|
||||||
|
#define SARQir(IM,RD) (((IM)==1) ? _qO_Mrm (0xd1 ,_b11,_b111,_r8(RD) ) : \
|
||||||
|
_qO_Mrm_B (0xc1 ,_b11,_b111,_r4(RD) ,_u8(IM) ) )
|
||||||
|
#define SARQrr(RS,RD) (((RS)==_CL) ? _qO_Mrm (0xd3 ,_b11,_b111,_r8(RD) ) : \
|
||||||
|
JITFAIL ("source register must be CL" ) )
|
||||||
|
|
||||||
|
|
||||||
|
#define SHLQir(IM,RD) (((IM)==1) ? _qO_Mrm (0xd1 ,_b11,_b100,_r8(RD) ) : \
|
||||||
|
_qO_Mrm_B (0xc1 ,_b11,_b100,_r8(RD) ,_u8(IM) ) )
|
||||||
|
#define SHLQrr(RS,RD) (((RS)==_CL) ? _qO_Mrm (0xd3 ,_b11,_b100,_r8(RD) ) : \
|
||||||
|
JITFAIL ("source register must be CL" ) )
|
||||||
|
|
||||||
|
|
||||||
|
#define SHRQir(IM,RD) (((IM)==1) ? _qO_Mrm (0xd1 ,_b11,_b101,_r8(RD) ) : \
|
||||||
|
_qO_Mrm_B (0xc1 ,_b11,_b101,_r8(RD) ,_u8(IM) ) )
|
||||||
|
#define SHRQrr(RS,RD) (((RS)==_CL) ? _qO_Mrm (0xd3 ,_b11,_b101,_r8(RD) ) : \
|
||||||
|
JITFAIL ("source register must be CL" ) )
|
||||||
|
|
||||||
|
|
||||||
|
#define SUBQrr(RS, RD) _qO_Mrm (0x29 ,_b11,_r8(RS),_r8(RD) )
|
||||||
|
#define SUBQir(IM, RD) _qOs_Mrm_sL (0x81 ,_b11,_b101 ,_r8(RD) ,IM )
|
||||||
|
|
||||||
|
#define TESTQrr(RS, RD) _qO_Mrm (0x85 ,_b11,_r8(RS),_r8(RD) )
|
||||||
|
#define TESTQir(IM, RD) _qO_Mrm_L (0xf7 ,_b11,_b000 ,_r8(RD) ,IM )
|
||||||
|
|
||||||
|
#define XORQrr(RS, RD) _qO_Mrm (0x31 ,_b11,_r8(RS),_r8(RD) )
|
||||||
|
#define XORQir(IM, RD) _qOs_Mrm_sL (0x81 ,_b11,_b110 ,_r8(RD) ,IM )
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif /* __lightning_asm_h */
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __lightning_asm_h
|
#ifndef __lightning_asm_i386_h
|
||||||
#define __lightning_asm_h
|
#define __lightning_asm_i386_h
|
||||||
|
|
||||||
/* OPCODE + i = immediate operand
|
/* OPCODE + i = immediate operand
|
||||||
* + r = register operand
|
* + r = register operand
|
||||||
|
@ -147,7 +147,6 @@ typedef _uc jit_insn;
|
||||||
|
|
||||||
/* memory subformats - urgh! */
|
/* memory subformats - urgh! */
|
||||||
|
|
||||||
#define _r_D( R, D ) (_Mrm(_b00,_rN(R),_b101 ) ,_jit_L((long)(D)))
|
|
||||||
#define _r_0B( R, B ) (_Mrm(_b00,_rN(R),_r4(B)) )
|
#define _r_0B( R, B ) (_Mrm(_b00,_rN(R),_r4(B)) )
|
||||||
#define _r_0BIS(R, B,I,S) (_Mrm(_b00,_rN(R),_b100 ),_SIB(_SCL(S),_r4(I),_r4(B)) )
|
#define _r_0BIS(R, B,I,S) (_Mrm(_b00,_rN(R),_b100 ),_SIB(_SCL(S),_r4(I),_r4(B)) )
|
||||||
#define _r_1B( R, D,B ) (_Mrm(_b01,_rN(R),_r4(B)) ,_jit_B((long)(D)))
|
#define _r_1B( R, D,B ) (_Mrm(_b01,_rN(R),_r4(B)) ,_jit_B((long)(D)))
|
||||||
|
@ -334,9 +333,6 @@ typedef _uc jit_insn;
|
||||||
#define BTSLrm(RS,MD,MB,MI,MS) _OO_r_X (0x0fab ,_r4(RS) ,MD,MB,MI,MS )
|
#define BTSLrm(RS,MD,MB,MI,MS) _OO_r_X (0x0fab ,_r4(RS) ,MD,MB,MI,MS )
|
||||||
|
|
||||||
|
|
||||||
#define CALLm(D,B,I,S) ((_r0P(B) && _r0P(I)) ? _O_D32 (0xe8 ,(int)(D) ) : \
|
|
||||||
JITFAIL("illegal mode in direct jump"))
|
|
||||||
|
|
||||||
#define CALLsr(R) _O_Mrm (0xff ,_b11,_b010,_r4(R) )
|
#define CALLsr(R) _O_Mrm (0xff ,_b11,_b010,_r4(R) )
|
||||||
|
|
||||||
#define CALLsm(D,B,I,S) _O_r_X (0xff ,_b010 ,(int)(D),B,I,S )
|
#define CALLsm(D,B,I,S) _O_r_X (0xff ,_b010 ,(int)(D),B,I,S )
|
||||||
|
@ -482,9 +478,6 @@ typedef _uc jit_insn;
|
||||||
#define JNLESm(D,B,I,S) JCCSim(0xf,D,B,I,S)
|
#define JNLESm(D,B,I,S) JCCSim(0xf,D,B,I,S)
|
||||||
#define JGSm(D,B,I,S) JCCSim(0xf,D,B,I,S)
|
#define JGSm(D,B,I,S) JCCSim(0xf,D,B,I,S)
|
||||||
|
|
||||||
#define JCCim(CC,D,B,I,S) ((_r0P(B) && _r0P(I)) ? _OO_D32 (0x0f80|(CC) ,(int)(D) ) : \
|
|
||||||
JITFAIL("illegal mode in conditional jump"))
|
|
||||||
|
|
||||||
#define JOm(D,B,I,S) JCCim(0x0,D,B,I,S)
|
#define JOm(D,B,I,S) JCCim(0x0,D,B,I,S)
|
||||||
#define JNOm(D,B,I,S) JCCim(0x1,D,B,I,S)
|
#define JNOm(D,B,I,S) JCCim(0x1,D,B,I,S)
|
||||||
#define JCm(D,B,I,S) JCCim(0x2,D,B,I,S)
|
#define JCm(D,B,I,S) JCCim(0x2,D,B,I,S)
|
||||||
|
@ -520,9 +513,6 @@ typedef _uc jit_insn;
|
||||||
#define JMPSm(D,B,I,S) ((_r0P(B) && _r0P(I)) ? _O_D8 (0xeb ,(int)(D) ) : \
|
#define JMPSm(D,B,I,S) ((_r0P(B) && _r0P(I)) ? _O_D8 (0xeb ,(int)(D) ) : \
|
||||||
JITFAIL("illegal mode in short jump"))
|
JITFAIL("illegal mode in short jump"))
|
||||||
|
|
||||||
#define JMPm(D,B,I,S) ((_r0P(B) && _r0P(I)) ? _O_D32 (0xe9 ,(int)(D) ) : \
|
|
||||||
JITFAIL("illegal mode in direct jump"))
|
|
||||||
|
|
||||||
#define JMPsr(R) _O_Mrm (0xff ,_b11,_b100,_r4(R) )
|
#define JMPsr(R) _O_Mrm (0xff ,_b11,_b100,_r4(R) )
|
||||||
|
|
||||||
#define JMPsm(D,B,I,S) _O_r_X (0xff ,_b100 ,(int)(D),B,I,S )
|
#define JMPsm(D,B,I,S) _O_r_X (0xff ,_b100 ,(int)(D),B,I,S )
|
||||||
|
@ -1062,5 +1052,5 @@ typedef _uc jit_insn;
|
||||||
/* Intel Corporation 1997. */
|
/* Intel Corporation 1997. */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif /* __lightning_asm_h */
|
#endif /* __lightning_asm_i386_h */
|
||||||
|
|
80
lightning/i386/core-32.h
Normal file
80
lightning/i386/core-32.h
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
/******************************** -*- C -*- ****************************
|
||||||
|
*
|
||||||
|
* Platform-independent layer (i386 version)
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||||
|
* Written by Paolo Bonzini.
|
||||||
|
*
|
||||||
|
* This file is part of GNU lightning.
|
||||||
|
*
|
||||||
|
* GNU lightning is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation; either version 2.1, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* GNU lightning is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU lightning; see the file COPYING.LESSER; if not, write to the
|
||||||
|
* Free Software Foundation, 59 Temple Place - Suite 330, Boston,
|
||||||
|
* MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __lightning_core_h
|
||||||
|
#define __lightning_core_h
|
||||||
|
|
||||||
|
#include "core-i386.h"
|
||||||
|
|
||||||
|
#define JIT_CAN_16 1
|
||||||
|
|
||||||
|
struct jit_local_state {
|
||||||
|
int framesize;
|
||||||
|
int argssize;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define jit_base_prolog() (PUSHLr(_EBP), MOVLrr(_ESP, _EBP), PUSHLr(_EBX), PUSHLr(_ESI), PUSHLr(_EDI))
|
||||||
|
#define jit_prolog(n) (_jitl.framesize = 8, jit_base_prolog())
|
||||||
|
|
||||||
|
/* The += allows for stack pollution */
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
/* Stack must stay 16-byte aligned: */
|
||||||
|
# define jit_prepare_i(ni) (((ni & 0x3) \
|
||||||
|
? SUBLir(4 * ((((ni) + 3) & ~(0x3)) - (ni)), JIT_SP) \
|
||||||
|
: (void)0), \
|
||||||
|
_jitl.argssize += (((ni) + 3) & ~(0x3)))
|
||||||
|
#else
|
||||||
|
# define jit_prepare_i(ni) (_jitl.argssize += (ni))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define jit_pusharg_i(rs) PUSHLr(rs)
|
||||||
|
#define jit_finish(sub) ((void)jit_calli((sub)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0)
|
||||||
|
#define jit_finishr(reg) (jit_callr((reg)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0)
|
||||||
|
|
||||||
|
#define jit_arg_c() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
||||||
|
#define jit_arg_uc() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
||||||
|
#define jit_arg_s() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
||||||
|
#define jit_arg_us() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
||||||
|
#define jit_arg_i() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
||||||
|
#define jit_arg_ui() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
||||||
|
#define jit_arg_l() ((_jitl.framesize += sizeof(long)) - sizeof(long))
|
||||||
|
#define jit_arg_ul() ((_jitl.framesize += sizeof(long)) - sizeof(long))
|
||||||
|
#define jit_arg_p() ((_jitl.framesize += sizeof(long)) - sizeof(long))
|
||||||
|
|
||||||
|
#define jit_patch_long_at(jump_pc,v) (*_PSL((jump_pc) - sizeof(long)) = _jit_SL((jit_insn *)(v) - (jump_pc)))
|
||||||
|
#define jit_patch_at(jump_pc,v) jit_patch_long_at(jump_pc, v)
|
||||||
|
#define jit_ret() (POPLr(_EDI), POPLr(_ESI), POPLr(_EBX), POPLr(_EBP), RET_())
|
||||||
|
|
||||||
|
#endif /* __lightning_core_h */
|
||||||
|
|
202
lightning/i386/core-64.h
Normal file
202
lightning/i386/core-64.h
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
/******************************** -*- C -*- ****************************
|
||||||
|
*
|
||||||
|
* Platform-independent layer (i386 version)
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||||
|
* Written by Paolo Bonzini.
|
||||||
|
*
|
||||||
|
* This file is part of GNU lightning.
|
||||||
|
*
|
||||||
|
* GNU lightning is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation; either version 2.1, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* GNU lightning is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU lightning; see the file COPYING.LESSER; if not, write to the
|
||||||
|
* Free Software Foundation, 59 Temple Place - Suite 330, Boston,
|
||||||
|
* MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __lightning_core_h
|
||||||
|
#define __lightning_core_h
|
||||||
|
|
||||||
|
#include "core-i386.h"
|
||||||
|
|
||||||
|
struct jit_local_state {
|
||||||
|
int long_jumps;
|
||||||
|
int nextarg_geti;
|
||||||
|
int argssize;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 3-parameter operation */
|
||||||
|
#define jit_qopr_(d, s1, s2, op1d, op2d) \
|
||||||
|
( (s2 == d) ? op1d : \
|
||||||
|
( ((s1 == d) ? (void)0 : (void)MOVQrr(s1, d)), op2d ) \
|
||||||
|
)
|
||||||
|
|
||||||
|
/* 3-parameter operation, with immediate */
|
||||||
|
#define jit_qop_(d, s1, op2d) \
|
||||||
|
|
||||||
|
#define jit_bra_qr(s1, s2, op) (CMPQrr(s2, s1), op, _jit.x.pc)
|
||||||
|
#define _jit_bra_l(rs, is, op) (CMPQir(is, rs), op, _jit.x.pc)
|
||||||
|
|
||||||
|
#define jit_bra_l(rs, is, op) (_s32P((long)(is)) \
|
||||||
|
? _jit_bra_l(rs, is, op) \
|
||||||
|
: (jit_movi_l(JIT_REXTMP, is), jit_bra_qr(JIT_REXTMP, rs, op)))
|
||||||
|
|
||||||
|
/* When CMP with 0 can be replaced with TEST */
|
||||||
|
#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)) )
|
||||||
|
|
||||||
|
#define jit_addi_l(d, rs, is) jit_opi_((d), (rs), ADDQir((is), (d)), LEAQmr((is), (rs), 0, 0, (d)) )
|
||||||
|
#define jit_addr_l(d, s1, s2) jit_opo_((d), (s1), (s2), ADDQrr((s2), (d)), ADDQrr((s1), (d)), LEAQmr(0, (s1), (s2), 1, (d)) )
|
||||||
|
#define jit_andi_l(d, rs, is) jit_qop_ ((d), (rs), ANDQir((is), (d)) )
|
||||||
|
#define jit_andr_l(d, s1, s2) jit_qopr_((d), (s1), (s2), ANDQrr((s1), (d)), ANDQrr((s2), (d)) )
|
||||||
|
#define jit_orr_l(d, s1, s2) jit_qopr_((d), (s1), (s2), ORQrr((s1), (d)), ORQrr((s2), (d)) )
|
||||||
|
#define jit_subr_l(d, s1, s2) jit_qopr_((d), (s1), (s2), (SUBQrr((s1), (d)), NEGQr(d)), SUBQrr((s2), (d)) )
|
||||||
|
#define jit_xorr_l(d, s1, s2) jit_qopr_((d), (s1), (s2), XORQrr((s1), (d)), XORQrr((s2), (d)) )
|
||||||
|
|
||||||
|
/* These can sometimes use byte or word versions! */
|
||||||
|
#define jit_ori_i(d, rs, is) jit_op_ ((d), (rs), jit_reduce(OR, (is), (d)) )
|
||||||
|
#define jit_xori_i(d, rs, is) jit_op_ ((d), (rs), jit_reduce(XOR, (is), (d)) )
|
||||||
|
#define jit_ori_l(d, rs, is) jit_qop_ ((d), (rs), jit_reduceQ(OR, (is), (d)) )
|
||||||
|
#define jit_xori_l(d, rs, is) jit_qop_ ((d), (rs), jit_reduceQ(XOR, (is), (d)) )
|
||||||
|
|
||||||
|
#define jit_lshi_l(d, rs, is) ((is) <= 3 ? LEAQmr(0, 0, (rs), 1 << (is), (d)) : jit_qop_ ((d), (rs), SHLQir((is), (d)) ))
|
||||||
|
#define jit_rshi_l(d, rs, is) jit_qop_ ((d), (rs), SARQir((is), (d)) )
|
||||||
|
#define jit_rshi_ul(d, rs, is) jit_qop_ ((d), (rs), SHRQir((is), (d)) )
|
||||||
|
#define jit_lshr_l(d, r1, r2) jit_replace((r1), (r2), _ECX, jit_qop_ ((d), (r1), SHLQrr(_CL, (d)) ))
|
||||||
|
#define jit_rshr_l(d, r1, r2) jit_replace((r1), (r2), _ECX, jit_qop_ ((d), (r1), SARQrr(_CL, (d)) ))
|
||||||
|
#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_base_prolog() (PUSHQr(_EBP), MOVQrr(_ESP, _EBP), PUSHQr(_EBX), PUSHQr(_R12), PUSHQr(_R13))
|
||||||
|
#define jit_prolog(n) (_jitl.nextarg_geti = 0, jit_base_prolog())
|
||||||
|
|
||||||
|
/* Stack isn't used for arguments: */
|
||||||
|
#define jit_prepare_i(ni) (_jitl.argssize = 0)
|
||||||
|
|
||||||
|
#define jit_pusharg_i(rs) (_jitl.argssize++, MOVQrr(rs, JIT_CALLTMPSTART + _jitl.argssize - 1))
|
||||||
|
#define jit_finish(sub) (jit_shift_args(), (void)jit_calli((sub)), jit_restore_locals())
|
||||||
|
#define jit_reg_is_arg(reg) ((reg == _EDI) || (reg ==_ESI) || (reg == _EDX))
|
||||||
|
#define jit_finishr(reg) ((jit_reg_is_arg((reg)) ? MOVQrr(reg, JIT_REXTMP) : (void)0), \
|
||||||
|
jit_shift_args(), \
|
||||||
|
jit_reg_is_arg((reg)) ? CALQsr((JIT_REXTMP)) : jit_callr((reg)), \
|
||||||
|
jit_restore_locals())
|
||||||
|
|
||||||
|
/* R12 and R13 are callee-save, instead of EDI and ESI. Can be improved. */
|
||||||
|
#define jit_shift_args() \
|
||||||
|
(MOVQrr(_ESI, _R12), MOVQrr(_EDI, _R13), \
|
||||||
|
(_jitl.argssize-- \
|
||||||
|
? (MOVQrr(JIT_CALLTMPSTART + _jitl.argssize, jit_arg_reg_order[0]), \
|
||||||
|
(_jitl.argssize-- \
|
||||||
|
? (MOVQrr(JIT_CALLTMPSTART + _jitl.argssize, jit_arg_reg_order[1]), \
|
||||||
|
(_jitl.argssize-- \
|
||||||
|
? MOVQrr(JIT_CALLTMPSTART, jit_arg_reg_order[2]) \
|
||||||
|
: (void)0)) \
|
||||||
|
: (void)0)) \
|
||||||
|
: (void)0))
|
||||||
|
|
||||||
|
#define jit_restore_locals() \
|
||||||
|
(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])
|
||||||
|
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))) )
|
||||||
|
#define jit_movr_l(d, rs) ((void)((rs) == (d) ? 0 : MOVQrr((rs), (d))))
|
||||||
|
#define jit_movi_l(d, is) ((is) \
|
||||||
|
? (_u32P((long)(is)) \
|
||||||
|
? MOVLir((is), (d)) \
|
||||||
|
: MOVQir((is), (d))) \
|
||||||
|
: XORLrr ((d), (d)) )
|
||||||
|
|
||||||
|
#define jit_bmsr_l(label, s1, s2) (TESTQrr((s1), (s2)), JNZm(label,0,0,0), _jit.x.pc)
|
||||||
|
#define jit_bmcr_l(label, s1, s2) (TESTQrr((s1), (s2)), JZm(label,0,0,0), _jit.x.pc)
|
||||||
|
#define jit_boaddr_l(label, s1, s2) (ADDQrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)
|
||||||
|
#define jit_bosubr_l(label, s1, s2) (SUBQrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)
|
||||||
|
#define jit_boaddr_ul(label, s1, s2) (ADDQrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)
|
||||||
|
#define jit_bosubr_ul(label, s1, s2) (SUBQrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)
|
||||||
|
|
||||||
|
#define jit_boaddi_l(label, rs, is) (ADDQir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)
|
||||||
|
#define jit_bosubi_l(label, rs, is) (SUBQir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)
|
||||||
|
#define jit_boaddi_ul(label, rs, is) (ADDQir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)
|
||||||
|
#define jit_bosubi_ul(label, rs, is) (SUBQir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)
|
||||||
|
|
||||||
|
#define jit_patch_long_at(jump_pc,v) (*_PSL((jump_pc) - sizeof(long)) = _jit_SL((jit_insn *)(v)))
|
||||||
|
#define jit_patch_short_at(jump_pc,v) (*_PSI((jump_pc) - sizeof(int)) = _jit_SI((jit_insn *)(v) - (jump_pc)))
|
||||||
|
#define jit_patch_at(jump_pc,v) (_jitl.long_jumps ? jit_patch_long_at((jump_pc)-3, v) : jit_patch_short_at(jump_pc, v))
|
||||||
|
#define jit_ret() (POPQr(_R13), POPQr(_R12), POPQr(_EBX), POPQr(_EBP), RET_())
|
||||||
|
|
||||||
|
#define _jit_ldi_l(d, is) MOVQmr((is), 0, 0, 0, (d))
|
||||||
|
#define jit_ldr_l(d, rs) MOVQmr(0, (rs), 0, 0, (d))
|
||||||
|
#define jit_ldxr_l(d, s1, s2) MOVQmr(0, (s1), (s2), 1, (d))
|
||||||
|
#define jit_ldxi_l(d, rs, is) MOVQmr((is), (rs), 0, 0, (d))
|
||||||
|
|
||||||
|
#define _jit_sti_l(id, rs) MOVQrm((rs), (id), 0, 0, 0)
|
||||||
|
#define jit_str_l(rd, rs) MOVQrm((rs), 0, (rd), 0, 0)
|
||||||
|
#define jit_stxr_l(d1, d2, rs) MOVQrm((rs), 0, (d1), (d2), 1)
|
||||||
|
#define jit_stxi_l(id, rd, rs) MOVQrm((rs), (id), (rd), 0, 0)
|
||||||
|
|
||||||
|
#define jit_ldi_l(d, is) (_u32P((long)(is)) ? _jit_ldi_l(d, is) : (jit_movi_l(d, is), jit_ldr_l(d, d)))
|
||||||
|
#define jit_sti_l(id, rs) (_u32P((long)(id)) ? _jit_sti_l(id, rs) : (jit_movi_l(JIT_REXTMP, id), MOVQrQm(rs, 0, JIT_REXTMP, 0, 0)))
|
||||||
|
|
||||||
|
#define jit_blti_l(label, rs, is) jit_bra_l0((rs), (is), JLm(label, 0,0,0), JSm(label, 0,0,0) )
|
||||||
|
#define jit_blei_l(label, rs, is) jit_bra_l ((rs), (is), JLEm(label,0,0,0) )
|
||||||
|
#define jit_bgti_l(label, rs, is) jit_bra_l ((rs), (is), JGm(label, 0,0,0) )
|
||||||
|
#define jit_bgei_l(label, rs, is) jit_bra_l0((rs), (is), JGEm(label,0,0,0), JNSm(label,0,0,0) )
|
||||||
|
#define jit_beqi_l(label, rs, is) jit_bra_l0((rs), (is), JEm(label, 0,0,0), JEm(label, 0,0,0) )
|
||||||
|
#define jit_bnei_l(label, rs, is) jit_bra_l0((rs), (is), JNEm(label,0,0,0), JNEm(label,0,0,0) )
|
||||||
|
#define jit_blti_ul(label, rs, is) jit_bra_l ((rs), (is), JBm(label, 0,0,0) )
|
||||||
|
#define jit_blei_ul(label, rs, is) jit_bra_l0((rs), (is), JBEm(label,0,0,0), JEm(label, 0,0,0) )
|
||||||
|
#define jit_bgti_ul(label, rs, is) jit_bra_l0((rs), (is), JAm(label, 0,0,0), JNEm(label,0,0,0) )
|
||||||
|
#define jit_bgei_ul(label, rs, is) jit_bra_l ((rs), (is), JAEm(label,0,0,0) )
|
||||||
|
#define jit_bmsi_l(label, rs, is) jit_bmsi_i(label, rs, is)
|
||||||
|
#define jit_bmci_l(label, rs, is) jit_bmci_i(label, rs, is)
|
||||||
|
|
||||||
|
#define jit_pushr_l(rs) jit_pushr_i(rs)
|
||||||
|
#define jit_popr_l(rs) jit_popr_i(rs)
|
||||||
|
|
||||||
|
#define jit_pusharg_l(rs) jit_pusharg_i(rs)
|
||||||
|
#define jit_retval_l(rd) ((void)jit_movr_l ((rd), _EAX))
|
||||||
|
#define jit_bltr_l(label, s1, s2) jit_bra_qr((s1), (s2), JLm(label, 0,0,0) )
|
||||||
|
#define jit_bler_l(label, s1, s2) jit_bra_qr((s1), (s2), JLEm(label,0,0,0) )
|
||||||
|
#define jit_bgtr_l(label, s1, s2) jit_bra_qr((s1), (s2), JGm(label, 0,0,0) )
|
||||||
|
#define jit_bger_l(label, s1, s2) jit_bra_qr((s1), (s2), JGEm(label,0,0,0) )
|
||||||
|
#define jit_beqr_l(label, s1, s2) jit_bra_qr((s1), (s2), JEm(label, 0,0,0) )
|
||||||
|
#define jit_bner_l(label, s1, s2) jit_bra_qr((s1), (s2), JNEm(label,0,0,0) )
|
||||||
|
#define jit_bltr_ul(label, s1, s2) jit_bra_qr((s1), (s2), JBm(label, 0,0,0) )
|
||||||
|
#define jit_bler_ul(label, s1, s2) jit_bra_qr((s1), (s2), JBEm(label,0,0,0) )
|
||||||
|
#define jit_bgtr_ul(label, s1, s2) jit_bra_qr((s1), (s2), JAm(label, 0,0,0) )
|
||||||
|
#define jit_bger_ul(label, s1, s2) jit_bra_qr((s1), (s2), JAEm(label,0,0,0) )
|
||||||
|
|
||||||
|
#endif /* __lightning_core_h */
|
||||||
|
|
|
@ -24,15 +24,15 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public License
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
* along with GNU lightning; see the file COPYING.LESSER; if not, write to the
|
* along with GNU lightning; see the file COPYING.LESSER; if not, write to the
|
||||||
* Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
|
* Free Software Foundation, 59 Temple Place - Suite 330, Boston,
|
||||||
* MA 02110-1301, USA.
|
* MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __lightning_core_h
|
#ifndef __lightning_core_i386_h
|
||||||
#define __lightning_core_h
|
#define __lightning_core_i386_h
|
||||||
|
|
||||||
#define JIT_FP _EBP
|
#define JIT_FP _EBP
|
||||||
#define JIT_SP _ESP
|
#define JIT_SP _ESP
|
||||||
|
@ -43,10 +43,6 @@
|
||||||
#define JIT_R(i) (_EAX + (i))
|
#define JIT_R(i) (_EAX + (i))
|
||||||
#define JIT_V(i) ((i) == 0 ? _EBX : _ESI + (i) - 1)
|
#define JIT_V(i) ((i) == 0 ? _EBX : _ESI + (i) - 1)
|
||||||
|
|
||||||
struct jit_local_state {
|
|
||||||
int framesize;
|
|
||||||
int argssize;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* 3-parameter operation */
|
/* 3-parameter operation */
|
||||||
#define jit_opr_(d, s1, s2, op1d, op2d) \
|
#define jit_opr_(d, s1, s2, op1d, op2d) \
|
||||||
|
@ -56,7 +52,7 @@ struct jit_local_state {
|
||||||
|
|
||||||
/* 3-parameter operation, with immediate */
|
/* 3-parameter operation, with immediate */
|
||||||
#define jit_op_(d, s1, op2d) \
|
#define jit_op_(d, s1, op2d) \
|
||||||
((s1 == d) ? op2d : (MOVLrr(s1, d), op2d)) \
|
((s1 == d) ? op2d : (MOVLrr(s1, d), op2d))
|
||||||
|
|
||||||
/* 3-parameter operation, optimizable */
|
/* 3-parameter operation, optimizable */
|
||||||
#define jit_opo_(d, s1, s2, op1d, op2d, op12d) \
|
#define jit_opo_(d, s1, s2, op1d, op2d, op12d) \
|
||||||
|
@ -110,10 +106,15 @@ struct jit_local_state {
|
||||||
: jit_replace(_EBX, rs, _EAX, MOVBrm(_AL, dd, db, di, ds)))
|
: jit_replace(_EBX, rs, _EAX, MOVBrm(_AL, dd, db, di, ds)))
|
||||||
|
|
||||||
/* Reduce arguments of XOR/OR/TEST */
|
/* 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) op
|
||||||
#define jit_reduce(op, is, rs) \
|
#define jit_reduce(op, is, rs) \
|
||||||
(_u8P(is) && jit_check8(rs) ? jit_reduce_(op##Bir(is, jit_reg8(rs))) : \
|
(_u8P(is) && jit_check8(rs) ? jit_reduce_(op##Bir(is, jit_reg8(rs))) : \
|
||||||
(_u16P(is) ? jit_reduce_(op##Wir(is, jit_reg16(rs))) : \
|
(_u16P(is) && JIT_CAN_16 ? jit_reduce_(op##Wir(is, jit_reg16(rs))) : \
|
||||||
jit_reduce_(op##Lir(is, rs)) ))
|
jit_reduce_(op##Lir(is, rs)) ))
|
||||||
|
|
||||||
/* Helper macros for MUL/DIV/IDIV */
|
/* Helper macros for MUL/DIV/IDIV */
|
||||||
|
@ -207,6 +208,7 @@ struct jit_local_state {
|
||||||
#define jit_subxi_i(d, rs, is) jit_op_ ((d), (rs), SBBLir((is), (d)) )
|
#define jit_subxi_i(d, rs, is) jit_op_ ((d), (rs), SBBLir((is), (d)) )
|
||||||
#define jit_xorr_i(d, s1, s2) jit_opr_((d), (s1), (s2), XORLrr((s1), (d)), XORLrr((s2), (d)) )
|
#define jit_xorr_i(d, s1, s2) jit_opr_((d), (s1), (s2), XORLrr((s1), (d)), XORLrr((s2), (d)) )
|
||||||
|
|
||||||
|
|
||||||
/* These can sometimes use byte or word versions! */
|
/* These can sometimes use byte or word versions! */
|
||||||
#define jit_ori_i(d, rs, is) jit_op_ ((d), (rs), jit_reduce(OR, (is), (d)) )
|
#define jit_ori_i(d, rs, is) jit_op_ ((d), (rs), jit_reduce(OR, (is), (d)) )
|
||||||
#define jit_xori_i(d, rs, is) jit_op_ ((d), (rs), jit_reduce(XOR, (is), (d)) )
|
#define jit_xori_i(d, rs, is) jit_op_ ((d), (rs), jit_reduce(XOR, (is), (d)) )
|
||||||
|
@ -260,39 +262,21 @@ struct jit_local_state {
|
||||||
/* Stack */
|
/* Stack */
|
||||||
#define jit_pushr_i(rs) PUSHLr(rs)
|
#define jit_pushr_i(rs) PUSHLr(rs)
|
||||||
#define jit_popr_i(rs) POPLr(rs)
|
#define jit_popr_i(rs) POPLr(rs)
|
||||||
#define jit_prolog(n) (_jitl.framesize = 8, PUSHLr(_EBP), MOVLrr(_ESP, _EBP), PUSHLr(_EBX), PUSHLr(_ESI), PUSHLr(_EDI))
|
|
||||||
|
|
||||||
/* The += allows for stack pollution */
|
|
||||||
|
|
||||||
#define jit_prepare_i(ni) (_jitl.argssize += (ni))
|
|
||||||
#define jit_prepare_f(nf) (_jitl.argssize += (nf))
|
#define jit_prepare_f(nf) (_jitl.argssize += (nf))
|
||||||
#define jit_prepare_d(nd) (_jitl.argssize += 2 * (nd))
|
#define jit_prepare_d(nd) (_jitl.argssize += 2 * (nd))
|
||||||
#define jit_pusharg_i(rs) PUSHLr(rs)
|
#define jit_retval_i(rd) ((void)jit_movr_i ((rd), _EAX))
|
||||||
#define jit_finish(sub) (jit_calli((sub)), ADDLir(4 * _jitl.argssize, JIT_SP), _jitl.argssize = 0)
|
|
||||||
#define jit_finishr(reg) (jit_callr((reg)), ADDLir(4 * _jitl.argssize, JIT_SP), _jitl.argssize = 0)
|
|
||||||
#define jit_retval_i(rd) jit_movr_i ((rd), _EAX)
|
|
||||||
|
|
||||||
#define jit_arg_c() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
|
||||||
#define jit_arg_uc() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
|
||||||
#define jit_arg_s() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
|
||||||
#define jit_arg_us() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
|
||||||
#define jit_arg_i() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
|
||||||
#define jit_arg_ui() ((_jitl.framesize += sizeof(int)) - sizeof(int))
|
|
||||||
#define jit_arg_l() ((_jitl.framesize += sizeof(long)) - sizeof(long))
|
|
||||||
#define jit_arg_ul() ((_jitl.framesize += sizeof(long)) - sizeof(long))
|
|
||||||
#define jit_arg_p() ((_jitl.framesize += sizeof(long)) - sizeof(long))
|
|
||||||
|
|
||||||
#define jit_arg_f() ((_jitl.framesize += sizeof(float)) - sizeof(float))
|
#define jit_arg_f() ((_jitl.framesize += sizeof(float)) - sizeof(float))
|
||||||
#define jit_arg_d() ((_jitl.framesize += sizeof(double)) - sizeof(double))
|
#define jit_arg_d() ((_jitl.framesize += sizeof(double)) - sizeof(double))
|
||||||
|
|
||||||
/* Unary */
|
/* Unary */
|
||||||
#define jit_negr_i(d, rs) jit_opi_((d), (rs), NEGLr(d), (XORLrr((d), (d)), SUBLrr((rs), (d))) )
|
#define jit_negr_i(d, rs) jit_opi_((d), (rs), NEGLr(d), (XORLrr((d), (d)), SUBLrr((rs), (d))) )
|
||||||
#define jit_negr_l(d, rs) jit_opi_((d), (rs), NEGLr(d), (XORLrr((d), (d)), SUBLrr((rs), (d))) )
|
|
||||||
|
|
||||||
#define jit_movr_i(d, rs) ((rs) == (d) ? 0 : MOVLrr((rs), (d)))
|
#define jit_movr_i(d, rs) ((void)((rs) == (d) ? 0 : MOVLrr((rs), (d))))
|
||||||
#define jit_movi_i(d, is) ((is) ? MOVLir((is), (d)) : XORLrr ((d), (d)) )
|
#define jit_movi_i(d, is) ((is) ? MOVLir((is), (d)) : XORLrr ((d), (d)) )
|
||||||
#define jit_movi_p(d, is) (MOVLir((is), (d)), _jit.x.pc)
|
#define jit_movi_p(d, is) (jit_movi_l(d, ((long)(is))), _jit.x.pc)
|
||||||
#define jit_patch_movi(pa,pv) (*_PSL((pa) - 4) = _jit_SL((pv)))
|
#define jit_patch_movi(pa,pv) (*_PSL((pa) - sizeof(long)) = _jit_SL((pv)))
|
||||||
|
|
||||||
#define jit_ntoh_ui(d, rs) jit_op_((d), (rs), BSWAPLr(d))
|
#define jit_ntoh_ui(d, rs) jit_op_((d), (rs), BSWAPLr(d))
|
||||||
#define jit_ntoh_us(d, rs) jit_op_((d), (rs), RORWir(8, d))
|
#define jit_ntoh_us(d, rs) jit_op_((d), (rs), RORWir(8, d))
|
||||||
|
@ -360,8 +344,6 @@ struct jit_local_state {
|
||||||
#define jit_calli(label) (CALLm( ((unsigned long) (label)), 0, 0, 0), _jit.x.pc)
|
#define jit_calli(label) (CALLm( ((unsigned long) (label)), 0, 0, 0), _jit.x.pc)
|
||||||
#define jit_callr(reg) (CALLsr(reg))
|
#define jit_callr(reg) (CALLsr(reg))
|
||||||
#define jit_jmpr(reg) JMPsr(reg)
|
#define jit_jmpr(reg) JMPsr(reg)
|
||||||
#define jit_patch_at(jump_pc,v) (*_PSL((jump_pc) - 4) = _jit_SL((v) - (jump_pc)))
|
|
||||||
#define jit_ret() (POPLr(_EDI), POPLr(_ESI), POPLr(_EBX), POPLr(_EBP), RET_())
|
|
||||||
|
|
||||||
/* Memory */
|
/* Memory */
|
||||||
#define jit_ldi_c(d, is) MOVSBLmr((is), 0, 0, 0, (d))
|
#define jit_ldi_c(d, is) MOVSBLmr((is), 0, 0, 0, (d))
|
||||||
|
@ -404,10 +386,12 @@ struct jit_local_state {
|
||||||
#define jit_stxr_i(d1, d2, rs) MOVLrm((rs), 0, (d1), (d2), 1)
|
#define jit_stxr_i(d1, d2, rs) MOVLrm((rs), 0, (d1), (d2), 1)
|
||||||
#define jit_stxi_i(id, rd, rs) MOVLrm((rs), (id), (rd), 0, 0)
|
#define jit_stxi_i(id, rd, rs) MOVLrm((rs), (id), (rd), 0, 0)
|
||||||
|
|
||||||
|
|
||||||
/* Extra */
|
/* Extra */
|
||||||
#define jit_nop() NOP_()
|
#define jit_nop() NOP_()
|
||||||
|
|
||||||
#define _jit_alignment(pc, n) (((pc ^ _MASK(4)) + 1) & _MASK(n))
|
#define _jit_alignment(pc, n) (((pc ^ _MASK(4)) + 1) & _MASK(n))
|
||||||
#define jit_align(n) NOPi(_jit_alignment(_jit_UL(_jit.x.pc), (n)))
|
#define jit_align(n) NOPi(_jit_alignment(_jit_UL(_jit.x.pc), (n)))
|
||||||
|
|
||||||
#endif /* __lightning_core_h */
|
#endif /* __lightning_core_i386_h */
|
||||||
|
|
|
@ -84,8 +84,8 @@
|
||||||
FST ST3
|
FST ST3
|
||||||
|
|
||||||
move FPR3 to FPR1
|
move FPR3 to FPR1
|
||||||
FLD ST1
|
FLD ST3
|
||||||
FST ST4 Stack is rotated, so FPRn becomes STn+1 */
|
FST ST2 Stack is rotated, so FPRn becomes STn+1 */
|
||||||
|
|
||||||
#define jit_movr_d(rd,s1) \
|
#define jit_movr_d(rd,s1) \
|
||||||
((s1) == (rd) ? 0 \
|
((s1) == (rd) ? 0 \
|
38
lightning/i386/fp-64.h
Normal file
38
lightning/i386/fp-64.h
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/******************************** -*- C -*- ****************************
|
||||||
|
*
|
||||||
|
* Run-time assembler & support macros for the i386 math coprocessor
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
|
||||||
|
* Written by Paolo Bonzini.
|
||||||
|
*
|
||||||
|
* This file is part of GNU lightning.
|
||||||
|
*
|
||||||
|
* GNU lightning is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation; either version 2.1, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* GNU lightning is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU lightning; see the file COPYING.LESSER; if not, write to the
|
||||||
|
* Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __lightning_fp_h
|
||||||
|
#define __lightning_fp_h
|
||||||
|
|
||||||
|
#warning SSE math not yet supported
|
||||||
|
|
||||||
|
#endif /* __lightning_fp_h */
|
|
@ -34,6 +34,8 @@
|
||||||
#ifndef __lightning_funcs_h
|
#ifndef __lightning_funcs_h
|
||||||
#define __lightning_funcs_h
|
#define __lightning_funcs_h
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#if !defined(__GNUC__) && !defined(__GNUG__)
|
#if !defined(__GNUC__) && !defined(__GNUG__)
|
||||||
#error Go get GNU C, I do not know how to flush the cache
|
#error Go get GNU C, I do not know how to flush the cache
|
||||||
#error with this compiler.
|
#error with this compiler.
|
||||||
|
@ -97,7 +99,7 @@ _jit_epilog(jit_state *jit)
|
||||||
frame_size += 15; /* the stack must be quad-word */
|
frame_size += 15; /* the stack must be quad-word */
|
||||||
frame_size &= ~15; /* aligned */
|
frame_size &= ~15; /* aligned */
|
||||||
|
|
||||||
#ifdef _CALL_DARWIN
|
#ifdef __APPLE__
|
||||||
LWZrm(0, frame_size + 8, 1); /* lwz r0, x+8(r1) (ret.addr.) */
|
LWZrm(0, frame_size + 8, 1); /* lwz r0, x+8(r1) (ret.addr.) */
|
||||||
#else
|
#else
|
||||||
LWZrm(0, frame_size + 4, 1); /* lwz r0, x+4(r1) (ret.addr.) */
|
LWZrm(0, frame_size + 4, 1); /* lwz r0, x+4(r1) (ret.addr.) */
|
||||||
|
@ -150,7 +152,7 @@ _jit_prolog(jit_state *jit, int n)
|
||||||
|
|
||||||
ofs = frame_size - num_saved_regs * 4;
|
ofs = frame_size - num_saved_regs * 4;
|
||||||
STMWrm(first_saved_reg, ofs, 1); /* stmw rI, ofs(r1) */
|
STMWrm(first_saved_reg, ofs, 1); /* stmw rI, ofs(r1) */
|
||||||
#ifdef _CALL_DARWIN
|
#ifdef __APPLE__
|
||||||
STWrm(0, frame_size + 8, 1); /* stw r0, x+8(r1) */
|
STWrm(0, frame_size + 8, 1); /* stw r0, x+8(r1) */
|
||||||
#else
|
#else
|
||||||
STWrm(0, frame_size + 4, 1); /* stw r0, x+4(r1) */
|
STWrm(0, frame_size + 4, 1); /* stw r0, x+4(r1) */
|
||||||
|
|
|
@ -33,10 +33,9 @@ VERSION=@VERSION@
|
||||||
|
|
||||||
# Directory names.
|
# Directory names.
|
||||||
prefix=@prefix@
|
prefix=@prefix@
|
||||||
|
datarootdir=@datarootdir@
|
||||||
datadir=@datadir@
|
datadir=@datadir@
|
||||||
includedir=@includedir@
|
includedir=@includedir@
|
||||||
pkgdatadir=${datadir}/lightning
|
|
||||||
pkgincludedir=${includedir}/lightning
|
|
||||||
aclocaldir=${datadir}/aclocal
|
aclocaldir=${datadir}/aclocal
|
||||||
|
|
||||||
BACKENDS="@BACKENDS@"
|
BACKENDS="@BACKENDS@"
|
||||||
|
@ -136,8 +135,13 @@ else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$automake" = yes; then
|
||||||
|
if egrep "^$macro_name" $configure_ac >/dev/null 2>&1; then :
|
||||||
|
else
|
||||||
|
echo "Remember to add \`$macro_name' to \`$configure_ac' and reconfigure your package."
|
||||||
|
fi
|
||||||
|
|
||||||
if test -z "$automake"; then
|
else
|
||||||
if egrep "^$macro_name" $configure_ac >/dev/null 2>&1; then :
|
if egrep "^$macro_name" $configure_ac >/dev/null 2>&1; then :
|
||||||
else
|
else
|
||||||
echo "Remember to add \`$macro_name' to \`$configure_ac'."
|
echo "Remember to add \`$macro_name' to \`$configure_ac'."
|
||||||
|
@ -186,9 +190,11 @@ for i in $file_base_names; do
|
||||||
files="$files lightning:$pkgincludedir/$i-common.h"
|
files="$files lightning:$pkgincludedir/$i-common.h"
|
||||||
done
|
done
|
||||||
for j in $BACKENDS; do
|
for j in $BACKENDS; do
|
||||||
dirs="$dirs lightning/$j"
|
dir=`expr $j : '\([^:]*\)' `
|
||||||
|
suffix=`expr $j : '.*:\(.*\)' `
|
||||||
|
dirs="$dirs lightning/$dir"
|
||||||
for i in $file_base_names; do
|
for i in $file_base_names; do
|
||||||
files="$files lightning/$j:$pkgincludedir/$j/$i.h"
|
files="$files lightning/$j:$pkgincludedir/$j/$i$suffix.h"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,8 @@ subdir = opcode
|
||||||
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||||
$(srcdir)/Makefile.in
|
$(srcdir)/Makefile.in
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/build-aux/lightning.m4 \
|
||||||
|
$(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
@ -136,6 +137,7 @@ build_alias = @build_alias@
|
||||||
build_cpu = @build_cpu@
|
build_cpu = @build_cpu@
|
||||||
build_os = @build_os@
|
build_os = @build_os@
|
||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
|
cpu = @cpu@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
|
|
|
@ -34,6 +34,11 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "dis-asm.h"
|
#include "dis-asm.h"
|
||||||
|
|
||||||
|
#define LIGHTNING_I386_32 0
|
||||||
|
#define LIGHTNING_I386_64 1
|
||||||
|
#define LIGHTNING_PPC 2
|
||||||
|
#define LIGHTNING_SPARC 3
|
||||||
|
|
||||||
void disassemble(stream, from, to)
|
void disassemble(stream, from, to)
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
char *from, *to;
|
char *from, *to;
|
||||||
|
@ -50,14 +55,14 @@ void disassemble(stream, from, to)
|
||||||
while (pc < end) {
|
while (pc < end) {
|
||||||
fprintf_vma(stream, pc);
|
fprintf_vma(stream, pc);
|
||||||
putc('\t', stream);
|
putc('\t', stream);
|
||||||
#ifdef LIGHTNING_I386
|
#if LIGHTNING_TARGET == LIGHTNING_I386_32
|
||||||
pc += print_insn_i386(pc, &info);
|
pc += print_insn_i386(pc, &info);
|
||||||
#endif
|
#elif LIGHTNING_TARGET == LIGHTNING_PPC
|
||||||
#ifdef LIGHTNING_PPC
|
|
||||||
pc += print_insn_big_powerpc(pc, &info);
|
pc += print_insn_big_powerpc(pc, &info);
|
||||||
#endif
|
#elif LIGHTNING_TARGET == LIGHTNING_SPARC
|
||||||
#ifdef LIGHTNING_SPARC
|
|
||||||
pc += print_insn_sparc(pc, &info);
|
pc += print_insn_sparc(pc, &info);
|
||||||
|
#else
|
||||||
|
# error disassembling not yet supported for your architecture
|
||||||
#endif
|
#endif
|
||||||
putc('\n', stream);
|
putc('\n', stream);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
|
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I$(top_srcdir)/lightning/$(cpu)
|
||||||
|
|
||||||
check_PROGRAMS = fibit incr printf printf2 rpn fib fibdelay add bp testfp funcfp rpnfp modi ldxi
|
check_PROGRAMS = fibit incr printf printf2 rpn fib fibdelay add bp testfp funcfp rpnfp modi ldxi
|
||||||
noinst_DATA = fibit.ok incr.ok printf.ok printf2.ok rpn.ok fib.ok fibdelay.ok testfp.ok funcfp.ok rpnfp.ok add.ok bp.ok modi.ok ldxi.ok
|
noinst_DATA = fibit.ok incr.ok printf.ok printf2.ok rpn.ok fib.ok fibdelay.ok testfp.ok funcfp.ok rpnfp.ok add.ok bp.ok modi.ok ldxi.ok
|
||||||
|
|
|
@ -44,7 +44,8 @@ check_PROGRAMS = fibit$(EXEEXT) incr$(EXEEXT) printf$(EXEEXT) \
|
||||||
subdir = tests
|
subdir = tests
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/build-aux/lightning.m4 \
|
||||||
|
$(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
@ -189,6 +190,7 @@ build_alias = @build_alias@
|
||||||
build_cpu = @build_cpu@
|
build_cpu = @build_cpu@
|
||||||
build_os = @build_os@
|
build_os = @build_os@
|
||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
|
cpu = @cpu@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
|
@ -222,7 +224,7 @@ target_alias = @target_alias@
|
||||||
target_cpu = @target_cpu@
|
target_cpu = @target_cpu@
|
||||||
target_os = @target_os@
|
target_os = @target_os@
|
||||||
target_vendor = @target_vendor@
|
target_vendor = @target_vendor@
|
||||||
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
|
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I$(top_srcdir)/lightning/$(cpu)
|
||||||
noinst_DATA = fibit.ok incr.ok printf.ok printf2.ok rpn.ok fib.ok fibdelay.ok testfp.ok funcfp.ok rpnfp.ok add.ok bp.ok modi.ok ldxi.ok
|
noinst_DATA = fibit.ok incr.ok printf.ok printf2.ok rpn.ok fib.ok fibdelay.ok testfp.ok funcfp.ok rpnfp.ok add.ok bp.ok modi.ok ldxi.ok
|
||||||
EXTRA_DIST = $(noinst_DATA) run-test
|
EXTRA_DIST = $(noinst_DATA) run-test
|
||||||
@DISASS_TRUE@LDADD = $(top_builddir)/opcode/libdisass.a
|
@DISASS_TRUE@LDADD = $(top_builddir)/opcode/libdisass.a
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue