mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-03 13:20:26 +02:00
ALPHA: Implement lightning Alpha port.
* include/lightning/jit_alpha.h, lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c: New files implementing a lightning Alpha port. Thanks to Trent Nelson and snakebit.net staff for providing access to an Alpha system. * check/float.tst, check/lightning.c, configure.ac, include/lightning.h, include/lightning/Makefile.am, include/lightning/jit_private.h, lib/Makefile.am, lib/jit_disasm.c, lib/jit_size.c, lib/lightning.c: Minor changes to adapt for the new Alpha port.
This commit is contained in:
parent
53dd28d682
commit
05b88d9d45
16 changed files with 5979 additions and 12 deletions
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,17 @@
|
||||||
|
2014-08-10 Paulo Andrade <pcpa@gnu.org>
|
||||||
|
|
||||||
|
* include/lightning/jit_alpha.h, lib/jit_alpha-cpu.c,
|
||||||
|
lib/jit_alpha-fpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c:
|
||||||
|
New files implementing a lightning Alpha port. Thanks
|
||||||
|
to Trent Nelson and snakebit.net staff for providing access
|
||||||
|
to an Alpha system.
|
||||||
|
|
||||||
|
* check/float.tst, check/lightning.c, configure.ac,
|
||||||
|
include/lightning.h, include/lightning/Makefile.am,
|
||||||
|
include/lightning/jit_private.h, lib/Makefile.am,
|
||||||
|
lib/jit_disasm.c, lib/jit_size.c, lib/lightning.c:
|
||||||
|
Minor changes to adapt for the new Alpha port.
|
||||||
|
|
||||||
2014-08-10 Paulo Andrade <pcpa@gnu.org>
|
2014-08-10 Paulo Andrade <pcpa@gnu.org>
|
||||||
|
|
||||||
* lib/lightning.c: Always mark JIT_RET and JIT_FRET as
|
* lib/lightning.c: Always mark JIT_RET and JIT_FRET as
|
||||||
|
|
|
@ -16,17 +16,25 @@ ok:
|
||||||
|
|
||||||
#if __mips__ || __sparc__ || __hppa__
|
#if __mips__ || __sparc__ || __hppa__
|
||||||
# define wnan x7f
|
# define wnan x7f
|
||||||
#elif __arm__ || __aarch64__
|
#elif __arm__ || __aarch64__ || __alpha__
|
||||||
# define wnan 0
|
# define wnan 0
|
||||||
#else
|
#else
|
||||||
# define wnan x80
|
# define wnan x80
|
||||||
#endif
|
#endif
|
||||||
#if __mips__ || __arm__ || __ppc__ || __sparc__ || __hppa__ || __aarch64__ || __s390x__
|
#if __mips__ || __arm__ || __ppc__ || __sparc__ || __hppa__ || __aarch64__ || __s390x__
|
||||||
# define wpinf x7f
|
# define wpinf x7f
|
||||||
|
#elif __alpha__
|
||||||
|
/* (at least) bug compatible with gcc 4.2.3 -ieee */
|
||||||
|
# define wpinf 0
|
||||||
#else
|
#else
|
||||||
# define wpinf x80
|
# define wpinf x80
|
||||||
#endif
|
#endif
|
||||||
#define wninf x80
|
#if __alpha__
|
||||||
|
/* (at least) bug compatible with gcc 4.2.3 -ieee */
|
||||||
|
# define wninf 0
|
||||||
|
#else
|
||||||
|
# define wninf x80
|
||||||
|
#endif
|
||||||
|
|
||||||
/* ensure result is correct and 0 or 1 in the result register */
|
/* ensure result is correct and 0 or 1 in the result register */
|
||||||
#define xtcmp(l, t, op, r0, f0, f1, li, ri) \
|
#define xtcmp(l, t, op, r0, f0, f1, li, ri) \
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* The label_t identifier clashes with a system definitions */
|
/* The label_t identifier clashes with a system definitions */
|
||||||
#if defined(_AIX) || defined(__sun__)
|
#if defined(_AIX) || defined(__sun__) || defined(__osf__)
|
||||||
# define label_t l_label_t
|
# define label_t l_label_t
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -44,6 +44,8 @@
|
||||||
# define DL_HANDLE RTLD_NEXT
|
# define DL_HANDLE RTLD_NEXT
|
||||||
#elif defined(__sgi)
|
#elif defined(__sgi)
|
||||||
static void *DL_HANDLE;
|
static void *DL_HANDLE;
|
||||||
|
#elif defined(__osf__)
|
||||||
|
# define DL_HANDLE NULL
|
||||||
#else
|
#else
|
||||||
# define DL_HANDLE RTLD_DEFAULT
|
# define DL_HANDLE RTLD_DEFAULT
|
||||||
#endif
|
#endif
|
||||||
|
@ -4144,6 +4146,11 @@ main(int argc, char *argv[])
|
||||||
opt_short += snprintf(cmdline + opt_short,
|
opt_short += snprintf(cmdline + opt_short,
|
||||||
sizeof(cmdline) - opt_short,
|
sizeof(cmdline) - opt_short,
|
||||||
" -D__s390x__=1");
|
" -D__s390x__=1");
|
||||||
|
#endif
|
||||||
|
#if defined(__alpha__)
|
||||||
|
opt_short += snprintf(cmdline + opt_short,
|
||||||
|
sizeof(cmdline) - opt_short,
|
||||||
|
" -D__alpha__=1");
|
||||||
#endif
|
#endif
|
||||||
if ((parser.fp = popen(cmdline, "r")) == NULL)
|
if ((parser.fp = popen(cmdline, "r")) == NULL)
|
||||||
error("cannot execute %s", cmdline);
|
error("cannot execute %s", cmdline);
|
||||||
|
|
29
configure.ac
29
configure.ac
|
@ -23,6 +23,10 @@ AC_CONFIG_MACRO_DIR(m4)
|
||||||
|
|
||||||
AC_CONFIG_HEADERS(config.h)
|
AC_CONFIG_HEADERS(config.h)
|
||||||
|
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
case "$target_cpu" in
|
case "$target_cpu" in
|
||||||
ia64)
|
ia64)
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
|
@ -39,16 +43,25 @@ case "$target_cpu" in
|
||||||
CFLAGS="$CFLAGS -D__c99 -Drestrict=";;
|
CFLAGS="$CFLAGS -D__c99 -Drestrict=";;
|
||||||
*) ;;
|
*) ;;
|
||||||
esac ;;
|
esac ;;
|
||||||
|
alpha*)
|
||||||
|
case "$host_os" in
|
||||||
|
osf*)
|
||||||
|
# Get proper varargs and mmap prototypes and definitions
|
||||||
|
CFLAGS="$CFLAGS -D_ANSI_C_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_OSF_SOURCE -D_POSIX_C_SOURCE=199309L"
|
||||||
|
# Want to generate NaN with 0.0/0.0 and Inf with 1.0/0.0
|
||||||
|
if test x$GCC = "xyes"; then
|
||||||
|
CFLAGS="$CFLAGS -mieee"
|
||||||
|
else
|
||||||
|
CFLAGS="$CFLAGS -ieee_with_no_inexact"
|
||||||
|
fi ;;
|
||||||
|
*) ;;
|
||||||
|
esac ;;
|
||||||
*) ;;
|
*) ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_INSTALL
|
|
||||||
AC_PROG_LIBTOOL
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS(mremap ffsl getopt_long_only isnan isinf,,)
|
AC_CHECK_FUNCS(mremap ffsl getopt_long_only isnan isinf,,)
|
||||||
|
|
||||||
AC_CHECK_HEADERS([getopt.h],,,)
|
AC_CHECK_HEADERS([getopt.h stdint.h],,,)
|
||||||
|
|
||||||
AC_ARG_ENABLE(disassembler,
|
AC_ARG_ENABLE(disassembler,
|
||||||
AS_HELP_STRING([--enable-disassembler],
|
AS_HELP_STRING([--enable-disassembler],
|
||||||
|
@ -100,7 +113,7 @@ AC_ARG_ENABLE(devel-get-jit-size,
|
||||||
AM_CONDITIONAL(get_jit_size, [test $GET_JIT_SIZE = yes])
|
AM_CONDITIONAL(get_jit_size, [test $GET_JIT_SIZE = yes])
|
||||||
|
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
*bsd*) SHLIB="" ;;
|
*bsd*|osf*) SHLIB="" ;;
|
||||||
*hpux*) SHLIB="-ldld" ;;
|
*hpux*) SHLIB="-ldld" ;;
|
||||||
*) SHLIB="-ldl" ;;
|
*) SHLIB="-ldl" ;;
|
||||||
esac
|
esac
|
||||||
|
@ -117,6 +130,7 @@ case "$target_cpu" in
|
||||||
hppa*) cpu=hppa ;;
|
hppa*) cpu=hppa ;;
|
||||||
aarch64) cpu=aarch64 ;;
|
aarch64) cpu=aarch64 ;;
|
||||||
s390x) cpu=s390x ;;
|
s390x) cpu=s390x ;;
|
||||||
|
alpha*) cpu=alpha ;;
|
||||||
*) ;;
|
*) ;;
|
||||||
esac
|
esac
|
||||||
AM_CONDITIONAL(cpu_arm, [test cpu-$cpu = cpu-arm])
|
AM_CONDITIONAL(cpu_arm, [test cpu-$cpu = cpu-arm])
|
||||||
|
@ -128,6 +142,7 @@ AM_CONDITIONAL(cpu_ia64, [test cpu-$cpu = cpu-ia64])
|
||||||
AM_CONDITIONAL(cpu_hppa, [test cpu-$cpu = cpu-hppa])
|
AM_CONDITIONAL(cpu_hppa, [test cpu-$cpu = cpu-hppa])
|
||||||
AM_CONDITIONAL(cpu_aarch64, [test cpu-$cpu = cpu-aarch64])
|
AM_CONDITIONAL(cpu_aarch64, [test cpu-$cpu = cpu-aarch64])
|
||||||
AM_CONDITIONAL(cpu_s390x, [test cpu-$cpu = cpu-s390x])
|
AM_CONDITIONAL(cpu_s390x, [test cpu-$cpu = cpu-s390x])
|
||||||
|
AM_CONDITIONAL(cpu_alpha, [test cpu-$cpu = cpu-alpha])
|
||||||
|
|
||||||
# Test x87 if both, x87 and sse2 available
|
# Test x87 if both, x87 and sse2 available
|
||||||
ac_cv_test_x86_x87=
|
ac_cv_test_x86_x87=
|
||||||
|
@ -221,7 +236,7 @@ AM_CONDITIONAL(test_x86_x87, [test x$ac_cv_test_x86_x87 = xyes])
|
||||||
AM_CONDITIONAL(test_arm_arm, [test x$ac_cv_test_arm_arm = xyes])
|
AM_CONDITIONAL(test_arm_arm, [test x$ac_cv_test_arm_arm = xyes])
|
||||||
AM_CONDITIONAL(test_arm_swf, [test x$ac_cv_test_arm_swf = xyes])
|
AM_CONDITIONAL(test_arm_swf, [test x$ac_cv_test_arm_swf = xyes])
|
||||||
|
|
||||||
AM_CONDITIONAL(test_nodata, [test cpu-$cpu = cpu-mips -o cpu-$cpu = cpu-ppc -o cpu-$cpu = cpu-sparc -o cpu-$cpu = cpu-x86 -o cpu-$cpu = cpu-ia64 -o cpu-$cpu = cpu-hppa -o cpu-$cpu = cpu-s390x])
|
AM_CONDITIONAL(test_nodata, [test cpu-$cpu = cpu-mips -o cpu-$cpu = cpu-ppc -o cpu-$cpu = cpu-sparc -o cpu-$cpu = cpu-x86 -o cpu-$cpu = cpu-ia64 -o cpu-$cpu = cpu-hppa -o cpu-$cpu = cpu-s390x -o cpu-$cpu = cpu-alpha])
|
||||||
|
|
||||||
if test $cpu = arm; then
|
if test $cpu = arm; then
|
||||||
AC_CHECK_LIB(m, sqrtf, ,
|
AC_CHECK_LIB(m, sqrtf, ,
|
||||||
|
|
|
@ -26,12 +26,17 @@
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#if HAVE_STDINT_H
|
||||||
|
# include <stdint.h>
|
||||||
|
#endif
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#if defined(__hpux) && defined(__hppa__)
|
#if defined(__hpux) && defined(__hppa__)
|
||||||
# include <machine/param.h>
|
# include <machine/param.h>
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(__alpha__) && defined(__osf__)
|
||||||
|
# include <machine/endian.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __WORDSIZE
|
#ifndef __WORDSIZE
|
||||||
# if defined(WORDSIZE) /* ppc darwin */
|
# if defined(WORDSIZE) /* ppc darwin */
|
||||||
|
@ -137,6 +142,8 @@ typedef jit_int32_t jit_fpr_t;
|
||||||
# include <lightning/jit_aarch64.h>
|
# include <lightning/jit_aarch64.h>
|
||||||
#elif defined(__s390x__)
|
#elif defined(__s390x__)
|
||||||
# include <lightning/jit_s390x.h>
|
# include <lightning/jit_s390x.h>
|
||||||
|
#elif defined(__alpha__)
|
||||||
|
# include <lightning/jit_alpha.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define jit_flag_node 0x00000001 /* patch node not absolute */
|
#define jit_flag_node 0x00000001 /* patch node not absolute */
|
||||||
|
|
|
@ -55,3 +55,7 @@ if cpu_s390x
|
||||||
lightning_include_HEADERS = \
|
lightning_include_HEADERS = \
|
||||||
jit_s390x.h
|
jit_s390x.h
|
||||||
endif
|
endif
|
||||||
|
if cpu_alpha
|
||||||
|
lightning_include_HEADERS = \
|
||||||
|
jit_alpha.h
|
||||||
|
endif
|
||||||
|
|
107
include/lightning/jit_alpha.h
Normal file
107
include/lightning/jit_alpha.h
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2014 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 3, 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.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Paulo Cesar Pereira de Andrade
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _jit_alpha_h
|
||||||
|
#define _jit_alpha_h
|
||||||
|
|
||||||
|
#define JIT_HASH_CONSTS 1
|
||||||
|
#define JIT_NUM_OPERANDS 3
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Types
|
||||||
|
*/
|
||||||
|
#define JIT_FP _FP
|
||||||
|
typedef enum {
|
||||||
|
#define jit_arg_reg_p(i) ((i) >= 0 && (i) < 6)
|
||||||
|
#define jit_r(i) (_S0 + (i))
|
||||||
|
#define jit_r_num() 3
|
||||||
|
#define jit_v(i) (_S3 + (i))
|
||||||
|
#define jit_v_num() 3
|
||||||
|
#define jit_arg_f_reg_p(i) ((i) >= 0 && (i) < 6)
|
||||||
|
#define jit_f(i) (_F2 + (i))
|
||||||
|
#define jit_f_num() 8
|
||||||
|
/* Volatile - Assembly temporary register */
|
||||||
|
_AT,
|
||||||
|
/* Volatile - Return value register */
|
||||||
|
_V0,
|
||||||
|
/* Volatile - Temporary registers */
|
||||||
|
_T0, _T1, _T2, _T3,
|
||||||
|
_T4, _T5, _T6, _T7,
|
||||||
|
_T8, _T9, _T10, _T11,
|
||||||
|
/* FIXME Use callee save register for r0-r2 (instead of 12+ JIT_RN
|
||||||
|
* and 6 JIT_VN because division must call a function)
|
||||||
|
* FIX would be to create proper functions that do not clobber
|
||||||
|
* registers and inject/inline them in the jit */
|
||||||
|
#define JIT_R0 _S0
|
||||||
|
#define JIT_R1 _S1
|
||||||
|
#define JIT_R2 _S2
|
||||||
|
#define JIT_V0 _S3
|
||||||
|
#define JIT_V1 _S4
|
||||||
|
#define JIT_V2 _S5
|
||||||
|
/* Nonvolatile - Saved registers */
|
||||||
|
_S0, _S1, _S2, _S3,
|
||||||
|
_S4, _S5,
|
||||||
|
/* Nonvolatile - Frame pointer */
|
||||||
|
_FP,
|
||||||
|
/* Volatile - Argument registers */
|
||||||
|
_A5, _A4, _A3, _A2,
|
||||||
|
_A1, _A0,
|
||||||
|
/* Volatile - Return address register */
|
||||||
|
_RA,
|
||||||
|
/* Volatile - Temporary register */
|
||||||
|
_PV,
|
||||||
|
/* Nonvolatile - Global pointer */
|
||||||
|
_GP,
|
||||||
|
/* Nonvolatile - Stack pointer */
|
||||||
|
_SP,
|
||||||
|
/* Constant RAZ / writes ignored */
|
||||||
|
_ZERO,
|
||||||
|
#define JIT_F0 _F2
|
||||||
|
#define JIT_F1 _F3
|
||||||
|
#define JIT_F2 _F4
|
||||||
|
#define JIT_F3 _F5
|
||||||
|
#define JIT_F4 _F6
|
||||||
|
#define JIT_F5 _F7
|
||||||
|
#define JIT_F6 _F8
|
||||||
|
#define JIT_F7 _F9
|
||||||
|
/* Volatile - Return value register (real part) */
|
||||||
|
_F0,
|
||||||
|
/* Volatile - Return value register (imaginary part) */
|
||||||
|
_F1,
|
||||||
|
/* Nonvolatile - Saved registers */
|
||||||
|
_F2, _F3, _F4, _F5,
|
||||||
|
_F6, _F7, _F8, _F9,
|
||||||
|
/* Volatile - Temporary registers */
|
||||||
|
_F10, _F11, _F12, _F13,
|
||||||
|
_F14, _F15,
|
||||||
|
/* Volatile - Argument registers */
|
||||||
|
_F21, _F20, _F19, _F18,
|
||||||
|
_F17, _F16,
|
||||||
|
/* Volatile - Temporary registers */
|
||||||
|
_F22, _F23, _R24, _F25,
|
||||||
|
_F26, _F27, _F28, _F29,
|
||||||
|
_F30,
|
||||||
|
/* Constant - RAZ / writes ignored */
|
||||||
|
_F31,
|
||||||
|
/* Lightning internal invalid register identifier */
|
||||||
|
_NOREG,
|
||||||
|
#define JIT_NOREG _NOREG
|
||||||
|
} jit_reg_t;
|
||||||
|
|
||||||
|
#endif /* _jit_alpha_h */
|
|
@ -116,6 +116,11 @@ typedef jit_uint64_t jit_regset_t;
|
||||||
# define JIT_RET _R2
|
# define JIT_RET _R2
|
||||||
# define JIT_FRET _F0
|
# define JIT_FRET _F0
|
||||||
typedef jit_uint32_t jit_regset_t;
|
typedef jit_uint32_t jit_regset_t;
|
||||||
|
#elif defined(__alpha__)
|
||||||
|
# define JIT_SP _SP
|
||||||
|
# define JIT_RET _V0
|
||||||
|
# define JIT_FRET _F0
|
||||||
|
typedef jit_uint64_t jit_regset_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define jit_size(vector) (sizeof(vector) / sizeof((vector)[0]))
|
#define jit_size(vector) (sizeof(vector) / sizeof((vector)[0]))
|
||||||
|
@ -355,7 +360,7 @@ struct jit_compiler {
|
||||||
jit_int32_t rout; /* first output register */
|
jit_int32_t rout; /* first output register */
|
||||||
jit_int32_t breg; /* base register for prolog/epilog */
|
jit_int32_t breg; /* base register for prolog/epilog */
|
||||||
#endif
|
#endif
|
||||||
#if __mips__ || __ia64__
|
#if __mips__ || __ia64__ || __alpha__
|
||||||
jit_int32_t carry;
|
jit_int32_t carry;
|
||||||
#define jit_carry _jitc->carry
|
#define jit_carry _jitc->carry
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -36,6 +36,10 @@ EXTRA_DIST = \
|
||||||
jit_aarch64-cpu.c \
|
jit_aarch64-cpu.c \
|
||||||
jit_aarch64-fpu.c \
|
jit_aarch64-fpu.c \
|
||||||
jit_aarch64-sz.c \
|
jit_aarch64-sz.c \
|
||||||
|
jit_alpha.c \
|
||||||
|
jit_alpha-cpu.c \
|
||||||
|
jit_alpha-fpu.c \
|
||||||
|
jit_alpha-sz.c \
|
||||||
jit_arm.c \
|
jit_arm.c \
|
||||||
jit_arm-cpu.c \
|
jit_arm-cpu.c \
|
||||||
jit_arm-swf.c \
|
jit_arm-swf.c \
|
||||||
|
|
2641
lib/jit_alpha-cpu.c
Normal file
2641
lib/jit_alpha-cpu.c
Normal file
File diff suppressed because it is too large
Load diff
1538
lib/jit_alpha-fpu.c
Normal file
1538
lib/jit_alpha-fpu.c
Normal file
File diff suppressed because it is too large
Load diff
350
lib/jit_alpha-sz.c
Normal file
350
lib/jit_alpha-sz.c
Normal file
|
@ -0,0 +1,350 @@
|
||||||
|
|
||||||
|
#if __WORDSIZE == 64
|
||||||
|
#define JIT_INSTR_MAX 76
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
76,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
12,
|
||||||
|
40,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
12,
|
||||||
|
40,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
44,
|
||||||
|
56,
|
||||||
|
12,
|
||||||
|
32,
|
||||||
|
48,
|
||||||
|
72,
|
||||||
|
48,
|
||||||
|
72,
|
||||||
|
56,
|
||||||
|
56,
|
||||||
|
56,
|
||||||
|
56,
|
||||||
|
48,
|
||||||
|
72,
|
||||||
|
48,
|
||||||
|
72,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
36,
|
||||||
|
12,
|
||||||
|
40,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
12,
|
||||||
|
40,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
12,
|
||||||
|
40,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
40,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
36,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
28,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
36,
|
||||||
|
8,
|
||||||
|
36,
|
||||||
|
68,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
32,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
32,
|
||||||
|
56,
|
||||||
|
20,
|
||||||
|
44,
|
||||||
|
20,
|
||||||
|
44,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
24,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
24,
|
||||||
|
48,
|
||||||
|
24,
|
||||||
|
48,
|
||||||
|
24,
|
||||||
|
48,
|
||||||
|
24,
|
||||||
|
48,
|
||||||
|
24,
|
||||||
|
48,
|
||||||
|
28,
|
||||||
|
52,
|
||||||
|
28,
|
||||||
|
52,
|
||||||
|
28,
|
||||||
|
52,
|
||||||
|
28,
|
||||||
|
52,
|
||||||
|
28,
|
||||||
|
52,
|
||||||
|
28,
|
||||||
|
52,
|
||||||
|
28,
|
||||||
|
52,
|
||||||
|
12,
|
||||||
|
36,
|
||||||
|
12,
|
||||||
|
36,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
28,
|
||||||
|
8,
|
||||||
|
28,
|
||||||
|
8,
|
||||||
|
28,
|
||||||
|
8,
|
||||||
|
28,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
32,
|
||||||
|
52,
|
||||||
|
20,
|
||||||
|
40,
|
||||||
|
20,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
24,
|
||||||
|
44,
|
||||||
|
24,
|
||||||
|
44,
|
||||||
|
24,
|
||||||
|
44,
|
||||||
|
24,
|
||||||
|
44,
|
||||||
|
24,
|
||||||
|
44,
|
||||||
|
28,
|
||||||
|
48,
|
||||||
|
28,
|
||||||
|
48,
|
||||||
|
28,
|
||||||
|
48,
|
||||||
|
28,
|
||||||
|
48,
|
||||||
|
28,
|
||||||
|
48,
|
||||||
|
28,
|
||||||
|
48,
|
||||||
|
28,
|
||||||
|
48,
|
||||||
|
12,
|
||||||
|
32,
|
||||||
|
12,
|
||||||
|
32,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* __WORDSIZE */
|
1253
lib/jit_alpha.c
Normal file
1253
lib/jit_alpha.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -100,6 +100,10 @@ jit_init_debug(char *progname)
|
||||||
disasm_info.mach = bfd_mach_s390_64;
|
disasm_info.mach = bfd_mach_s390_64;
|
||||||
disasm_info.endian = disasm_info.display_endian = BFD_ENDIAN_BIG;
|
disasm_info.endian = disasm_info.display_endian = BFD_ENDIAN_BIG;
|
||||||
disasm_info.disassembler_options = "zarch";
|
disasm_info.disassembler_options = "zarch";
|
||||||
|
# endif
|
||||||
|
# if defined(__alpha__)
|
||||||
|
disasm_info.arch = bfd_arch_alpha;
|
||||||
|
disasm_info.mach = bfd_mach_alpha_ev6;
|
||||||
# endif
|
# endif
|
||||||
disasm_info.print_address_func = disasm_print_address;
|
disasm_info.print_address_func = disasm_print_address;
|
||||||
|
|
||||||
|
@ -117,7 +121,13 @@ jit_init_debug(char *progname)
|
||||||
|
|
||||||
if (bfd_get_file_flags(disasm_bfd) & DYNAMIC) {
|
if (bfd_get_file_flags(disasm_bfd) & DYNAMIC) {
|
||||||
dyn_storage = bfd_get_dynamic_symtab_upper_bound(disasm_bfd);
|
dyn_storage = bfd_get_dynamic_symtab_upper_bound(disasm_bfd);
|
||||||
|
# if defined(__alpha__)
|
||||||
|
/* XXX */
|
||||||
|
if (dyn_storage < 0)
|
||||||
|
dyn_storage = 0;
|
||||||
|
# else
|
||||||
assert(dyn_storage >= 0);
|
assert(dyn_storage >= 0);
|
||||||
|
# endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
dyn_storage = 0;
|
dyn_storage = 0;
|
||||||
|
|
|
@ -48,6 +48,8 @@ static jit_int16_t _szs[jit_code_x86_retval_d + 1] = {
|
||||||
# include "jit_aarch64-sz.c"
|
# include "jit_aarch64-sz.c"
|
||||||
# elif defined(__s390x__)
|
# elif defined(__s390x__)
|
||||||
# include "jit_s390x-sz.c"
|
# include "jit_s390x-sz.c"
|
||||||
|
# elif defined(__alpha__)
|
||||||
|
# include "jit_alpha-sz.c"
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
|
@ -3113,4 +3113,6 @@ _patch_register(jit_state_t *_jit, jit_node_t *node, jit_node_t *link,
|
||||||
# include "jit_aarch64.c"
|
# include "jit_aarch64.c"
|
||||||
#elif defined(__s390x__)
|
#elif defined(__s390x__)
|
||||||
# include "jit_s390x.c"
|
# include "jit_s390x.c"
|
||||||
|
#elif defined(__alpha__)
|
||||||
|
# include "jit_alpha.c"
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue