mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
Merge glibc-ports into ports/ directory.
This commit is contained in:
commit
e84eabb387
1
ports/.gitignore
vendored
Normal file
1
ports/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
autom4te*.cache
|
1
ports/Banner
Normal file
1
ports/Banner
Normal file
@ -0,0 +1 @@
|
||||
Support for some architectures added on, not maintained in glibc core.
|
73
ports/ChangeLog
Normal file
73
ports/ChangeLog
Normal file
@ -0,0 +1,73 @@
|
||||
2012-06-21 Carlos O'Donell <carlos_odonell@mentor.com>
|
||||
|
||||
* .gitignore: New file.
|
||||
|
||||
2012-02-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* README: Update.
|
||||
|
||||
2012-02-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* README: Document use of ranges in copyright notices.
|
||||
|
||||
2011-11-29 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* bare, sysdeps/am29k, sysdeps/i860, sysdeps/i960, sysdeps/m88k,
|
||||
sysdeps/mach, sysdeps/rs6000, sysdeps/standalone, sysdeps/tahoe,
|
||||
sysdeps/unix/bsd, sysdeps/unix/sysv/hpux, sysdeps/unix/sysv/i386,
|
||||
sysdeps/unix/sysv/irix4, sysdeps/unix/sysv/isc2.2,
|
||||
sysdeps/unix/sysv/minix, sysdeps/unix/sysv/sco3.2,
|
||||
sysdeps/unix/sysv/sco3.2.4, sysdeps/unix/sysv/sysv4, sysdeps/vax,
|
||||
sysdeps/z8000: Remove.
|
||||
|
||||
2010-04-14 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* libc-abis: Remove.
|
||||
|
||||
2010-04-06 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* libc-abis: New.
|
||||
|
||||
2006-03-06 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile (%.bz2, %.gz): New pattern rules.
|
||||
|
||||
2006-02-28 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile (glibc-port-%-$(dist-version).tar): Don't include top-level
|
||||
stuff.
|
||||
|
||||
* README: Update for new add-on scheme.
|
||||
|
||||
2006-02-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile: Remove libc boilerplate.
|
||||
* Makeconfig: File removed.
|
||||
* configure.in: File removed.
|
||||
* configure: File removed.
|
||||
|
||||
2005-03-22 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile ($(distname).tar): Fail if sysdeps/.../configure files are
|
||||
not all up to date. Touch configure files after cvs export.
|
||||
(glibc-port-%-$(dist-version).tar): Likewise.
|
||||
|
||||
2004-10-22 Roland McGrath <roland@frob.com>
|
||||
|
||||
* Makefile (dist, dist-ports): New target.
|
||||
(dist-port-%): New pattern rule.
|
||||
* Makeconfig [!subdir] (ports/%): New pattern rule.
|
||||
|
||||
* configure.in: Cope if there are no sysdeps/*/preconfigure files.
|
||||
* configure: Regenerated.
|
||||
|
||||
2004-08-16 Roland McGrath <roland@frob.com>
|
||||
|
||||
* Makefile: New file.
|
||||
|
||||
2004-08-04 Roland McGrath <roland@frob.com>
|
||||
|
||||
New directory implementing glibc add-on infrastructure for
|
||||
ports maintained separate from the core glibc source tree.
|
||||
* README, configure.in, Makeconfig, Banner, ChangeLog: New files.
|
||||
* configure: New generated file.
|
14
ports/ChangeLog.aix
Normal file
14
ports/ChangeLog.aix
Normal file
@ -0,0 +1,14 @@
|
||||
2011-11-29 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/aix: Remove.
|
||||
|
||||
2007-07-10 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/aix/bits/fcntl.h: Comment fix.
|
||||
|
||||
2005-12-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/aix/bits/setjmp.h (_JMPBUF_UNWINDS): Take third
|
||||
argument DEMANGLE, and pass SP value through it.
|
||||
|
||||
* sysdeps/unix/sysv/aix/powerpc/memset.c: Don't use sysdeps/generic.
|
613
ports/ChangeLog.alpha
Normal file
613
ports/ChangeLog.alpha
Normal file
@ -0,0 +1,613 @@
|
||||
2012-06-15 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/soft-fp/sfp-machine.h (FP_TRAPPING_EXCEPTIONS): New.
|
||||
|
||||
* sysdeps/alpha/fpu/s_rint.c (__rint): Handle inexact regardless
|
||||
of -mieee-with-inexact.
|
||||
* sysdeps/alpha/fpu/s_rintf.c (__rintf): Likewise.
|
||||
|
||||
[BZ #13848]
|
||||
* sysdeps/alpha/fpu/s_nearbyint.c (__nearbyint): Fix corner cases
|
||||
similar to BZ#5350.
|
||||
* sysdeps/alpha/fpu/s_nearbyintf.c (__nearbyintf): Likewise.
|
||||
|
||||
* sysdeps/alpha/fpu/s_copysign.c (__copysign): Use builtin.
|
||||
* sysdeps/alpha/fpu/s_copysignf.c (__copysignf): Use builtin.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/resource.h (RLIMIT_RTTIME): New.
|
||||
(prlimit, prlimit64): New declarations.
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/shm.h (SHM_EXEC): New.
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Use only __USE_ATFILE
|
||||
to protect UTIME_NOW and UTIME_OMIT.
|
||||
|
||||
* sysdeps/alpha/fpu/cfloat-compat.h: Remove __GNUC_PREREQ check.
|
||||
* sysdeps/alpha/fpu/s_fabs.c (__fabs): Likewise.
|
||||
* sysdeps/alpha/fpu/s_fabsf.c (__fabsf): Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/sysconf.c (implver): Remove.
|
||||
(amask): Remove.
|
||||
(__sysconf): Use builtins directly.
|
||||
|
||||
* sysdeps/alpha/bits/mathdef.h (float_t): Define as float
|
||||
regardless of __GNUC__.
|
||||
|
||||
2012-06-06 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/strncmp.S: Bound count to LONG_MAX at startup.
|
||||
Re-organize checks vs s2 end-of-count.
|
||||
|
||||
[BZ #13718]
|
||||
* sysdeps/alpha/stxncmp.S: Bound count to LONG_MAX at startup.
|
||||
* sysdeps/alpha/alphaev6/stxncmp.S: Likewise.
|
||||
|
||||
* sysdeps/alpha/fpu/e_sqrt.c: Include <math_private.h> before
|
||||
redefining __ieee758_sqrt.
|
||||
|
||||
* sysdeps/alpha/alphaev6/stxcpy.S: Use cfi markup instead of
|
||||
dual ecoff procedure descriptors.
|
||||
* sysdeps/alpha/alphaev6/stxncpy.S: Likewise.
|
||||
* sysdeps/alpha/bzero.S: Likewise.
|
||||
* sysdeps/alpha/memset.S: Likewise.
|
||||
* sysdeps/alpha/stxcpy.S: Likewise.
|
||||
* sysdeps/alpha/stxncpy.S: Likewise.
|
||||
* sysdeps/unix/alpha/sysdep.h (USEPV_PROF): New.
|
||||
|
||||
* sysdeps/alpha/_mcount.S: Move .prologue after stack alloc.
|
||||
|
||||
2012-06-05 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Use .cfi_signal_frame
|
||||
instead of a hack using extra nops.
|
||||
|
||||
* sysdeps/unxi/alpha/getppid.S: New file.
|
||||
* sysdeps/unxi/alpha/getegid.S: New file.
|
||||
* sysdeps/unxi/alpha/geteuid.S: New file.
|
||||
|
||||
2012-06-01 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/Makefile (CFLAGS-test-misc.c): Set -mieee-with-inexact.
|
||||
|
||||
* sysdeps/alpha/fpu/libm-test-ulps: Regenerate.
|
||||
|
||||
2012-05-30 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/Makefile (CFLAGS-s_fma.c): Set -mieee-with-inexact.
|
||||
(CFLAGS-s_fmaf.c): Likewise.
|
||||
* sysdeps/alpha/fpu/libm-test-ulps: Regenerate.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/brk.S: Fix error path for PIC.
|
||||
|
||||
* sysdeps/alpha/fpu/libm-test-ulps: Regenerate.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove
|
||||
__connect_internal alias.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/ioperm.c (process_cpuinfo): Use
|
||||
fgets_unlocked.
|
||||
|
||||
* sysdeps/alpha/Implies: Include ieee754/dbl-64/wordsize-64.
|
||||
|
||||
* sysdeps/alpha/alphaev6/fpu/e_sqrt.S: Use dynamic rounding.
|
||||
* sysdeps/alpha/alphaev6/fpu/e_sqrtf.S: Likewise.
|
||||
* sysdeps/alpha/fpu/math_private.h (__ieee754_sqrt): New.
|
||||
(__ieee754_sqrtf): New.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/pthread_once.c: Replace
|
||||
_internal alias by hidden_def.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/adjtime.c: Remove __ASSUME_TIMEVAL64.
|
||||
* sysdeps/unix/sysv/linux/alpha/getitimer.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/getrusage.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/select.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/setitimer.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/settimeofday.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/utimes.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/wait4.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/syscalls.list (getitimer): New.
|
||||
(getrusage, gettimeofday, select, setitimer): New.
|
||||
(settimeofday, utimes, wait4): New.
|
||||
* sysdeps/unix/sysv/linux/alpha/kernel-features.h: Remove
|
||||
__ASSUME_TIMEVAL64.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist: Update.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist: Update.
|
||||
|
||||
2012-05-24 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libBrokenLocale.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libanl.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libcrypt.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libdl.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libm.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libnsl.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libpthread.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libresolv.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/librt.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libthread_db.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libutil.abilist: New file.
|
||||
|
||||
* sysdeps/alpha/ldiv.S (imaxdiv): Re-add alias.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/msgctl.c: Remove __ASSUME_32BITUIDS.
|
||||
* sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/mman.h (MADV_HUGEPAGE): New.
|
||||
(MADV_NOHUGEPAGE, MADV_DONTDUMP, MADV_DODUMP): New.
|
||||
|
||||
2012-05-20 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/add_n.S: Rename from add_n.s.
|
||||
* sysdeps/alpha/addmul_1.S: Rename from addmul_1.s.
|
||||
* sysdeps/alpha/alphaev5/add_n.S: Rename from add_n.s.
|
||||
* sysdeps/alpha/alphaev5/lshift.S: Rename from lshift.s.
|
||||
* sysdeps/alpha/alphaev5/rshift.S: Rename from rshift.s.
|
||||
* sysdeps/alpha/alphaev5/sub_n.S: Rename from sub_n.s.
|
||||
* sysdeps/alpha/alphaev6/addmul_1.S: Rename from addmul_1.s.
|
||||
* sysdeps/alpha/lshift.S: Rename from lshift.s.
|
||||
* sysdeps/alpha/mul_1.S: Rename from mul_1.s.
|
||||
* sysdeps/alpha/rshift.S: Rename from rshift.s.
|
||||
* sysdeps/alpha/sub_n.S: Rename from sub_n.s.
|
||||
* sysdeps/alpha/submul_1.S: Rename from submul_1.s.
|
||||
|
||||
2012-05-18 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* data/localplt-alpha-linux-gnu.data: New file.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__FSWORD_T_TYPE,
|
||||
__SYSCALL_SLONG_TYPE, __SYSCALL_ULONG_TYPE): New.
|
||||
|
||||
2012-04-26 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/kernel-features.h: Correct kernel
|
||||
version needed to define __ASSUME_ACCEPT4.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/ioperm.c (process_cpuinfo): Use "c"
|
||||
and "e" in fopen.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/mman.h (MAP_STACK): Define.
|
||||
(MAP_HUGETLB): Likewise.
|
||||
|
||||
* sysdeps/alpha/bits/mathdef.h: Remove __STDC__ conditionals.
|
||||
* sysdeps/unix/alpha/sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/sysdep.h: Likewise.
|
||||
|
||||
* sysdeps/alpha/fpu/bits/fenv.h: Use const instead of __const.
|
||||
* sysdeps/unix/sysv/linux/alpha/oldglob.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/sys/acct.h: Likewise.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (O_PATH): Define.
|
||||
|
||||
2012-03-27 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/elf/configure.in: Move to ...
|
||||
* sysdeps/alpha/configure.in: ... here. Update comment.
|
||||
* sysdeps/alpha/configure: Regenerate.
|
||||
* sysdeps/alpha/elf/crti.S: Move to ...
|
||||
* sysdeps/alpha/crti.S: ... here.
|
||||
* sysdeps/alpha/elf/crtn.S: Move to ...
|
||||
* sysdeps/alpha/crtn.S: ... here.
|
||||
* sysdeps/alpha/elf/start.S: Move to ...
|
||||
* sysdeps/alpha/start.S: ... here.
|
||||
|
||||
2012-03-21 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/hp-timing.h: Include <_itoa.h> instead
|
||||
of <stdio-common/_itoa.h>.
|
||||
|
||||
2012-03-19 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/fpu/math_private.h: New file.
|
||||
|
||||
2012-03-11 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/socket.h: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/socket_type.h: New file.
|
||||
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2012-03-04 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/ioperm.c (inline_sethae): Mark
|
||||
as always_inline.
|
||||
|
||||
2012-03-04 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/socket.h (recvmmsg): Only
|
||||
declare if __USE_GNU.
|
||||
(sendmmsg): Add declaration.
|
||||
|
||||
2012-03-04 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Don't name the
|
||||
siginfo_t struct. Add forward declaration of pthread_attr_t;
|
||||
use it in sigevent.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/bits/pthreadtypes.h
|
||||
(pthread_attr_t): Add union tag to pthread_attr_t; only define
|
||||
typedef if not already defined.
|
||||
|
||||
2012-02-21 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/epoll.h: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/timerfd.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/sys/epoll.h: Remove.
|
||||
* sysdeps/unix/sysv/linux/alpha/sys/timerfd.h: Likewise.
|
||||
|
||||
2012-02-20 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/errno.h (ERFKILL, EHWPOISON):
|
||||
Define if not defined.
|
||||
* sysdeps/unix/sysv/linux/alpha/Versions: Add new errlist compat
|
||||
entry for 2.16.
|
||||
|
||||
2012-02-20 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/sysconf.c: Fix cache sysconf switch.
|
||||
|
||||
2012-02-16 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/fpu/fenv_libc.h (__ieee_set_fp_control,
|
||||
__ieee_get_fp_control): Mark as hidden proto.
|
||||
|
||||
2012-02-15 Mike Hommey <mh+reportbug@glandium.org>
|
||||
|
||||
[BZ #11677]
|
||||
* sysdeps/unix/sysv/linux/alpha/syscall.S: Support 6th argument.
|
||||
|
||||
2012-02-15 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/signalfd.h: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/sys/signalfd.h: Remove.
|
||||
|
||||
* sysdeps/unix/alpha/sysdep.h (syscall_promote): New.
|
||||
(inline_syscall0, inline_syscall1, inline_syscall2,
|
||||
inline_syscall3, inline_syscall4, inline_syscall5,
|
||||
inline_syscall6): Use it.
|
||||
* sysdeps/unix/sysv/linux/alpha/setregid.c: Remove.
|
||||
* sysdeps/unix/sysv/linux/alpha/setreuid.c: Remove.
|
||||
* sysdeps/unix/sysv/linux/alpha/setresgid.c: Remove.
|
||||
* sysdeps/unix/sysv/linux/alpha/setresuid.c: Remove.
|
||||
|
||||
* sysdeps/unix/alpha/sysdep.h: Don't include <tls.h>
|
||||
[PIC] (SYSCALL_ERROR_HANDLER): Emit nothing.
|
||||
[PIC] (SYSCALL_ERROR_LABEL): Add !samegp markup.
|
||||
|
||||
* sysdeps/alpha/dl-machine.h: Don't check USE___THREAD.
|
||||
|
||||
* sysdeps/unix/alpha/sysdeps.S: Don't check __ELF__, USE___THREAD,
|
||||
or _LIBC_REENTRANT.
|
||||
|
||||
2012-02-15 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
[BZ #13361]
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (struct file_handle): New.
|
||||
(fallocate, name_to_handle_at, open_by_handle_at): Declare.
|
||||
|
||||
2012-02-14 Joseph Myers <joseph@codesourcery.com>
|
||||
Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
* sysdeps/alpha/preconfigure: Make setting of libc_commonpagesize and
|
||||
libc_relro_required conditional on alpha machine. Move setting of
|
||||
libc_cv_gcc_unwind_find_fde ...
|
||||
* sysdeps/unix/sysv/linux/alpha/configure.in: ... here.
|
||||
|
||||
2012-02-13 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/eventfd.h: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/sys/eventfd.h: Remove.
|
||||
|
||||
2012-02-09 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/preconfigure (libc_cv_gcc_unwind_find_fde): New.
|
||||
(libc_commonpagesize, libc_relro_required): New.
|
||||
|
||||
2012-02-08 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/alpha/ldsodefs.h: New file.
|
||||
* sysdeps/alpha/tst-audit.h: New file.
|
||||
* sysdeps/alpha/tls-macros.h: New file.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/getitimer.S: Don't check HAVE_ELF.
|
||||
* sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/select.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise.
|
||||
|
||||
* sysdeps/alpha/elf/crti.S, sysdeps/alpha/elf/crtn.S: New files...
|
||||
* sysdeps/alpha/elf/initfini.c: ... split from here. Remove file.
|
||||
* sysdeps/alpha/nptl/elf/pt-initfini.c: Remove file.
|
||||
|
||||
* sysdeps/unix/alpha/sysdep.h (INTERNAL_SYSCALL_DECL): Mark unused.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/stat.h (_STAT_VER_LINUX): New.
|
||||
|
||||
* sysdeps/alpha/dl-tls.h (TLS_DTV_UNALLOCATED): New.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/configure.in: New file.
|
||||
* sysdeps/unix/sysv/linux/alpha/configure: Build.
|
||||
* sysdeps/unix/sysv/linux/alpha/kernel-features.h: Protect from
|
||||
multiple includes. Disable statfs64 entirely.
|
||||
|
||||
* sysdeps/alpha/nptl/tls.h: Don't test HAVE_TLS_SUPPORT.
|
||||
* sysdeps/unix/alpha/sysdep.h: Don't test HAVE___THREAD.
|
||||
* sysdeps/alpha/elf/configure.in (libc_cv_alpha_tls): Error out if
|
||||
the test fails. Don't set HAVE_TLS_SUPPORT.
|
||||
* sysdeps/alpha/elf/configure: Rebuild.
|
||||
|
||||
2012-01-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/alpha/backtrace.c: Use x86_64 version of backtrace.c.
|
||||
* sysdeps/unix/sysv/linux/alpha/wordexp.c: Use sparc64 version of
|
||||
wordexp.c.
|
||||
|
||||
2011-10-05 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* sysdeps/alpha/dl-machine.h (elf_machine_rela)
|
||||
(elf_machine_lazy_rel): Add parameter skip_ifunc.
|
||||
|
||||
2011-03-28 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S(____longjmp_chk):
|
||||
Fix wrong register in stack pointer comparison.
|
||||
|
||||
2011-03-01 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/alpha/fpu/feupdateenv.c (feupdateenv): Add libm_hidden_def.
|
||||
* sysdeps/alpha/fpu/ftestexcept.c (fetestexcept): Likewise.
|
||||
|
||||
2011-02-28 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/statfs.h (struct statfs,
|
||||
struct statfs64): Add f_flags field.
|
||||
|
||||
2011-02-28 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/alpha/stackinfo.h: Define DEFAULT_STACK_PERMS with PF_X.
|
||||
|
||||
2011-02-28 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_SETPIPE_SZ,
|
||||
F_GETPIPE_SZ): Define.
|
||||
|
||||
2010-09-26 Michael Cree <mcree@orcon.net.nz>
|
||||
|
||||
* sysdeps/alpha/memchr.c: Include <bp-sym.h>
|
||||
(__memchr): Add casts for integer arithmetic on pointers.
|
||||
|
||||
2010-09-23 Richard Henderson <rth@redhat.com>
|
||||
|
||||
[BZ #12019]
|
||||
* sysdeps/alpha/alphaev6/memchr.S: Remove.
|
||||
* sysdeps/alpha/memchr.S: Remove.
|
||||
* sysdeps/alpha/memchr.c: New.
|
||||
|
||||
2010-09-23 Richard Henderson <rth@redhat.com>
|
||||
|
||||
[BZ #1864]
|
||||
* sysdeps/unix/sysv/linux/alpha/fstatfs64.c: New.
|
||||
* sysdeps/unix/sysv/linux/alpha/fstatvfs.c: New.
|
||||
* sysdeps/unix/sysv/linux/alpha/fstatvfs64.c: New.
|
||||
* sysdeps/unix/sysv/linux/alpha/internal_statvfs64.c: New.
|
||||
* sysdeps/unix/sysv/linux/alpha/statfs64.c: New.
|
||||
* sysdeps/unix/sysv/linux/alpha/statvfs.c: New.
|
||||
* sysdeps/unix/sysv/linux/alpha/statvfs64.c: New.
|
||||
* sysdeps/unix/sysv/linux/alpha/syscalls.list (fstatfs, statfs):
|
||||
Define without 64-bit aliases.
|
||||
|
||||
2010-05-03 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/alpha/memchr.S: Use prefetch load.
|
||||
* sysdeps/alpha/alphaev6/memchr.S: Likewise.
|
||||
|
||||
2010-05-03 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
[BZ #6827]
|
||||
* sysdeps/alpha/dl-machine.h: Add dl-procinfo support.
|
||||
* sysdeps/alpha/dl-procinfo.c: New.
|
||||
* sysdeps/alpha/dl-procinfo.h: New.
|
||||
|
||||
2010-05-03 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
[BZ #5350]
|
||||
* sysdeps/alpha/fpu/s_ceil.c: Fix corner cases.
|
||||
* sysdeps/alpha/fpu/s_ceilf.c: Likewise.
|
||||
* sysdeps/alpha/fpu/s_floor.c: Likewise.
|
||||
* sysdeps/alpha/fpu/s_floorf.c: Likewise.
|
||||
* sysdeps/alpha/fpu/s_rint.c: Likewise.
|
||||
* sysdeps/alpha/fpu/s_rintf.c: Likewise.
|
||||
|
||||
2010-05-03 GOTO Masanori <gotom@debian.or.jp>
|
||||
|
||||
[BZ #1026]
|
||||
* sysdeps/unix/sysv/linux/alpha/kernel-features.h: Define
|
||||
__ASSUME_STAT64_SYSCALL.
|
||||
* sysdeps/unix/sysv/linux/alpha/fxstat.c: Check
|
||||
__ASSUME_STAT64_SYSCALL.
|
||||
* sysdeps/unix/sysv/linux/alpha/fxstatat.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/lxstat.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/xstat.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/xstatconv.c: Don't define
|
||||
__libc_missing_axp_stat64 when it's not needed.
|
||||
* sysdeps/unix/sysv/linux/alpha/xstatconv.h: Likewise.
|
||||
|
||||
2010-03-30 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/socket.h (MSG_WAITFORONE): New.
|
||||
|
||||
2010-03-30 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/kernel-features.h: New.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S: New.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/Versions: Update errlist-compat
|
||||
for GLIBC_2.12.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/alpha/fpu/fegetenv.c: Add hidden alias.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/dl-auxv.h (__libc_alpha_cache_shape):
|
||||
Define extern here; move definition...
|
||||
* sysdeps/unix/sysv/linux/alpha/dl-sysdep.c: ... here.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/sys/user.h: Don't include asm/page.h.
|
||||
(PAGE_SHIFT, PAGE_SIZE, PAGE_MASK): Define.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_SETOWN_EX,
|
||||
F_GETOWN_EX, F_OWNER_TID, F_OWNER_PID, F_OWNER_PGRP,
|
||||
F_OWNER_GID, struct f_owner_ex): Define.
|
||||
(F_SETOWN, F_GETOWN): Define with XPG7.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/unix/alpha/sysdep.h (PTR_MANGLE): Define for !PIC too.
|
||||
(PTR_DEMANGLE): Likewise.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/unix/alpha/sysdep.h (INTERNAL_SYSCALL_ERROR_P,
|
||||
INTERNAL_SYSCALL_ERRNO): "Use" the "other" variable in each macro.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdep/unix/sysv/linux/alpha/creat.c: New.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdep/alpha/elf/configure.in (libc_cv_alpha_hidden_gprel)
|
||||
Adjust the test for gcc 4.5.
|
||||
* sysdep/alpha/elf/configure: Rebuild.
|
||||
|
||||
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/alpha/bits/atomic.h (__arch_exchange_8_int,
|
||||
__arch_exchange_16_int, __arch_exchange_32_int,
|
||||
__arch_exchange_64_int, __arch_exchange_and_add_32_int,
|
||||
__arch_exchange_and_add_64_int): Use __typeof to get the
|
||||
return type correct without warning.
|
||||
|
||||
2010-03-23 Matt Turner <mattst88@gmail.com>
|
||||
Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/socket.h: New file.
|
||||
|
||||
2010-01-12 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Fix double-inclusion
|
||||
problem.
|
||||
|
||||
2010-01-12 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/sigaction.h: Define
|
||||
SA_RESTART, SA_NODEFER and SA_RESETHAND if __USE_XOPEN2K8.
|
||||
|
||||
2010-01-12 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Define O_DIRECTORY,
|
||||
O_NOFOLLOW, O_CLOEXEC, F_DUPFD_CLOEXEC, F_SETOWN, and F_GETOWN for
|
||||
XPG7.
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Enable using from
|
||||
fcntl.h.
|
||||
|
||||
2010-01-12 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Redefine O_SYNC and
|
||||
O_DSYNC to match 2.6.33+ kernels.
|
||||
|
||||
2009-12-02 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/timer_settime.c: Fix typo in
|
||||
include timer_gettime.c -> timer_settime.c.
|
||||
|
||||
2009-11-23 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Use struct timespec
|
||||
for timestamps also if __USE_XOPEN2K8.
|
||||
|
||||
2009-11-23 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Change misleading
|
||||
names of parameters of sync_file_range.
|
||||
|
||||
2009-11-23 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
[BZ #10972]
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: Add new MADV_*
|
||||
constants from recent kernels.
|
||||
|
||||
2009-11-10 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
[BZ #10609]
|
||||
* sysdeps/unix/sysv/linux/alpha/fxstatat.c (__fxstatat): Fix handling
|
||||
of empty parameters for file names.
|
||||
|
||||
2009-07-13 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
[BZ #10158]
|
||||
* sysdeps/unix/sysv/linux/alpha/getsysstats.c (GET_NPROCS_PARSER):
|
||||
Change parameters and use next_line.
|
||||
|
||||
[BZ #10160]
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h: Define
|
||||
FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET, FUTEX_CLOCK_REALTIME and
|
||||
FUTEX_BITSET_MATCH_ANY.
|
||||
|
||||
[BZ #10161]
|
||||
* sysdeps/unix/sysv/linux/alpha/getdents64.c: Adjust include path.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/fork.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/sem_post.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/timer_create.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/timer_delete.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/timer_getoverr.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/timer_gettime.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/timer_settime.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/sysconf.c: Likewise.
|
||||
|
||||
[BZ #6507]
|
||||
* sysdeps/unix/sysv/linux/alpha/sys/procfs.h (ELF_NGREG,
|
||||
ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t,
|
||||
elf_fpregset_t): Define. Don't include asm/elf.h.
|
||||
|
||||
2008-11-26 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/wordexp.c: Contents moved to main
|
||||
repository's ia64 file; #include that.
|
||||
* sysdeps/unix/sysv/linux/alpha/ipc_priv.h: Contents moved to main
|
||||
repository's powerpc file; #include that.
|
||||
|
||||
2008-11-25 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* ChangeLog.alpha: New file (this one).
|
||||
* sysdeps/alpha, sysdeps/unix/bsd/osf/alpha,
|
||||
sysdeps/unix/bsd/Attic/osf1/alpha, sysdeps/unix/sysv/linux/alpha,
|
||||
sysdeps/unix/sysv/linux/alpha/alpha, sysdeps/unix/alpha,
|
||||
sysdeps/mach/alpha, sysdeps/mach/hurd/alpha:
|
||||
Subdirectories moved here from main repository.
|
||||
* sysdeps/alpha/nptl, sysdeps/unix/sysv/linux/alpha/nptl:
|
||||
Subdirectories moved here from main repository's nptl/ subdirectory.
|
||||
* sysdeps/alpha/preconfigure: New file.
|
||||
* sysdeps/alpha/shlib-versions: New file.
|
||||
|
||||
Local Variables:
|
||||
mode: change-log
|
||||
left-margin: 8
|
||||
fill-column: 74
|
||||
End:
|
260
ports/ChangeLog.am33
Normal file
260
ports/ChangeLog.am33
Normal file
@ -0,0 +1,260 @@
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2011-10-05 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* sysdeps/am33/dl-machine.h (elf_machine_rela)
|
||||
(elf_machine_lazy_rel): Add parameter skip_ifunc.
|
||||
|
||||
2007-10-22 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/bits/fcntl.h (F_DUPFD_CLOEXEC): Define.
|
||||
|
||||
2007-07-10 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/bits/fcntl.h: Comment fix.
|
||||
|
||||
2006-01-12 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/am33/jmpbuf-unwind.h: Include <jmpbuf-offsets.h>.
|
||||
|
||||
2006-01-10 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/am33/bits/setjmp.h (__JMP_BUF_SP): Macro moved ...
|
||||
* sysdeps/am33/jmpbuf-offsets.h: ... here, new file.
|
||||
|
||||
* sysdeps/am33/bits/setjmp.h (_JMPBUF_UNWINDS, __JMP_BUF_SP):
|
||||
Move macros ...
|
||||
* sysdeps/am33/jmpbuf-unwind.h: ... here, new file.
|
||||
|
||||
2005-12-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/am33/bits/setjmp.h (_JMPBUF_UNWINDS): Take third argument
|
||||
DEMANGLE, and pass SP value through it.
|
||||
|
||||
2004-10-25 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* ChangeLog.am33: Added emacs local variables for mode setting and
|
||||
default changelog name.
|
||||
|
||||
* sysdeps/unix/sysv/linux/linuxthreads/sysdep-cancel.h: Moved...
|
||||
* sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h:
|
||||
... here, where it should have been added in the first place.
|
||||
|
||||
2004-10-22 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/bits/mman.h (PROT_GROWSDOWN): New.
|
||||
(PROT_GROWSUP): New.
|
||||
|
||||
2004-08-16 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/shlib-versions: Moved from top level.
|
||||
|
||||
2004-08-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/preconfigure: Renamed from configure.
|
||||
* Makefile: Removed.
|
||||
|
||||
2004-07-20 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
Moved from separate linuxthreads tree into am33/linuxthreads
|
||||
subdirs:
|
||||
2004-07-01 Alexandre Oliva <aoliva@redhat.com>
|
||||
* sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
|
||||
(PSEUDO): Save value returned by CENABLE and pass it to CDISABLE.
|
||||
* sysdeps/am33/linuxthreads/pt-machine.h (testandset): Take
|
||||
volatile argument. Improve asm statement.
|
||||
2001-10-31 Alexandre Oliva <aoliva@redhat.com>
|
||||
* sysdeps/am33/linuxthreads/pspinlock.c: New file.
|
||||
* sysdeps/am33/linuxthreads/pt-machine.h: New file.
|
||||
|
||||
2004-07-19 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* configure: New.
|
||||
* mach.sh: Removed.
|
||||
* sysdeps/am33/Makefile: Likewise.
|
||||
|
||||
2004-06-28 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/configure.in: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/configure: New file.
|
||||
* mach.sh: New file.
|
||||
|
||||
2004-06-19 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/fpu/bits/fenv.h: New file.
|
||||
* sysdeps/am33/fpu/fpu_control.h: New file.
|
||||
* sysdeps/am33/fpu/fenv_libc.h: New file.
|
||||
* sysdeps/am33/fpu/fclrexcpt.c: New file.
|
||||
* sysdeps/am33/fpu/fedisblxcpt.c: New file.
|
||||
* sysdeps/am33/fpu/feenablxcpt.c: New file.
|
||||
* sysdeps/am33/fpu/fegetenv.c: New file.
|
||||
* sysdeps/am33/fpu/fegetexcept.c: New file.
|
||||
* sysdeps/am33/fpu/fegetround.c: New file.
|
||||
* sysdeps/am33/fpu/feholdexcpt.c: New file.
|
||||
* sysdeps/am33/fpu/fesetenv.c: New file.
|
||||
* sysdeps/am33/fpu/fesetround.c: New file.
|
||||
* sysdeps/am33/fpu/feupdateenv.c: New file.
|
||||
* sysdeps/am33/fpu/fgetexcptflg.c: New file.
|
||||
* sysdeps/am33/fpu/fraiseexcpt.c: New file.
|
||||
* sysdeps/am33/fpu/fsetexcptflg.c: New file.
|
||||
* sysdeps/am33/fpu/ftestexcept.c: New file.
|
||||
|
||||
* sysdeps/unix/am33/sysdep.h: Use relative pathnames.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.S: Likewise.
|
||||
* configure, Makefile: Do nothing.
|
||||
|
||||
2004-06-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/bsd-setjmp.S: Move into...
|
||||
* sysdeps/am33/setjmp.S: ... this file.
|
||||
* sysdeps/am33/bsd-_setjmp.S: Likewise.
|
||||
* sysdeps/am33/dl-machine.h (_dl_start_user): Do not do double
|
||||
indirection to obtain _dl_loaded.
|
||||
(elf_machine_rela_relative): Do not add addend.
|
||||
|
||||
2004-06-08 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/sysdep.h (JUMPTARGET): Undef before redefining.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.h (PSEUDO_NOERROR,
|
||||
PSEUDO_END_NOERROR, ret_NOERROR, PSEUDO_ERRVAL, PSEUDO_END_ERRVAL,
|
||||
ret_ERRVAL, INTERNAL_SYSCALL, INTERNAL_SYSCALL_DECL,
|
||||
INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New.
|
||||
(INLINE_SYSCALL): Rewrite in terms of INTERNAL_SYSCALL macros.
|
||||
(DO_CALL): Reorder arguments.
|
||||
* sysdeps/am33/dl-machine.h (elf_machine_rela): Update prototype.
|
||||
|
||||
2003-05-16 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.h (INLINE_SYSCALL1): Drop
|
||||
comma before args when calling inline_syscall0.
|
||||
* sysdeps/unix/sysv/linux/am33/chown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/fchown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/fxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getegid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/geteuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getrlimit.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/lchown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/lockf64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/lxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setegid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/seteuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setfsgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setfsuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setregid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setresgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setresuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setreuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setrlimit.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/xstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/syscalls.list: Removed, reverting
|
||||
2003-03-26's patch.
|
||||
* sysdeps/unix/sysv/linux/am33/getresgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getresuid.c: New file.
|
||||
|
||||
2003-05-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/getgroups.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setgroups.c: New file.
|
||||
|
||||
2003-05-07 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/getmsg.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/putmsg.c: New file.
|
||||
|
||||
2003-03-26 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/syscalls.list: Added getresuid and
|
||||
getresgid.
|
||||
|
||||
2003-01-17 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/fcntl.c: New file.
|
||||
|
||||
2002-02-08 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/sys/ucontext.h (fpregset_t): Make it a structure.
|
||||
|
||||
2002-01-07 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/sys/ucontext.h (NFREG): Increment by 1, to make
|
||||
room for FPCR.
|
||||
|
||||
2001-12-13 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* shlib-versions: Set GLIBC_2.2.5 as the earliest symbol set.
|
||||
|
||||
2001-12-07 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/__longjmp.S: Tabify.
|
||||
* sysdeps/am33/setjmp.S: Likewise.
|
||||
* sysdeps/am33/dl-debug.h: Remove.
|
||||
* sysdeps/am33/dl-machine.h: Delete commented-out uses of
|
||||
macros defined in dl-debug.
|
||||
(elf_machine_rela): Optimize if HAVE_Z_COMBRELOC. Fix
|
||||
prediction of R_MN10300_NONE. Don't test for impossible
|
||||
condition.
|
||||
* sysdeps/am33/sysdep.h (ASM_TYPE_DIRECTIVE,
|
||||
ASM_SIZE_DIRECTIVE): Define to nothing if ! HAVE_ELF.
|
||||
|
||||
2001-11-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/clone.S: Avoid branch overflow in
|
||||
static link.
|
||||
|
||||
2001-11-08 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/clone.S: Load arguments correctly
|
||||
for syscall.
|
||||
|
||||
2001-11-07 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/clone.S: Fix argument-passing
|
||||
to thread_start.
|
||||
|
||||
2001-10-31 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* shlib-versions: Added am33_2.0 support.
|
||||
* sysdeps/am33/Implies: New file.
|
||||
* sysdeps/am33/__longjmp.S: New file.
|
||||
* sysdeps/am33/atomicity.h: New file.
|
||||
* sysdeps/am33/bsd-_setjmp.S: New file.
|
||||
* sysdeps/am33/bsd-setjmp.S: New file.
|
||||
* sysdeps/am33/dl-debug.h: New file.
|
||||
* sysdeps/am33/dl-machine.h: New file.
|
||||
* sysdeps/am33/memusage.h: New file.
|
||||
* sysdeps/am33/setjmp.S: New file.
|
||||
* sysdeps/am33/stackinfo.h: New file.
|
||||
* sysdeps/am33/sysdep.h: New file.
|
||||
* sysdeps/am33/bits/endian.h: New file.
|
||||
* sysdeps/am33/bits/setjmp.h: New file.
|
||||
* sysdeps/am33/elf/start.S: New file.
|
||||
* sysdeps/am33/sys/ucontext.h: New file.
|
||||
* sysdeps/unix/am33/sysdep.S: New file.
|
||||
* sysdeps/unix/am33/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/brk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/profil-counter.h: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/socket.S: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/syscall.S: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.S: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/bits/fcntl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/bits/mman.h: New file.
|
||||
|
||||
Local Variables:
|
||||
mode: change-log
|
||||
left-margin: 8
|
||||
fill-column: 74
|
||||
version-control: never
|
||||
change-log-default-name: "ChangeLog.am33"
|
||||
End:
|
2010
ports/ChangeLog.arm
Normal file
2010
ports/ChangeLog.arm
Normal file
File diff suppressed because it is too large
Load Diff
33
ports/ChangeLog.cris
Normal file
33
ports/ChangeLog.cris
Normal file
@ -0,0 +1,33 @@
|
||||
2012-02-21 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/cris: Remove.
|
||||
* sysdeps/unix/sysv/linux/cris: Likewise.
|
||||
|
||||
2011-10-05 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* sysdeps/cris/dl-machine.h (elf_machine_rela)
|
||||
(elf_machine_lazy_rel): Add parameter skip_ifunc.
|
||||
|
||||
2007-10-22 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/cris/bits/fcntl.h (F_DUPFD_CLOEXEC): Define.
|
||||
|
||||
2007-07-10 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/cris/bits/fcntl.h: Comment fix.
|
||||
|
||||
2005-12-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/cris/bits/setjmp.h (_JMPBUF_UNWINDS): Take third argument
|
||||
DEMANGLE, and pass SP value through it.
|
||||
|
||||
2004-10-25 Roland McGrath <roland@frob.com>
|
||||
|
||||
* sysdeps/cris/configure.in: New file, with test moved out of main
|
||||
libc configure.in file.
|
||||
* sysdeps/cris/configure: New generated file.
|
||||
|
||||
2004-10-23 Roland McGrath <roland@frob.com>
|
||||
|
||||
* sysdeps/cris, sysdeps/unix/sysv/linux/cris: Moved here from main
|
||||
libc source tree.
|
877
ports/ChangeLog.hppa
Normal file
877
ports/ChangeLog.hppa
Normal file
@ -0,0 +1,877 @@
|
||||
2012-05-19 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/add_n.s: Rename this...
|
||||
* sysdeps/hppa/add_n.S: ... to this.
|
||||
* sysdeps/hppa/hppa1.1/addmul_1.s: Rename this...
|
||||
* sysdeps/hppa/hppa1.1/addmul_1.S: ... to this.
|
||||
* sysdeps/hppa/hppa1.1/mul_1.s: Rename this...
|
||||
* sysdeps/hppa/hppa1.1/mul_1.S ... to this.
|
||||
* sysdeps/hppa/hppa1.1/submul_1.s: Rename this...
|
||||
* sysdeps/hppa/hppa1.1/submul_1.S: ... to this.
|
||||
* sysdeps/hppa/hppa1.1/udiv_qrnnd.s: Rname this...
|
||||
* sysdeps/hppa/hppa1.1/udiv_qrnnd.S: ... to this.
|
||||
* sysdeps/hppa/lshift.s: Rename this...
|
||||
* sysdeps/hppa/lshift.S: ... to this.
|
||||
* sysdeps/hppa/rshift.s: Rename this...
|
||||
* sysdeps/hppa/rshift.S: ... to this.
|
||||
* sysdeps/hppa/sub_n.s: Rename this...
|
||||
* sysdeps/hppa/sub_n.S: ... to this.
|
||||
* sysdeps/hppa/udiv_qrnnd.s: Rename this...
|
||||
* sysdeps/hppa/udiv_qrnnd.S: ... to this.
|
||||
|
||||
2012-05-17 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/hppa/libgcc_s.h: Remove.
|
||||
* sysdeps/hppa/shlib-versions: Add libgcc_s.
|
||||
|
||||
2012-04-17 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/dl-irel.h: New file.
|
||||
|
||||
2012-04-17 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/dl-fptr.h: Add prototype for _dl_fptr_init.
|
||||
* sysdeps/hppa/dl-fptr.c: New file.
|
||||
* sysdeps/hppa/dl-machine.h (ELF_MACHINE_BEFORE_RTLD_RELOC):
|
||||
Call _dl_fptr_init.
|
||||
|
||||
2012-04-17 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/elf/configure: Removed file.
|
||||
* sysdeps/hppa/elf/configure.in: Move to...
|
||||
* sysdeps/hppa/configure.in: ... here.
|
||||
* sysdeps/hppa/configure: Regenerate.
|
||||
* sysdeps/hppa/elf/initfini.c: Removed file.
|
||||
* sysdeps/hppa/crti.S: New file.
|
||||
* sysdeps/hppa/crtn.S: New file.
|
||||
* sysdeps/hppa/elf/entry.h: Moved to ...
|
||||
* sysdeps/hppa/entry.h: ... here.
|
||||
* sysdeps/hppa/elf/start.S: Move to ...
|
||||
* sysdeps/hppa/start.S: ... here.
|
||||
|
||||
2012-03-22 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
[BZ #6730]
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Don't negate %r21 and
|
||||
check for -EFAULT and -ENOSYS instead.
|
||||
|
||||
2012-03-09 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/hppa/hppa1.1/s_signbit.c: Use <> to include math_private.h.
|
||||
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2012-03-03 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h: Name
|
||||
pthread_attr_t union.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/pthread.h: Sync from libc copy.
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/socket.h: Likewise.
|
||||
|
||||
2012-01-08 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/epoll.h (EPOLLONESHOT)
|
||||
(EPOLLET): Initialize with unsiged values.
|
||||
|
||||
2012-01-08 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/pthread.h: Sync from libc copy.
|
||||
|
||||
2012-01-08 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/epoll.h: Use const instead of __const.
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/timerfd.h: Likewise.
|
||||
|
||||
2011-10-21 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/procfs.h: Update copyright year.
|
||||
Do not include signal.h and sys/ucontext.h.
|
||||
|
||||
2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Update copyright
|
||||
year.
|
||||
(PSEUDO): Define __*_nocancel version. Add CFI directives to __*_nocancel
|
||||
and normal version.
|
||||
(PUSHARGS_1): Add CFI directive.
|
||||
(PUSHARGS_2): Likewise.
|
||||
(PUSHARGS_3): Likewise.
|
||||
(PUSHARGS_4): Likewise.
|
||||
(PUSHARGS_5): Likewise.
|
||||
(PUSHARGS_6): Likewise.
|
||||
(POPARGS_1): Likewise.
|
||||
(POPARGS_2): Likewise.
|
||||
(POPARGS_3): Likewise.
|
||||
(POPARGS_4): Likewise.
|
||||
(POPARGS_5): Likewise.
|
||||
(POPARGS_6): Likewise.
|
||||
|
||||
2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/aio_cancel.c: Remove.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/bits/initspin.h: Remove.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/bits/pthreadtypes.h: Remove.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/malloc-machine.h: Remove.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/pt-initfini.c: Remove.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h: Remove.
|
||||
* sysdeps/hppa/linuxthreads/pspinlock.c: Remove.
|
||||
* sysdeps/hppa/linuxthreads/pt-machine.h: Remove.
|
||||
* sysdeps/hppa/linuxthreads/tls.h: Remove.
|
||||
|
||||
2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/stackinfo.h: Update copyright year.
|
||||
Include elf.h and define DEFAULT_STACK_PERMS.
|
||||
|
||||
2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Synchronize
|
||||
with canonical fcntl.h.
|
||||
|
||||
2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/fpu/fegetenv.c: Add hidden alias.
|
||||
* sysdeps/hppa/fpu/feupdateenv.c: Likewise.
|
||||
* sysdeps/hppa/fpu/ftestexcept.c: Likewise.
|
||||
|
||||
2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/dl-tls.h: Update copyright year.
|
||||
Define TLS_DTV_UNALLOCATED.
|
||||
|
||||
2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/elf/configure.in: Always test for TLS support
|
||||
and error out if missing.
|
||||
* sysdeps/hppa/elf/configure: Regenerate.
|
||||
* sysdeps/hppa/configure: Regenerate.
|
||||
|
||||
2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/nptl/tls.h: Update copyright year.
|
||||
Remove HAVE_TLS_SUPPORT check.
|
||||
|
||||
2011-10-17 Guy Martin <gmsoft@tuxicoman.be>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/epoll.h
|
||||
Fix EPOLL_CLOEXEC and EPOLL_NONBLOCK to match kernel definition.
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
|
||||
Fix EFD_CLOEXEC and EFD_NONBLOCK to match kernel definition.
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/inotify.h
|
||||
Fix IN_CLOEXEC and IN_NONBLOCK to match kernel definition.
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/signalfd.h
|
||||
Fix SFD_CLOEXEC and SFD_NONBLOCK to match kernel definition.
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/timerfd.h
|
||||
Fix TFD_CLOEXEC and TFD_NONBLOCK to match kernel definition.
|
||||
|
||||
2011-10-05 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* sysdeps/hppa/dl-machine.h (elf_machine_rela)
|
||||
(elf_machine_lazy_rel): Add parameter skip_ifunc.
|
||||
|
||||
2010-06-24 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S: Only create stack
|
||||
frame around call to SYSCALL_ERROR_HANDLER. Do not restore %rp
|
||||
from the stack frame on successfull return.
|
||||
|
||||
2010-06-23 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/getcontext.S (__getcontext_ret):
|
||||
Document that this function is a non-standard calling ABI.
|
||||
Document register usage.
|
||||
(__getcontext): Use normal %sp without adjustment. Use named
|
||||
resgister %sp.
|
||||
* sysdeps/unix/sysv/linux/hppa/makecontext.c: Remove FRAME_SIZE.
|
||||
Define FRAME_SIZE_UL, FRAME_SIZE_BYTES, ARGS.
|
||||
(__makecontext): Create and setup a stack frame.
|
||||
* sysdeps/unix/sysv/linux/hppa/setcontext.S (__setcontext):
|
||||
Use named register %sp. Do not use oSS_SP.
|
||||
|
||||
2010-06-07 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/pthread.h: Update to agree
|
||||
with generic file.
|
||||
|
||||
2010-03-30 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/socket.h: Define
|
||||
MSG_WAITFORONE.
|
||||
|
||||
2010-02-17 Matt Turner <mattst88@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/socket.h: Actually fix
|
||||
SOCK_CLOEXEC to match O_CLOEXEC.
|
||||
|
||||
2010-02-02 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/mman.h: Define
|
||||
MADV_MERGEABLE and MADV_UNMERGEABLE.
|
||||
|
||||
2010-02-02 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/hppa/nptl/tls.h (__set_cr27): Clobber
|
||||
link register r31.
|
||||
|
||||
2010-02-02 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/makecontext.c (__makecontext):
|
||||
Support more than 8 arguments.
|
||||
|
||||
2010-02-01 Kyle McMartin <kyle@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/socket.h: Fix value of
|
||||
SOCK_CLOEXEC to match O_CLOEXEC.
|
||||
|
||||
2010-02-01 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/Versions: Bump
|
||||
errlist-compat to 257 for GLIBC_2.12.
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/errno.h
|
||||
(EOWNERDEAD): Define if not already defined.
|
||||
(ENOTRECOVERABLE): Likewise.
|
||||
(ERFKILL): Likewise.
|
||||
|
||||
2009-11-29 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h:
|
||||
Rearrange file to reduce future maintenance.
|
||||
[__USE_GNU]: Update F_GETOWN_EX, and F_SETOWN_EX.
|
||||
Define f_owner_ex an __pid_type.
|
||||
|
||||
2009-11-25 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h:
|
||||
Use correct alignment for pthread_mutex_t, pthread_cond_t,
|
||||
and pthread_rwlock_t.
|
||||
|
||||
2009-11-22 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Avoid warnings
|
||||
by casting oldval to int.
|
||||
|
||||
2009-11-15 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
[BZ #6676]
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/socket.h: Move from here...
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/socket.h: ... to here.
|
||||
|
||||
2009-11-15 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/Versions (libc): Add
|
||||
fallocate64@@GLIBC_2.11.
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h
|
||||
[__USE_GNU]: Define F_GETOWN_EX, and F_SETOWN_EX.
|
||||
[!__USE_FILE_OFFSET64]: Define fallocate.
|
||||
[__USE_FILE_OFFSET64 && __REDIRECT]: Define __REDIRECT.
|
||||
[__USE_FILE_OFFSET64 && !__REDIRECT]: Define fallocate as
|
||||
fallocate64.
|
||||
[__USE_LARGEFILE64]: define fallocate64.
|
||||
|
||||
2009-11-15 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/hppa/dl-fptr.h: Update copyright year.
|
||||
Reduce ELF_MACHINE_BOOT_FPTR_TABLE_LEN to 64.
|
||||
Implement ELF_MACHINE_LOAD_ADDRESS using PC relative loads.
|
||||
|
||||
2009-11-15 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:
|
||||
Remove FUTEX_WAITERS, FUTEX_OWNER_DIED, and FUTEX_TID_MASK.
|
||||
|
||||
2009-11-15 Carlos O'Donell <carlos@codesourcery.com>
|
||||
Aurelian Jarno <aurelien@aurel32.net>
|
||||
|
||||
[BZ #10527]
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/socket.h: New file.
|
||||
|
||||
2009-11-15 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
[BZ #6676]
|
||||
|
||||
* sysdeps/hppa/elf/start.S: Use R_PARISC_DLTIND* relocations
|
||||
to support -fPIE.
|
||||
|
||||
2009-11-08 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
[BZ #10920]
|
||||
|
||||
* sysdeps/hppa/libgcc_s.h: New file.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c: Remove.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-resume.c: Remove.
|
||||
|
||||
2009-09-08 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
sysdeps/unix/sysv/linux/hppa/
|
||||
* internaltypes.h: New file.
|
||||
|
||||
sysdeps/unix/sysv/linux/hppa/nptl/
|
||||
* pthreadP.h: New file.
|
||||
* pthread.h: New file.
|
||||
* pthread_cond_broadcast.c: New file.
|
||||
* pthread_cond_destroy.c: New file.
|
||||
* pthread_cond_init.c: New file.
|
||||
* pthread_cond_signal.c: New file.
|
||||
* pthread_cond_timedwait.c: New file.
|
||||
* pthread_cond_wait.c: New file.
|
||||
* bits/pthreadtypes.h: Make pthread_mutex_t,
|
||||
pthread_rwlock_t, and pthread_cond_t backwards
|
||||
compatible.
|
||||
|
||||
2009-04-24 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/hppa/hppa1.1/s_signbit.c: New file.
|
||||
|
||||
2009-04-23 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/hppa/dl-machine.h: Remove VALID_ELF_OSABI,
|
||||
VALID_ELF_ABIVERSION, and VALID_ELF_HEADER.
|
||||
|
||||
2009-04-23 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Do not include
|
||||
sysdep.h. Document the reason for other includes.
|
||||
|
||||
2009-04-23 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sysdep.h [!__ASSEMBLER__]:
|
||||
Include errno.h.
|
||||
|
||||
2009-02-25 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h:
|
||||
Adjust comment. Sort macros alphabetically. Remove old
|
||||
lock comments.
|
||||
|
||||
2009-02-25 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c:
|
||||
Update from nptl/sysdeps/pthread/unwind-forcedunwind.c
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-resume.c:
|
||||
Update from nptl/sysdeps/pthread/unwind-resume.c
|
||||
|
||||
2009-02-25 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Define
|
||||
FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET, FUTEX_CLOCK_REALTIME,
|
||||
and FUTEX_BITSET_MATCH_ANY.
|
||||
|
||||
2009-02-22 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/Versions: Add missing bracket.
|
||||
|
||||
2009-02-22 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/hppa/dl-machine.h: Use _dl_runtime_profile.
|
||||
|
||||
2009-02-13 Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c
|
||||
(libgcc_s_handle): New variable.
|
||||
(pthread_cancel_init): Depend in libgcc_s_handle for decision to
|
||||
load DSO. Assign last.
|
||||
(__unwind_freeres): New function.
|
||||
|
||||
2009-02-09 Arthur Loiret <aloiret@debian.org>
|
||||
|
||||
[BZ #9717]
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/malloc-machine.h
|
||||
(MALLOC): Adjust __libc_tsd_define arguments.
|
||||
(tsd_setspecific, tsd_getspecific): Adjust __libc_tsd_{set,get}
|
||||
arguments.
|
||||
|
||||
2008-08-07 Helge Deller <deller@gmx.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/ucontext_i.sym: New file.
|
||||
* sysdeps/unix/sysv/linux/hppa/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/hppa/getcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/hppa/makecontext.c: New file.
|
||||
* sysdeps/unix/sysv/linux/hppa/setcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/hppa/swapcontext.c: New file.
|
||||
|
||||
2008-06-17 Aurelian Jarno <aurelien@aurel32.net>
|
||||
Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
[BZ #6037]
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Check for -11
|
||||
(-EAGAIN) instead of 11. Loop again when the kernel
|
||||
returns -45 (-EDEADLOCK). Add back memory clobber.
|
||||
Do not initialize lws_ret and lws_errno.
|
||||
|
||||
2008-06-17 Guy Martin <gmsoft@tuxicoman.be>
|
||||
|
||||
[BZ #5957]
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:
|
||||
Use shared futex in lll_wait_tid().
|
||||
|
||||
2008-05-12 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
[BZ #6506]
|
||||
* sysdeps/hppa/fpu/fesetenv.c: bufptr is always read, temp is
|
||||
read while writing back status word.
|
||||
|
||||
2008-04-21 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/shm.h: Fix comment describing
|
||||
shmid_ds.
|
||||
|
||||
2008-04-04 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Remove
|
||||
memory contraint and instead indicate that *mem is
|
||||
written to.
|
||||
|
||||
2008-03-24 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/user.h: New file.
|
||||
|
||||
2008-03-14 Carlos O'Donell <carlos@codesourcery.com>
|
||||
Guy Martin <gmsoft@tuxicoman.be>
|
||||
|
||||
[BZ #5923]
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Pass
|
||||
timespec and futexp.
|
||||
|
||||
2008-02-22 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/Makefile: Remove.
|
||||
* sysdeps/hppa/nptl/Makefile: Set tst-oddstacklimit-ENV.
|
||||
|
||||
2007-12-05 Jeff Bailey <jeffbailey@google.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
|
||||
(__lll_unlock): Use define instead of inline function.
|
||||
(__lll_robust_unlock): Likewise.
|
||||
|
||||
2007-10-22 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (F_DUPFD_CLOEXEC): Define.
|
||||
|
||||
2007-10-18 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c
|
||||
(__lll_lock_wait): Add private argument. Pass private
|
||||
to lll_futex_wait. Use atomic_compare_and_exchange_val_acq.
|
||||
(__lll_lock_wait_private): New function.
|
||||
(__lll_timedlock_wait): Add private argument. Pass private
|
||||
to lll_futex_timed_wait.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:
|
||||
Include kernel-features.h and tls.h.
|
||||
(FUTEX_WAITERS): Define.
|
||||
(FUTEX_OWNER_DIED): Define.
|
||||
(FUTEX_TID_MASK): Define.
|
||||
(__lll_private_flag): Define.
|
||||
(lll_futex_timed_wait): Use __lll_private_flag.
|
||||
(lll_futex_wake): Use __lll_private_flag.
|
||||
(lll_futex_requeue): Use __lll_private_flag.
|
||||
(lll_robust_mutex_dead): Rename to...
|
||||
(lll_robust_dead): ... this. Add private argument. Pass private
|
||||
to lll_futex_wake.
|
||||
(lll_futex_wake_unlock): Use __lll_private_flag.
|
||||
(__lll_mutex_trylock): Remove.
|
||||
(lll_mutex_tryock): Remove.
|
||||
(__lll_robust_mutex_trylock): Rename to...
|
||||
(__lll_robust_trylock): ... this.
|
||||
(lll_robust_mutex_trylock): Rename to...
|
||||
(lll_robust_trylock): ... this. Call __lll_robust_trylock.
|
||||
(__lll_mutex_cond_trylock): Rename to...
|
||||
(__lll_cond_trylock): ... this.
|
||||
(lll_mutex_cond_trylock): Rename to...
|
||||
(lll_cond_trylock): ... this. Call __lll_cond_trylock.
|
||||
(__lll_mutex_lock): Add private argument.
|
||||
(__lll_robust_mutex_lock): Remove.
|
||||
(lll_mutex_lock): Define.
|
||||
(__lll_robust_lock): Define.
|
||||
(lll_robust_mutex_lock): Remove.
|
||||
(__lll_mutex_cond_lock): Remove.
|
||||
(lll_robust_lock) Define.
|
||||
(lll_robust_cond_lock): Define.
|
||||
(lll_robust_mutex_cond_lock): Remove.
|
||||
(__lll_cond_lock): Define.
|
||||
(lll_cond_lock): Define.
|
||||
(__lll_mutex_timedlock): Remove.
|
||||
(__lll_timedlock): Define.
|
||||
(lll_timedlock): Define.
|
||||
(lll_robust_mutex_timedlock): Remove.
|
||||
(lll_robust_timedlock): Define.
|
||||
(__lll_mutex_unlock): Remove.
|
||||
(__lll_unlock): Define.
|
||||
(__lll_robust_mutex_unlock): Remove.
|
||||
(__lll_robust_unlock): Define.
|
||||
(lll_robust_mutex_unlock): Remove.
|
||||
(lll_robust_unlock): Define.
|
||||
(__lll_mutex_unlock_force): Remove.
|
||||
(lll_mutex_unlock_force): Remove.
|
||||
(lll_islocked): Remove.
|
||||
(lll_mutex_islocked): Rename to...
|
||||
(lll_islocked): ... this.
|
||||
(lll_trylock): Remove.
|
||||
(lll_unlock): Remove.
|
||||
(lll_wait_tid): Format whitespace.
|
||||
(lll_cond_wait): Remove.
|
||||
(lll_cond_timedwait): Remove.
|
||||
(lll_cond_wake): Remove.
|
||||
(lll_cond_broadcast): Remove.
|
||||
|
||||
2007-10-17 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Correct return value
|
||||
type and __THROW marker of splice, vmsplice, and tee.
|
||||
|
||||
2007-09-24 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/nptl/tls.h: Fix comment.
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Fix comment format.
|
||||
[__USE_GNU] (O_CLOEXEC): Define.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Issue error
|
||||
if the library is unsupported.
|
||||
[ASSEMBLER && IS_IN_librt]: Define CENABLE, CDISABLE, and
|
||||
__local_multiple_threads.
|
||||
|
||||
2007-08-03 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h:
|
||||
(__local_multiple_threads): Declare as hidden only in libc and
|
||||
in libpthread.
|
||||
|
||||
2007-07-28 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/internaltypes.h: Remove.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h
|
||||
(pthread_rwlock_t): Split __flags into __pad2, __pad1, __shared,
|
||||
and __flags. Update comments. Update copyright.
|
||||
* sysdeps/hppa/nptl/tls.h: Define THREAD_GSCOPE_FLAG_UNUSED,
|
||||
THREAD_GSCOPE_FLAG_USED, THREAD_GSOPE_FLAG_WAIT,
|
||||
THREAD_GSCOPE_RSEET_FLAG, THREAD_GSCOPE_SET_FLAG, THREAD_GSCOPE_WAIT.
|
||||
Update copyright.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c: Update copyright.
|
||||
(__lll_lock_wait): Call lll_futex_wait with LLL_SHARED.
|
||||
(__lll_timedlock_wait): Call lll_futex_timed_wait with LLL_SHARED.
|
||||
(lll_unlock_Wake_cb): Use lll_private_futex_wake.
|
||||
(___lll_timedwait_tid): Call lll_futex_timed_wait with LLL_SAHRED.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Define
|
||||
FUTEX_PRIVATE_FLAG, LLL_PRIVATE, LLL_SHARED, lll_private_futex_wait,
|
||||
lll_private_futex_timed_wait, lll_private_Futex_wake. Add private
|
||||
argument to lll_futex_wait, lll_futex_timed_wait, lll_futex_wake,
|
||||
lll_futex_wake_unlock.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/pthread_once.c: Update copyright.
|
||||
(clear_once_control): Use lll_private_futex_wake.
|
||||
(__pthread_once): Use lll_private_futex_wait, and
|
||||
lll_private_futex_wake.
|
||||
|
||||
2007-07-28 Randolph Chung <tausq@debian.org>
|
||||
|
||||
* sysdeps/hppa/nptl/tls.h (DB_THREAD_SELF): Fix definition.
|
||||
|
||||
2007-06-16 Jeff Bailey <jbailey@raspberryginger.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sys/procfs.h: Don't
|
||||
include asm/elf.h. Declare elf_greg_t, elf_gregset_t,
|
||||
elf_fpreg_t, and elf_fpregset_t.
|
||||
|
||||
2007-06-16 Jeff Bailey <jbailey@raspberryginger.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/configure.in: Require
|
||||
at least kernel 2.6.9.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/configure: Rebuilt.
|
||||
|
||||
2007-05-17 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/bits/semaphore.h
|
||||
(SEM_VALUE_MAX): Remove.
|
||||
|
||||
2007-05-17 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sysdep.h (PIC_REG_DEF): Define.
|
||||
(PIC_REG_USE): Define.
|
||||
(INLINE_SYSCALL): Use PIC_REG_DEF, PIC_REG_USE.
|
||||
(INTERNAL_SYSCALL): Likewise.
|
||||
(INTERNAL_SYSCALL_NCS): Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/sysdep.c (syscall): Use
|
||||
PIC_REG_DEF, PIC_REG_USE.
|
||||
|
||||
2007-05-01 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/bits/pthreadtypes.h
|
||||
[__USE_XOPEN2K]: Define pthread_rwlock_t and
|
||||
pthread_rwlockattr_t.
|
||||
|
||||
2007-02-02 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sysdep.h (PTR_MANGLE): Define.
|
||||
(PTR_DEMANGLE): Define.
|
||||
|
||||
2007-02-02 Guy Martin <gmsoft@tuxicoman.be>
|
||||
|
||||
* sysdeps/hppa/dl-trampoline.S (_dl_runtime_profile):
|
||||
Add cfi_endproc.
|
||||
|
||||
2006-12-03 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Remove non-atomic
|
||||
versions. Adjust jump target to '0b'.
|
||||
|
||||
2006-12-03 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/Makefile: Set long-double-fcts to `no'.
|
||||
* sysdeps/hppa/fpu/libm-test-ulps: Regenerate.
|
||||
* sysdeps/hppa/fpu/bits/mathdef.h: New file.
|
||||
|
||||
2006-11-10 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/nptl/pthread_spin_init.c: New file.
|
||||
* sysdeps/hppa/nptl/pthread_spin_unlock.c: Remove strong alias
|
||||
to pthread_spin_init.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Define
|
||||
RTLD_SINGLE_THREAD_P.
|
||||
|
||||
2006-09-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (splice): Add offin
|
||||
and offout arguments to the prototype.
|
||||
|
||||
2006-09-15 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/nptl/tcb-offsets.sym: Define TID_THREAD_OFFSET.
|
||||
* sysdeps/unix/sysv/linux/hppa/clone.S: Handle RESET_PID, and
|
||||
restore r19 before call to _exit.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/clone.S: New file.
|
||||
|
||||
2006-09-13 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/dl-machine.h (RTLD_START): Comment the use of
|
||||
_dl_fini_plabel.
|
||||
* sysdeps/hppa/elf/start.S: Correctly pass r23 to argument 6 of
|
||||
__libc_start_main. Comment the order of arguments at entry and
|
||||
those to __libc_start_main.
|
||||
|
||||
2006-09-07 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/dl-machine.h (elf_machine_fixup_plt): Remove
|
||||
lvalue cast.
|
||||
* sysdeps/hppa/dl-trampoline.S (_dl_fixup): Correct stack usage.
|
||||
(_dl_runtime_profile): LA fixups.
|
||||
* sysdeps/unix/sysv/linux/hppa/clone.S: Correct stack usage. Return
|
||||
-1 on error. Use branch and link for error handler funciton.
|
||||
* sysdeps/unix/sysv/linux/hppa/sysdep.h: Correct stack usage.
|
||||
Avoid register shuffling.
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h (ASM_EAGAIN): Define
|
||||
as -EAGAIN.
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/mman.h: Adjust definitions to
|
||||
match required standards.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
|
||||
(lll_futex_wait): Return __ret.
|
||||
(lll_futex_timed_wait): Likewise.
|
||||
(lll_futex_wake): Likewise.
|
||||
(lll_futex_requeue): Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S: Correct stack
|
||||
usage and adjust error return.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Adjust
|
||||
stack usage for gdb, and avoid extra register loads.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c: Copy
|
||||
nptl/sysdeps/pthread/unwind-forcedunwind.c.
|
||||
(LIBGCC_SO): Define and use.
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-resume.c: Copy
|
||||
nptl/sysdeps/pthread/unwind-resume.c.
|
||||
(LIBGCC_SO): Define and use.
|
||||
|
||||
2006-08-13 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h (FUTEX_LOCK_PI,
|
||||
FUTEX_UNLOCK_PI, FUTEX_TRYLOCK_PI): Define.
|
||||
|
||||
2006-07-24 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h:
|
||||
__SIZEOF_PTHREAD_COND_T is 64 bytes. Remove __PAD_ATOMIC_LOCK_T.
|
||||
|
||||
2006-07-18 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/nptl/pthread_spin_lock.c (pthread_spin_lock): Swap
|
||||
newval and oldval.
|
||||
* sysdeps/hppa/nptl/pthread_spin_trylock.c (pthread_spin_trylock):
|
||||
Likewise.
|
||||
|
||||
2006-07-16 Jeff Bailey <jbailey@ubuntu.com>
|
||||
|
||||
* sysdeps/hppa/tst-audit.h: New file.
|
||||
|
||||
2006-07-16 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/tls-macros.h: Cleanup formatting.
|
||||
|
||||
2006-07-15 Jeff Bailey <jbailey@ubuntu.com>
|
||||
|
||||
* sysdeps/hppa/nptl/tls.h (TLS_INIT_TP): Return NULL.
|
||||
|
||||
2006-07-13 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/xstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/hppa/lxstat.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/fxstat.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/fxstatat.c: Likewise.
|
||||
|
||||
2006-07-13 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/nptl/Makefile: New file
|
||||
* sysdeps/hppa/nptl/jmpbuf-unwind.h: Likewise
|
||||
* sysdeps/hppa/nptl/pthread_spin_lock.c: Likewise
|
||||
* sysdeps/hppa/nptl/pthread_spin_trylock.c: Likewise
|
||||
* sysdeps/hppa/nptl/pthread_spin_unlock.c: Likewise
|
||||
* sysdeps/hppa/nptl/pthreaddef.h: Likewise
|
||||
* sysdeps/hppa/nptl/tcb-offsets.sym: Likewise
|
||||
* sysdeps/hppa/nptl/tls.h: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/bits: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/createthread.c: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/fork.c: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/internaltypes.h: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/libc-lowlevellock.c: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/pt-initfini.c: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/pthread_once.c: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c: Likewise
|
||||
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-resume.c: Likewise
|
||||
|
||||
2006-06-08 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/Versions: new errlist compat entry
|
||||
for up to 256 errnos
|
||||
|
||||
2006-06-08 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/hppa1.1/Implies: Remove ieee754/ldbl-128.
|
||||
* sysdeps/unix/sysv/linux/hppa/kernel-features.h
|
||||
[__LINUX_KERNEL_VERSION >= 0x020609]: Define __ASSUME_LWS_CAS.
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: New file.
|
||||
|
||||
2006-06-08 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Reformat
|
||||
(SPLICE_F_MOVE, SPLICE_F_NONBLOCK, SPLICE_F_MORE, SPLICE_F_GIFT):
|
||||
Define.
|
||||
|
||||
2006-05-24 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/clone.S: .LerrorRest
|
||||
is a label.
|
||||
|
||||
2006-05-24 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/ldsodefs.h: New file.
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/mman.h:
|
||||
Only define MADV_* macros when __USE_BSD is present.
|
||||
(MADV_REMOVE, MADV_DONTFORK, MADV_DOFORK): Define.
|
||||
|
||||
2006-05-15 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/clone.S: Accept extra arguments
|
||||
required for NPTL.
|
||||
* sysdeps/unix/sysv/linux/hppa/sysdep.c: Use var args for 6 arg
|
||||
syscall.
|
||||
* sysdeps/unix/sysv/linux/hppa/sysdep.h: Move DOARGS and UNDOARGS
|
||||
into PSEUDO_*'s.
|
||||
(ENTRY_LEAF): Define.
|
||||
(PSEUDO_NOERRNO, PSEUDO_ERRVAL): Use ENTRY_LEAF.
|
||||
(DO_CALL): Create frame.
|
||||
|
||||
2006-05-15 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/dl-machine.h: Include tls.h
|
||||
(elf_machine_fixup_plt): Returns fdesc.
|
||||
(elf_machine_profile_fixup_plt): Remove.
|
||||
(elf_machine_plt_value): Returns fdesc.
|
||||
(elf_machine_runtime_setup): Check that dl_profile != NULL.
|
||||
(ARCH_LA_PLTENT, ARCH_LA_PLTEXIT): Define.
|
||||
(RTLD_START): Use iitlbp with sr0.
|
||||
(elf_machine_type_class): Include TLS relocs.
|
||||
(reassemble_21, reassemble_14): Define.
|
||||
(elf_machine_rela): Add DIR21L, DIR14R, PLABEL21L, PLABEL14R,
|
||||
TLS_DTPMOD32, TLS_TPREL32, TLS_DTPOFF32 support.
|
||||
(TRAMPOLINE_TEMPLATE): Move to ...
|
||||
* sysdeps/hppa/dl-trampoline.S: ... here.
|
||||
* sysdeps/hppa/abort-instr.h: Use iitlbp with sr0.
|
||||
* sysdeps/hppa/dl-lookupcfg.h: Inlcude dl-fptr.h.
|
||||
(DL_FIXUP_VALUE_TYPE, DL_FIXUP_MAKE_VALUE, DL_FIXUP_VALUE_CODE_ADDR,
|
||||
DL_FIXUP_VALUE_ADD, DL_FIXUP_ADDR_VALUE): Define.
|
||||
* sysdeps/hppa/sysdep.h: Use "!" as a separator. Cleanup comments.
|
||||
* sysdeps/hppa/bits/link.h (La_hppa_regs, La_hppa_retval): Define.
|
||||
Define prototypes for la_hppa_gnu_pltenter and la_hppa_gnu_pltexit.
|
||||
|
||||
2006-04-27 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Include uio.h, and
|
||||
define vmsplice.
|
||||
|
||||
2006-04-21 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/dl-tls.h: New file
|
||||
* sysdeps/hppa/libc-tls.c: Likewise.
|
||||
* sysdeps/hppa/tls-macros.h: Likewise.
|
||||
* sysdeps/hppa/elf/configure: Likewise.
|
||||
* sysdeps/hppa/elf/configure.in: Likewise.
|
||||
|
||||
2006-04-20 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/fpu/fclrexcpt.c (feclearexcept): Use union to
|
||||
align parameters. Specify memory clobbers.
|
||||
* sysdeps/hppa/fpu/fedisblxcpt.c (fedisableexcept): Likewise.
|
||||
* sysdeps/hppa/fpu/feenablxcpt.c (feenableexcept): Likewise.
|
||||
* sysdeps/hppa/fpu/fegetenv.c (fegetenv): Do not save exception
|
||||
register. Use memcpy to align buffer.
|
||||
* sysdeps/hppa/fpu/fegetexcept.c (fegetexcept): Store and reload
|
||||
fr0. Use union to align parameters.
|
||||
* sysdeps/hppa/fpu/fegetround.c (fegetround): Likewise.
|
||||
* sysdeps/hppa/fpu/feholdexcpt.c (feholdexcept): Do not save
|
||||
exception registers. Define libm_hidden_def.
|
||||
* sysdeps/hppa/fpu/fesetenv.c (fesetenv): Do not save exception
|
||||
registers.
|
||||
* sysdeps/hppa/fpu/fesetround.c (fesetround): Use union to
|
||||
align parameters, speficy memory clobbers. Define libm_hidde_def
|
||||
* sysdeps/hppa/fpu/feupdateenv.c (feupdateenv): Use union to align
|
||||
parameters. Use memcpy to align buffer.
|
||||
* sysdeps/hppa/fpu/fgetexcptflg.c (fegetexceptflag): Likewise.
|
||||
* sysdeps/hppa/fpu/fsetexcptflg.c (fesetexceptflag): Likewise.
|
||||
* sysdeps/hppa/fpu/ftestexcept.c (fetestexcept): Likewise.
|
||||
* sysdeps/hppa/fpu/libm-test-ulps: Update.
|
||||
* sysdeps/hppa/fpu/bits/fenv.h: Add ABI comments.
|
||||
|
||||
2006-04-19 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/mman.h [__USE_GNU]:
|
||||
Define MMAP_FIXED.
|
||||
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h [__USE_GNU]:
|
||||
Define SYNC_FILE_RANGE_WAIT_BEFORE, SYNC_FILE_RANGE_WRITE,
|
||||
SYNC_FILE_RANGE_WAIT_AFTER, sync_file_range, splice, tee.
|
||||
|
||||
2006-04-19 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/kernel-features.h: New file.
|
||||
|
||||
2006-04-19 Carlos O'Donell <carlos@systemhalted.org>
|
||||
|
||||
* sysdeps/hppa/linuxthreads/pspinlock.c: New file.
|
||||
* sysdeps/hppa/linuxthreads/pt-machine.h: Likewise.
|
||||
* sysdeps/hppa/linuxthreads/tls.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/aio_cancel.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/malloc-machine.h:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/pt-initfini.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/bits/initspin.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/hppa/linuxthreads/bits/pthreadtypes.h:
|
||||
Likewise.
|
||||
|
||||
2006-02-28 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/hppa/shlib-versions: New file.
|
||||
* sysdeps/hppa/preconfigure: New file.
|
936
ports/ChangeLog.ia64
Normal file
936
ports/ChangeLog.ia64
Normal file
@ -0,0 +1,936 @@
|
||||
2012-05-30 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/syscalls.list: Remove
|
||||
__connect_internal alias.
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/pthread_once.c: Replace
|
||||
_internal alias by hidden_def.
|
||||
|
||||
2012-05-25 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist: Update.
|
||||
|
||||
2012-05-24 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/mman.h (MADV_DONTDUMP): Define.
|
||||
(MADV_DODUMP): Likewise.
|
||||
|
||||
2012-05-23 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Add forward
|
||||
declaration of pthread_attr_t and use it in sigevent.
|
||||
|
||||
2012-05-15 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/elf/stackguard-macros.h: Delete unused file.
|
||||
|
||||
2012-05-14 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
[BZ #14109]
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/setjmp.h (__jmp_buf): Use
|
||||
__aligned__ in attribute.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (ia64_fpreg):
|
||||
Likewise.
|
||||
|
||||
2012-05-14 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/fpu/libm-symbols.h: Delete __ELF__ checks.
|
||||
|
||||
2012-05-07 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/sysdep.h: Include errno.h.
|
||||
|
||||
2012-05-06 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* data/localplt-ia64-linux-gnu.data: New file.
|
||||
|
||||
2012-05-06 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/ld.abilist: Update symbol list.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libdl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libm.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libpthread.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libresolv.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/librt.abilist: Likewise.
|
||||
|
||||
2012-05-06 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/ld.abilist: Generated from
|
||||
files found in glibc-2.15.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libBrokenLocale.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libanl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libcrypt.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libdl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libm.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libnsl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libpthread.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libresolv.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/librt.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libthread_db.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libutil.abilist: Likewise.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/fpu/s_ilogbl.S: Move to ...
|
||||
* sysdeps/ia64/fpu/e_ilogbl.S: ... here.
|
||||
(__ieee754_ilogbl): Rename from ilogbl.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/kernel-features.h (__ASSUME_ACCEPT4):
|
||||
Define.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/dl-tls.h (GET_ADDR_PARAM): Define.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/bits/byteswap.h (__bswap_16): Removed.
|
||||
Include <bits/byteswap-16.h> to get __bswap_16.
|
||||
* sysdeps/ia64/bits/byteswap-16.h: New file.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Delete __cplusplus
|
||||
define check.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/bits/pthreadtypes.h
|
||||
(pthread_attr_t): Change union tag to pthread_attr_t. Only define
|
||||
typedef if not already defined.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/mman.h (MAP_STACK): Define.
|
||||
(MAP_HUGETLB): Likewise.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/fpu/s_scalbn.c (__scalbn): Rename from scalbn.
|
||||
Add weak alias from scalbn to __scalbn.
|
||||
* sysdeps/ia64/fpu/s_scalbnf.c (__scalbnf): Rename from scalbnf.
|
||||
Add weak alias from scalbnf to __scalbnf.
|
||||
* sysdeps/ia64/fpu/s_scalbnl.c (__scalbnl): Rename from scalbnl.
|
||||
Add weak alias from scalbnl to __scalbnl.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/fpu/s_matherrf.c: Delete __STDC__.
|
||||
* sysdeps/ia64/fpu/s_matherrl.c,
|
||||
sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/fpu/e_rem_pio2l.c: New file.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/bits/fenv.h: Change __const to const.
|
||||
* sysdeps/unix/sysv/linux/ia64/swapcontext.c: Likewise.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/fpu/s_matherrf.c: Change "math.h" and "math_private.h"
|
||||
to <math.h> and <math_private.h>.
|
||||
* sysdeps/ia64/fpu/s_matherrl.c: Likewise.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/hp-timing.h: Change stdio-common/_itoa.h to _itoa.h.
|
||||
* sysdeps/unix/sysv/linux/ia64/register-dump.h: Likewise.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/crti.S: New file.
|
||||
* sysdeps/ia64/crtn.S: Likewise.
|
||||
* sysdeps/ia64/elf/initfini.c: Delete.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/pt-initfini.c: Likewise.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/elf/configure.in: Merge contents to ...
|
||||
* sysdeps/ia64/configure.in: ... here.
|
||||
* sysdeps/ia64/elf/configure: Delete.
|
||||
* sysdeps/ia64/configure: Regenerate.
|
||||
* sysdeps/ia64/elf/entry.h: Move to ...
|
||||
* sysdeps/ia64/entry.h: ... here.
|
||||
* sysdeps/ia64/elf/start.S: Move to ...
|
||||
* sysdeps/ia64/start.S: ... here.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/elf/stackguard-macros.h: New stub include file.
|
||||
* sysdeps/ia64/ldsodefs.h: Move ia64 logic from
|
||||
sysdeps/generic/ldsodefs.h.
|
||||
* sysdeps/ia64/nptl/shlib-versions: Move ia64 logic from
|
||||
nptl/shlib-versions.
|
||||
* sysdeps/ia64/preconfigure: Move ia64 logic from configure.in.
|
||||
* sysdeps/ia64/shlib-versions: Move ia64 logic from shlib-versions.
|
||||
* sysdeps/ia64/stackguard-macros.h: Move ia64 logic from
|
||||
elf/stackguard-macros.h.
|
||||
* sysdeps/ia64/tls-macros.h: Move ia64 logic from elf/tls-macros.h.
|
||||
* sysdeps/ia64/tst-audit.h: Move ia64 logic from elf/tst-auditmod1.c.
|
||||
* sysdeps/unix/sysv/linux/ia64/configure.in: Move ia64 logic from
|
||||
sysdeps/unix/sysv/linux/configure.
|
||||
* sysdeps/unix/sysv/linux/ia64/configure: Generate.
|
||||
* sysdeps/unix/sysv/linux/ia64/kernel-features.h: Move ia64 logic
|
||||
from sysdeps/unix/sysv/linux/kernel-features.h.
|
||||
|
||||
2012-04-27 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/backtrace.c: Replace all contents with a single
|
||||
include of sysdeps/x86_64/backtrace.c.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/fork.c: Change include path
|
||||
prefix from ../ to sysdeps/unix/sysv/linux/, and "..." to <...>.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/timer_create.c,
|
||||
sysdeps/unix/sysv/linux/ia64/nptl/timer_delete.c,
|
||||
sysdeps/unix/sysv/linux/ia64/nptl/timer_getoverr.c,
|
||||
sysdeps/unix/sysv/linux/ia64/nptl/timer_gettime.c,
|
||||
sysdeps/unix/sysv/linux/ia64/nptl/timer_settime.c,
|
||||
sysdeps/unix/sysv/linux/ia64/sysconf.c,
|
||||
sysdeps/unix/sysv/linux/ia64/system.c: Likewise.
|
||||
|
||||
2012-04-25 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/bits/local_lim.h: Replace
|
||||
boiler license text with standard GNU Lesser General Public.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/unwind-forcedunwind.c: Likewise.
|
||||
|
||||
2012-04-22 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/_mcount.S: Replace FSF snail mail address with URL.
|
||||
* sysdeps/ia64/backtrace.c: Likewise.
|
||||
* sysdeps/ia64/bits/atomic.h: Likewise.
|
||||
* sysdeps/ia64/bits/byteswap.h: Likewise.
|
||||
* sysdeps/ia64/bits/fenv.h: Likewise.
|
||||
* sysdeps/ia64/bits/huge_vall.h: Likewise.
|
||||
* sysdeps/ia64/bits/link.h: Likewise.
|
||||
* sysdeps/ia64/bits/mathdef.h: Likewise.
|
||||
* sysdeps/ia64/bits/xtitypes.h: Likewise.
|
||||
* sysdeps/ia64/bzero.S: Likewise.
|
||||
* sysdeps/ia64/dl-dtprocnum.h: Likewise.
|
||||
* sysdeps/ia64/dl-fptr.h: Likewise.
|
||||
* sysdeps/ia64/dl-lookupcfg.h: Likewise.
|
||||
* sysdeps/ia64/dl-machine.h: Likewise.
|
||||
* sysdeps/ia64/dl-sysdep.h: Likewise.
|
||||
* sysdeps/ia64/dl-tls.h: Likewise.
|
||||
* sysdeps/ia64/dl-trampoline.S: Likewise.
|
||||
* sysdeps/ia64/elf/initfini.c: Likewise.
|
||||
* sysdeps/ia64/elf/start.S: Likewise.
|
||||
* sysdeps/ia64/fpu/bits/math-finite.h: Likewise.
|
||||
* sysdeps/ia64/fpu/bits/mathinline.h: Likewise.
|
||||
* sysdeps/ia64/fpu/fclrexcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fedisblxcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/feenablxcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fegetenv.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fegetexcept.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fegetround.c: Likewise.
|
||||
* sysdeps/ia64/fpu/feholdexcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fesetenv.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fesetround.c: Likewise.
|
||||
* sysdeps/ia64/fpu/feupdateenv.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fgetexcptflg.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fraiseexcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fsetexcptflg.c: Likewise.
|
||||
* sysdeps/ia64/fpu/ftestexcept.c: Likewise.
|
||||
* sysdeps/ia64/fpu/printf_fphex.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_copysign.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_finite.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fpclassify.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_isinf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_isnan.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_signbit.S: Likewise.
|
||||
* sysdeps/ia64/gccframe.h: Likewise.
|
||||
* sysdeps/ia64/hp-timing.c: Likewise.
|
||||
* sysdeps/ia64/hp-timing.h: Likewise.
|
||||
* sysdeps/ia64/htonl.S: Likewise.
|
||||
* sysdeps/ia64/htons.S: Likewise.
|
||||
* sysdeps/ia64/ieee754.h: Likewise.
|
||||
* sysdeps/ia64/jmpbuf-unwind.h: Likewise.
|
||||
* sysdeps/ia64/libc-tls.c: Likewise.
|
||||
* sysdeps/ia64/machine-gmon.h: Likewise.
|
||||
* sysdeps/ia64/memccpy.S: Likewise.
|
||||
* sysdeps/ia64/memchr.S: Likewise.
|
||||
* sysdeps/ia64/memcmp.S: Likewise.
|
||||
* sysdeps/ia64/memcpy.S: Likewise.
|
||||
* sysdeps/ia64/memmove.S: Likewise.
|
||||
* sysdeps/ia64/memset.S: Likewise.
|
||||
* sysdeps/ia64/memusage.h: Likewise.
|
||||
* sysdeps/ia64/nptl/Makefile: Likewise.
|
||||
* sysdeps/ia64/nptl/pthread_spin_lock.c: Likewise.
|
||||
* sysdeps/ia64/nptl/pthread_spin_trylock.c: Likewise.
|
||||
* sysdeps/ia64/nptl/pthread_spin_unlock.c: Likewise.
|
||||
* sysdeps/ia64/nptl/pthreaddef.h: Likewise.
|
||||
* sysdeps/ia64/nptl/tls.h: Likewise.
|
||||
* sysdeps/ia64/sched_cpucount.c: Likewise.
|
||||
* sysdeps/ia64/softpipe.h: Likewise.
|
||||
* sysdeps/ia64/stackinfo.h: Likewise.
|
||||
* sysdeps/ia64/strcat.c: Likewise.
|
||||
* sysdeps/ia64/strchr.S: Likewise.
|
||||
* sysdeps/ia64/strcmp.S: Likewise.
|
||||
* sysdeps/ia64/strcpy.S: Likewise.
|
||||
* sysdeps/ia64/strlen.S: Likewise.
|
||||
* sysdeps/ia64/strncmp.S: Likewise.
|
||||
* sysdeps/ia64/strncpy.S: Likewise.
|
||||
* sysdeps/ia64/sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/__longjmp.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/__start_context.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/ipc.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/msq.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sem.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/shm.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sigaction.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sigstack.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/brk.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/clone2.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/dl-cache.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/dl-static.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/fork.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/get_clockfreq.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/getcontext.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/getpagesize.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/has_cpuclock.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/ioperm.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/kernel_stat.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/ldconfig.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/ldsodefs.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/makecontext.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/__ia64_longjmp.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/__sigstack_longjmp.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/bits/pthreadtypes.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/bits/semaphore.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/createthread.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/fork.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/pt-vfork.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/pthread_once.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/unwind_longjmp.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/vfork.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/pipe.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/profil-counter.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/readelflib.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/register-dump.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/setcontext.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sigpending.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/swapcontext.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/io.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/rse.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/user.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/syscall.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sysconf.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/system.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/ucontext_i.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/umount.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/vfork.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/wordexp.c: Likewise.
|
||||
|
||||
2012-04-22 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/fpu/e_acosf.S: Trim trailing whitespace.
|
||||
* sysdeps/ia64/fpu/e_acoshl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_acosl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_asinf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_asinl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_atan2f.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_atanhl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_coshl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_exp.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_expf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_fmodl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_hypot.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_hypotf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_hypotl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log2.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log2f.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log2l.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_logl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_powf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_remainder.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_remainderf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_remainderl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_scalb.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_scalbf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_scalbl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sinhl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sqrt.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sqrtf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sqrtl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_cpu_defs.h: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_error_codes.h: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_frexp.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_frexpf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_frexpl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_scalblnf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_tan.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_asinhl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_atanf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_atanl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_cbrtl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_cos.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_cosf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erfc.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erfcf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erfcl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erff.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erfl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_expm1.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_expm1f.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_expm1l.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fabs.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fabsf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fabsl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_finite.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fma.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmaf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmal.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmax.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmaxf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmaxl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fpclassify.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_frexp.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_frexpf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_frexpl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ldexp.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ldexpf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ldexpl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_log1pl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_modf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_modff.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_modfl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nextafter.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nextafterf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nextafterl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nexttoward.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nexttowardf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nexttowardl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_round.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_roundf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_roundl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_scalblnf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_scalbn.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_scalbnf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_scalbnl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_signbit.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_significand.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_significandf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_significandl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tan.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanh.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanhf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanhl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/w_tgamma.S: Likewise.
|
||||
* sysdeps/ia64/fpu/w_tgammaf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/w_tgammal.S: Likewise.
|
||||
* sysdeps/ia64/softpipe.h: Likewise.
|
||||
* sysdeps/ia64/strchr.S: Likewise.
|
||||
* sysdeps/ia64/strlen.S: Likewise.
|
||||
* sysdeps/ia64/strncmp.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/register-dump.h: Likewise.
|
||||
|
||||
2012-04-22 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/ia64/Implies: Copied from the main tree.
|
||||
* sysdeps/ia64/Makefile: Likewise.
|
||||
* sysdeps/ia64/Versions: Likewise.
|
||||
* sysdeps/ia64/_mcount.S: Likewise.
|
||||
* sysdeps/ia64/abort-instr.h: Likewise.
|
||||
* sysdeps/ia64/backtrace.c: Likewise.
|
||||
* sysdeps/ia64/bcopy.S: Likewise.
|
||||
* sysdeps/ia64/bits/atomic.h: Likewise.
|
||||
* sysdeps/ia64/bits/byteswap.h: Likewise.
|
||||
* sysdeps/ia64/bits/fenv.h: Likewise.
|
||||
* sysdeps/ia64/bits/huge_vall.h: Likewise.
|
||||
* sysdeps/ia64/bits/link.h: Likewise.
|
||||
* sysdeps/ia64/bits/linkmap.h: Likewise.
|
||||
* sysdeps/ia64/bits/mathdef.h: Likewise.
|
||||
* sysdeps/ia64/bits/xtitypes.h: Likewise.
|
||||
* sysdeps/ia64/bzero.S: Likewise.
|
||||
* sysdeps/ia64/configure: Likewise.
|
||||
* sysdeps/ia64/configure.in: Likewise.
|
||||
* sysdeps/ia64/dl-dtprocnum.h: Likewise.
|
||||
* sysdeps/ia64/dl-fptr.h: Likewise.
|
||||
* sysdeps/ia64/dl-lookupcfg.h: Likewise.
|
||||
* sysdeps/ia64/dl-machine.h: Likewise.
|
||||
* sysdeps/ia64/dl-sysdep.h: Likewise.
|
||||
* sysdeps/ia64/dl-tls.h: Likewise.
|
||||
* sysdeps/ia64/dl-trampoline.S: Likewise.
|
||||
* sysdeps/ia64/elf/configure: Likewise.
|
||||
* sysdeps/ia64/elf/configure.in: Likewise.
|
||||
* sysdeps/ia64/elf/entry.h: Likewise.
|
||||
* sysdeps/ia64/elf/initfini.c: Likewise.
|
||||
* sysdeps/ia64/elf/start.S: Likewise.
|
||||
* sysdeps/ia64/fpu/Makefile: Likewise.
|
||||
* sysdeps/ia64/fpu/README: Likewise.
|
||||
* sysdeps/ia64/fpu/Versions: Likewise.
|
||||
* sysdeps/ia64/fpu/bits/math-finite.h: Likewise.
|
||||
* sysdeps/ia64/fpu/bits/mathinline.h: Likewise.
|
||||
* sysdeps/ia64/fpu/branred.c: Likewise.
|
||||
* sysdeps/ia64/fpu/doasin.c: Likewise.
|
||||
* sysdeps/ia64/fpu/dosincos.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_acos.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_acosf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_acosh.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_acoshf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_acoshl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_acosl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_asin.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_asinf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_asinl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_atan2.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_atan2f.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_atan2l.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_atanh.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_atanhf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_atanhl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_cosh.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_coshf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_coshl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_exp.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_exp10.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_exp10f.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_exp10l.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_exp2.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_exp2f.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_exp2l.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_expf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_expl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_fmod.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_fmodf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_fmodl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_gamma_r.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_gammaf_r.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_gammal_r.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_hypot.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_hypotf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_hypotl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_lgamma_r.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_lgammaf_r.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_lgammal_r.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log10.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log10f.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log10l.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log2.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log2f.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_log2l.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_logf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_logl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_pow.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_powf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_powl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_rem_pio2.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_rem_pio2f.c: Likewise.
|
||||
* sysdeps/ia64/fpu/e_remainder.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_remainderf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_remainderl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_scalb.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_scalbf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_scalbl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sinh.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sinhf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sinhl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sqrt.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sqrtf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/e_sqrtl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/fclrexcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fedisblxcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/feenablxcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fegetenv.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fegetexcept.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fegetround.c: Likewise.
|
||||
* sysdeps/ia64/fpu/feholdexcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fesetenv.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fesetround.c: Likewise.
|
||||
* sysdeps/ia64/fpu/feupdateenv.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fgetexcptflg.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fraiseexcpt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/fsetexcptflg.c: Likewise.
|
||||
* sysdeps/ia64/fpu/ftestexcept.c: Likewise.
|
||||
* sysdeps/ia64/fpu/gen_import_file_list: Likewise.
|
||||
* sysdeps/ia64/fpu/halfulp.c: Likewise.
|
||||
* sysdeps/ia64/fpu/import_check: Likewise.
|
||||
* sysdeps/ia64/fpu/import_diffs: Likewise.
|
||||
* sysdeps/ia64/fpu/import_file.awk: Likewise.
|
||||
* sysdeps/ia64/fpu/import_intel_libm: Likewise.
|
||||
* sysdeps/ia64/fpu/k_rem_pio2.c: Likewise.
|
||||
* sysdeps/ia64/fpu/k_rem_pio2f.c: Likewise.
|
||||
* sysdeps/ia64/fpu/k_rem_pio2l.c: Likewise.
|
||||
* sysdeps/ia64/fpu/libc_libm_error.c: Likewise.
|
||||
* sysdeps/ia64/fpu/libm-symbols.h: Likewise.
|
||||
* sysdeps/ia64/fpu/libm-test-ulps: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_cpu_defs.h: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_error.c: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_error_codes.h: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_frexp.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_frexp4.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_frexp4f.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_frexp4l.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_frexpf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_frexpl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_lgamma.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_lgammaf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_lgammal.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_reduce.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_scalblnf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_sincos.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_sincos_large.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_sincosf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_sincosl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_support.h: Likewise.
|
||||
* sysdeps/ia64/fpu/libm_tan.S: Likewise.
|
||||
* sysdeps/ia64/fpu/math_ldbl.h: Likewise.
|
||||
* sysdeps/ia64/fpu/mpa.c: Likewise.
|
||||
* sysdeps/ia64/fpu/mpatan.c: Likewise.
|
||||
* sysdeps/ia64/fpu/mpatan2.c: Likewise.
|
||||
* sysdeps/ia64/fpu/mpexp.c: Likewise.
|
||||
* sysdeps/ia64/fpu/mplog.c: Likewise.
|
||||
* sysdeps/ia64/fpu/mpsqrt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/mptan.c: Likewise.
|
||||
* sysdeps/ia64/fpu/printf_fphex.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_asinh.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_asinhf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_asinhl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_atan.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_atanf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_atanl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_cbrt.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_cbrtf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_cbrtl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ceil.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ceilf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ceill.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_copysign.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_copysignf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_copysignl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_cos.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_cosf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_cosl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erfc.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erfcf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erfcl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erff.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_erfl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_expm1.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_expm1f.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_expm1l.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fabs.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fabsf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fabsl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fdim.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fdimf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fdiml.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_finite.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_finitef.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_finitel.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_floor.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_floorf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_floorl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fma.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmaf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmal.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmax.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmaxf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fmaxl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fpclassify.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fpclassifyf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_fpclassifyl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_frexp.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_frexpf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_frexpl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ilogb.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ilogbf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ilogbl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_isinf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_isinff.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_isinfl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_isnan.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_isnanf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_isnanl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ldexp.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ldexpf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_ldexpl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_libm_ldexp.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_libm_ldexpf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_libm_ldexpl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_libm_scalbn.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_libm_scalbnf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_libm_scalbnl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_log1p.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_log1pf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_log1pl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_logb.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_logbf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_logbl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_matherrf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_matherrl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_modf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_modff.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_modfl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nearbyint.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nearbyintf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nearbyintl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nextafter.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nextafterf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nextafterl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nexttoward.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nexttowardf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_nexttowardl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_rint.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_rintf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_rintl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_round.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_roundf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_roundl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_scalblnf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_scalbn.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_scalbnf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_scalbnl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_signbit.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_signbitf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_signbitl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_significand.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_significandf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_significandl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_sin.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_sincos.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_sincosf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_sincosl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_sinf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_sinl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tan.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanh.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanhf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanhl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_tanl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_trunc.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_truncf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/s_truncl.S: Likewise.
|
||||
* sysdeps/ia64/fpu/sincos32.c: Likewise.
|
||||
* sysdeps/ia64/fpu/slowexp.c: Likewise.
|
||||
* sysdeps/ia64/fpu/slowpow.c: Likewise.
|
||||
* sysdeps/ia64/fpu/t_exp.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_acos.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_acosf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_acosh.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_acoshf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_acoshl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_acosl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_asin.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_asinf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_asinl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_atan2.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_atan2f.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_atan2l.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_atanh.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_atanhf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_atanhl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_cosh.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_coshf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_coshl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_exp.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_exp10.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_exp10f.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_exp10l.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_exp2.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_exp2f.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_exp2l.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_expf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_expl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_fmod.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_fmodf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_fmodl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_hypot.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_hypotf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_hypotl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_lgamma.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_lgamma_r.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_lgammaf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_lgammaf_r.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_lgammal.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_lgammal_r.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_log.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_log10.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_log10f.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_log10l.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_log2.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_log2f.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_log2l.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_logf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_logl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_pow.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_powf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_powl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_remainder.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_remainderf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_remainderl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_scalb.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_scalbf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_scalbl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_sinh.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_sinhf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_sinhl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_sqrt.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_sqrtf.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_sqrtl.c: Likewise.
|
||||
* sysdeps/ia64/fpu/w_tgamma.S: Likewise.
|
||||
* sysdeps/ia64/fpu/w_tgammaf.S: Likewise.
|
||||
* sysdeps/ia64/fpu/w_tgammal.S: Likewise.
|
||||
* sysdeps/ia64/gccframe.h: Likewise.
|
||||
* sysdeps/ia64/hp-timing.c: Likewise.
|
||||
* sysdeps/ia64/hp-timing.h: Likewise.
|
||||
* sysdeps/ia64/htonl.S: Likewise.
|
||||
* sysdeps/ia64/htons.S: Likewise.
|
||||
* sysdeps/ia64/ia64libgcc.S: Likewise.
|
||||
* sysdeps/ia64/ieee754.h: Likewise.
|
||||
* sysdeps/ia64/jmpbuf-unwind.h: Likewise.
|
||||
* sysdeps/ia64/ldbl2mpn.c: Likewise.
|
||||
* sysdeps/ia64/libc-tls.c: Likewise.
|
||||
* sysdeps/ia64/machine-gmon.h: Likewise.
|
||||
* sysdeps/ia64/memccpy.S: Likewise.
|
||||
* sysdeps/ia64/memchr.S: Likewise.
|
||||
* sysdeps/ia64/memcmp.S: Likewise.
|
||||
* sysdeps/ia64/memcpy.S: Likewise.
|
||||
* sysdeps/ia64/memmove.S: Likewise.
|
||||
* sysdeps/ia64/memset.S: Likewise.
|
||||
* sysdeps/ia64/memusage.h: Likewise.
|
||||
* sysdeps/ia64/nptl/Makefile: Likewise.
|
||||
* sysdeps/ia64/nptl/pthread_spin_lock.c: Likewise.
|
||||
* sysdeps/ia64/nptl/pthread_spin_trylock.c: Likewise.
|
||||
* sysdeps/ia64/nptl/pthread_spin_unlock.c: Likewise.
|
||||
* sysdeps/ia64/nptl/pthreaddef.h: Likewise.
|
||||
* sysdeps/ia64/nptl/tcb-offsets.sym: Likewise.
|
||||
* sysdeps/ia64/nptl/tls.h: Likewise.
|
||||
* sysdeps/ia64/sched_cpucount.c: Likewise.
|
||||
* sysdeps/ia64/softpipe.h: Likewise.
|
||||
* sysdeps/ia64/stackinfo.h: Likewise.
|
||||
* sysdeps/ia64/strcat.c: Likewise.
|
||||
* sysdeps/ia64/strchr.S: Likewise.
|
||||
* sysdeps/ia64/strcmp.S: Likewise.
|
||||
* sysdeps/ia64/strcpy.S: Likewise.
|
||||
* sysdeps/ia64/strlen.S: Likewise.
|
||||
* sysdeps/ia64/strncmp.S: Likewise.
|
||||
* sysdeps/ia64/strncpy.S: Likewise.
|
||||
* sysdeps/ia64/sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/Implies: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/__longjmp.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/__start_context.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/endian.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/ipc.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/msq.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sem.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/shm.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sigaction.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sigstack.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/brk.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bsd-_setjmp.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/bsd-setjmp.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/clone.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/clone2.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/dl-brk.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/dl-cache.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/dl-static.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/fork.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/get_clockfreq.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/getclktck.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/getcontext.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/getpagesize.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/has_cpuclock.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/ioperm.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/kernel_stat.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/ldconfig.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/ldsodefs.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/makecontext.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/__ia64_longjmp.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/__sigstack_longjmp.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/bits/local_lim.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/bits/pthreadtypes.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/bits/semaphore.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/clone2.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/createthread.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/fork.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/pt-initfini.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/pt-vfork.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/pthread_once.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/timer_create.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/timer_delete.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/timer_getoverr.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/timer_gettime.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/timer_settime.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/unwind-forcedunwind.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/unwind_longjmp.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/vfork.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/pipe.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/profil-counter.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/readelflib.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/register-dump.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/rt-sysdep.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/setcontext.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sigpending.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/swapcontext.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/io.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/rse.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/user.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/syscall.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sysconf.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/system.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/ucontext_i.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/umount.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/unwind-dw2-fde.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/vfork.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/ia64/wordexp.c: Likewise.
|
136
ports/ChangeLog.linux-generic
Normal file
136
ports/ChangeLog.linux-generic
Normal file
@ -0,0 +1,136 @@
|
||||
2012-05-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/syscalls.list: Remove
|
||||
__connect_internal alias.
|
||||
|
||||
2012-05-18 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h
|
||||
(__FSWORD_T_TYPE): New macro.
|
||||
|
||||
2012-05-16 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/not-cancel.h: Add
|
||||
multiple-inclusion guard.
|
||||
|
||||
2012-05-16 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h:
|
||||
Remove now-unused __SNSECONDS_T_TYPE, and add new
|
||||
__SYSCALL_ULONG_TYPE and __SYSCALL_SLONG_TYPE types.
|
||||
|
||||
2012-05-14 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/stat.h,
|
||||
sysdeps/unix/sysv/linux/generic/bits/statfs.h:
|
||||
Use "__aligned__" instead of "aligned" in public headers.
|
||||
|
||||
2012-05-12 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list:
|
||||
Add entries for prlimit64 and fanotify_mark.
|
||||
|
||||
2012-05-12 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h
|
||||
(__SNSECONDS_T_TYPE): New macro.
|
||||
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2012-01-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/not-cancel.h: New file.
|
||||
|
||||
2012-01-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/epoll_wait.c: Remove
|
||||
libc_hidden_proto declaration now it's in sys/epoll.h override.
|
||||
|
||||
2011-12-09 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/msq.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/shm.h: New file.
|
||||
|
||||
2011-12-03 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/____longjmp_chk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/access.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/fcntl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/sem.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/stat.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/statfs.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/brk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/chmod.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/chown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/creat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/dl-origin.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/dup2.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/epoll_create.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/epoll_wait.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/futimesat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/getdents.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/getdents64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/inotify_init.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/kernel_stat.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/lchown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/link.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/lxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/mkdir.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/open.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/open64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/pause.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/pipe.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/poll.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/readlink.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/readlink_chk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/recv.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/rename.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/rmdir.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/select.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/send.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/symlink.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/syscalls.list: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/sysctl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/umount.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/unlink.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/ustat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/utimes.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/Versions: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/xmknod.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/xstat.c: New file.
|
1034
ports/ChangeLog.m68k
Normal file
1034
ports/ChangeLog.m68k
Normal file
File diff suppressed because it is too large
Load Diff
1555
ports/ChangeLog.mips
Normal file
1555
ports/ChangeLog.mips
Normal file
File diff suppressed because it is too large
Load Diff
179
ports/ChangeLog.powerpc
Normal file
179
ports/ChangeLog.powerpc
Normal file
@ -0,0 +1,179 @@
|
||||
2012-06-13 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* data/localplt-powerpcsoft-linux-gnu.data: Allow abort and
|
||||
soft-fp symbols to be absent.
|
||||
|
||||
2012-06-08 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Update.
|
||||
|
||||
2012-05-31 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Regenerated.
|
||||
|
||||
2012-05-30 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/soft-fp/sfp-machine.h (FP_EX_DENORM): Remove.
|
||||
(FP_TRAPPING_EXCEPTIONS): Define.
|
||||
|
||||
2012-05-21 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libm.abilist
|
||||
(__fe_nomask_env): Remove.
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Update.
|
||||
|
||||
2012-05-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/ld.abilist:
|
||||
New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libBrokenLocale.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libanl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libcrypt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libdl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libm.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libnsl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libresolv.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/librt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libthread_db.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libutil.abilist:
|
||||
Likewise.
|
||||
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2012-02-20 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Resort with
|
||||
gen-libm-test.pl -n in C locale.
|
||||
|
||||
2010-09-03 Luis Machado <luisgpm@br.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/dl-procinfo.c: New file.
|
||||
* sysdeps/powerpc/dl-procinfo.h: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/memcmp.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/memcpy.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/memset.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/strcmp.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/strcpy.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/strlen.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/strncmp.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/440/Implies: New file.
|
||||
* sysdeps/powerpc/powerpc32/464/Implies: New file.
|
||||
* sysdeps/powerpc/powerpc32/476/Implies: New file.
|
||||
* sysdeps/powerpc/powerpc32/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/405/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/440/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/464/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/476/Implies: New file.
|
||||
|
||||
2010-10-11 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/feupdateenv.c (feupdateenv): Add
|
||||
libm_hidden_ver.
|
||||
* sysdeps/powerpc/nofpu/ftestexcept.c (fetestexcept): Add
|
||||
libm_hidden_def.
|
||||
|
||||
2010-02-10 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fegetenv.c: Add hidden alias.
|
||||
|
||||
2008-08-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/shlib-versions: New.
|
||||
* c++-types-powerpcsoft-linux-gnu.data: New.
|
||||
* localplt-powerpcsoft-linux-gnu.data: New.
|
||||
* sysdeps/powerpc/nofpu/feholdexcpt.c (feholdexcept): Use
|
||||
__fegetenv.
|
||||
|
||||
2007-08-29 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fsetexcptflg.c (__fesetexceptflag): Do not
|
||||
clobber other exceptions.
|
||||
* sysdeps/powerpc/nofpu/feupdateenv.c (__feupdateenv): Raise new
|
||||
exceptions.
|
||||
* sysdeps/powerpc/nofpu/fraiseexcpt.c (__feraiseexcept): Handle
|
||||
multiple new exceptions if some are disabled.
|
||||
* sysdeps/powerpc/nofpu/sim-full.c (__simulate_exceptions): Likewise.
|
||||
|
||||
2007-07-13 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/Makefile: Remove fe_nomask from libm-support.
|
||||
|
||||
2007-05-23 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/feholdexcpt.c (feholdexcept): Disable
|
||||
exceptions. Use the updated env in fesetenv().
|
||||
Add libm_hidden_def.
|
||||
|
||||
2007-01-23 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
[BZ #2749]
|
||||
* sysdeps/powerpc/nofpu/fenv_libc.h: New file.
|
||||
|
||||
2007-01-08 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fesetenv.c (__sim_exceptions,
|
||||
__sim_disabled_exceptions, __sim_round_mode): Remove declarations.
|
||||
|
||||
2006-10-05 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
[BZ #2749]
|
||||
* sysdeps/powerpc/nofpu/Makefile
|
||||
[subdirs-soft-fp] (sysdep_routines): Remove gcc-quad-routines.
|
||||
[subdirs-math] (CPPFLAGS): Add -I../soft-fp.
|
||||
[subdirs-math] (CFLAGS-e_powl.c): Add -fno-builtin-fabsl.
|
||||
[subdirs-math] (CFLAGS-s_ccoshl.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_csinhl.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_clogl.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_clog10l.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_csinl.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_csqrtl.c): Likewise.
|
||||
* sysdeps/powerpc/nofpu/Versions (GLIBC_2.3.2): Remove __fixtfdi,
|
||||
__fixtfsi, and __trunctfsf2.
|
||||
(GLIBC_2.4): Remove __floatunditf, __floatunsitf, and __unordtf2.
|
||||
Add __nedf2, __nesf2, __gtdf2, __gtsf2, __ltdf2, __ltsf2.
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Update for soft-fp.
|
||||
* sysdeps/powerpc/soft-fp/sfp-machine.h: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies: New file.
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S:
|
||||
New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S:
|
||||
New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S:
|
||||
New file.
|
||||
|
||||
2006-01-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/Subdirs: New file.
|
||||
|
||||
* sysdeps/powerpc/nofpu/Makefile [$(subdir) = soft-fp]
|
||||
(sysdep_routines): Add $(gcc-quad-routines) here.
|
||||
|
||||
2006-01-06 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/Versions (libc: GLIBC_2.4): New set.
|
||||
Add __floatundidf, __floatundisf, __floatunditf, __floatunsidf,
|
||||
__floatunsisf, __floatunsitf, __unorddf2, __unordsf2, __unordtf2.
|
||||
|
||||
2005-10-11 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fesetround.c: Add libm_hidden_def.
|
371
ports/ChangeLog.tile
Normal file
371
ports/ChangeLog.tile
Normal file
@ -0,0 +1,371 @@
|
||||
2012-05-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/Makefile: Remove test
|
||||
that $(subdir) is "misc" when setting abi- variables.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile: New file.
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Account for new tests.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/Makefile: New file.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c: Replace
|
||||
_internal alias by hidden_def.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h
|
||||
(__ASSUME_NEW_GETRLIMIT_SYSCALL, __ASSUME_TRUNCATE64_SYSCALL): Remove.
|
||||
|
||||
2012-05-23 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/bits/mman.h (MADV_DONTDUMP): Define.
|
||||
(MADV_DODUMP): Likewise.
|
||||
|
||||
2012-05-22 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/bits/libm-test-ulps: Update.
|
||||
|
||||
* sysdeps/tile/bits/wordsize.h (__WORDSIZE_COMPAT32): Rename to
|
||||
__WORDSIZE_TIME64_COMPAT32.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist: Update.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist:
|
||||
Update.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist:
|
||||
Update.
|
||||
|
||||
2012-05-17 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/fegetenv.c: Version fegetenv() like fesetenv().
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist:
|
||||
Add fegetenv.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist: Likewise.
|
||||
|
||||
* sysdeps/tile/stackguard-macros.h: Support tilegx32.
|
||||
|
||||
* data/c++-types-tilepro-linux-gnu.data: Renamed from
|
||||
data/c++-types-tile-linux-gnu.data.
|
||||
* data/c++-types-tilegx-linux-gnu.data: New file.
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Improved fma() and exp10().
|
||||
|
||||
* sysdeps/tile/s_fma.c: Use ieee754/dbl-64 without rounding or
|
||||
exception support; it's still much better than the generic version.
|
||||
|
||||
2012-05-16 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/ucontext_i: Fix tilegx32 offset bug.
|
||||
* sysdeps/unix/sysv/linux/tile/getcontext.S: Fix tilegx32 bug
|
||||
where we accessed "uc_flags" as an 8-byte field.
|
||||
* sysdeps/unix/sysv/linux/tile/setcontext.S: Likewise,
|
||||
and also fix frame code not to access stack below "sp".
|
||||
* sysdeps/unix/sysv/linux/tile/swapcontext.S: Fix frame code not
|
||||
to access stack below "sp", and add frame unwind to error path.
|
||||
|
||||
2012-05-15 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/sotruss-lib.c: New file.
|
||||
|
||||
* sysdeps/tile/math_private.h (feraiseexcept): Use statement
|
||||
expression syntax to avoid compiler warning.
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: New file.
|
||||
|
||||
* sysdeps/tile/bits/fenv.h (__FE_UNDEFINED): New symbol.
|
||||
|
||||
* sysdeps/tile/ldsodefs.h (ARCH_PLTEXIT_MEMBERS): Add proper
|
||||
const qualifier to "inregs" argument.
|
||||
|
||||
* sysdeps/tile/elf/stackguard-macros.h: Delete unused file.
|
||||
|
||||
2012-05-14 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist:
|
||||
New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist: Likewise.
|
||||
|
||||
* sysdeps/tile/dl-start.S: Align stack for tilegx32.
|
||||
|
||||
2012-05-12 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/sys/dataplane.h: Add <features.h>.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/clone.S: Add missing CFI.
|
||||
|
||||
* sysdeps/tile/tls-macros.h: Fix buggy TLS_GD, etc., macros.
|
||||
|
||||
* sysdeps/tile/tilegx/memchr.c: Use new copy_byte() function
|
||||
to efficiently generate a large constant for masking.
|
||||
* sysdeps/tile/tilegx/memset.c: Likewise.
|
||||
* sysdeps/tile/tilegx/rawmemchr.c: Likewise.
|
||||
* sysdeps/tile/tilegx/strchr.c: Likewise.
|
||||
* sysdeps/tile/tilegx/strchrnul.c: Likewise.
|
||||
* sysdeps/tile/tilegx/strrchr.c: Likewise.
|
||||
* sysdeps/tile/tilegx/string-endian.h (copy_byte): New function.
|
||||
|
||||
* sysdeps/tile/tilegx/memcpy.c: Allow memcpy(p, p, n)
|
||||
without corrupting memory at "p".
|
||||
|
||||
* sysdeps/tile/__tls_get_addr.S: Use __WORDSIZE, not _LP64.
|
||||
|
||||
* sysdeps/tile/stackguard-macros.h: New file.
|
||||
* sysdeps/tile/elf/stackguard-macros.h: New stub include file.
|
||||
|
||||
* sysdeps/tile/Makefile (ELF_MACHINE_PLTREL_OVERLAP):
|
||||
Remove variable no longer used by core.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/bits/siginfo.h: Don't name
|
||||
siginfo_t struct. Add forward declaration of pthread_attr_t and
|
||||
use it in sigevent.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h: Name
|
||||
pthread_attr_t union.
|
||||
|
||||
* sysdeps/tile/crti.S: New file, based on compiler output
|
||||
for sysdeps/generic/initfini.c.
|
||||
* sysdeps/tile/crtn.S: Likewise.
|
||||
* sysdeps/tile/Makefile (CFLAGS-initfini.s): Remove variable.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/Makefile
|
||||
(CFLAGS-pt-initfini.s): Likewise.
|
||||
* sysdeps/tile/elf/start.S: Moved to ...
|
||||
* sysdeps/tile/start.S: ...here.
|
||||
|
||||
2012-04-15 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h: Include
|
||||
<_itoa.h> instead of <stdio-common/_itoa.h>.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h: Likewise.
|
||||
|
||||
2012-03-09 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/tile/math_private.h: Use include_next to
|
||||
chain math_private.h.
|
||||
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2012-01-31 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/bits/fenv.h: Use const instead of __const.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/cachectl.h: Likewise.
|
||||
|
||||
2012-01-31 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/sysdep.h: Use <feedback.h> not <feedback-asm.h>
|
||||
to reflect change from gcc community giveback.
|
||||
|
||||
2012-01-31 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/math_private.h: Ignore feraiseexcept() internally.
|
||||
|
||||
2012-01-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/sysdep.h: Don't check HAVE_ELF or NO_UNDERSCORES.
|
||||
|
||||
2012-01-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/tile/backtrace.c: Use x86_64 version of backtrace.c.
|
||||
|
||||
2011-12-03 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* data/c++-types-tile-linux-gnu.data: New file.
|
||||
* sysdeps/tile/Implies: New file.
|
||||
* sysdeps/tile/Makefile: New file.
|
||||
* sysdeps/tile/Versions: New file.
|
||||
* sysdeps/tile/__longjmp.S: New file.
|
||||
* sysdeps/tile/__tls_get_addr.S: New file.
|
||||
* sysdeps/tile/_mcount.S: New file.
|
||||
* sysdeps/tile/abort-instr.h: New file.
|
||||
* sysdeps/tile/backtrace.c: New file.
|
||||
* sysdeps/tile/bits/atomic.h: New file.
|
||||
* sysdeps/tile/bits/byteswap.h: New file.
|
||||
* sysdeps/tile/bits/endian.h: New file.
|
||||
* sysdeps/tile/bits/fenv.h: New file.
|
||||
* sysdeps/tile/bits/link.h: New file.
|
||||
* sysdeps/tile/bits/mathdef.h: New file.
|
||||
* sysdeps/tile/bits/mathinline.h: New file.
|
||||
* sysdeps/tile/bits/setjmp.h: New file.
|
||||
* sysdeps/tile/bsd-_setjmp.S: New file.
|
||||
* sysdeps/tile/bsd-setjmp.S: New file.
|
||||
* sysdeps/tile/bzero.S: New file.
|
||||
* sysdeps/tile/dl-lookupcfg.h: New file.
|
||||
* sysdeps/tile/dl-machine.h: New file.
|
||||
* sysdeps/tile/dl-runtime.c: New file.
|
||||
* sysdeps/tile/dl-start.S: New file.
|
||||
* sysdeps/tile/dl-tls.c: New file.
|
||||
* sysdeps/tile/dl-tls.h: New file.
|
||||
* sysdeps/tile/dl-trampoline.S: New file.
|
||||
* sysdeps/tile/elf/start.S: New file.
|
||||
* sysdeps/tile/fegetenv.c: New file.
|
||||
* sysdeps/tile/fegetround.c: New file.
|
||||
* sysdeps/tile/feholdexcpt.c: New file.
|
||||
* sysdeps/tile/fesetenv.c: New file.
|
||||
* sysdeps/tile/fesetround.c: New file.
|
||||
* sysdeps/tile/feupdateenv.c: New file.
|
||||
* sysdeps/tile/ffs.c: New file.
|
||||
* sysdeps/tile/ffsll.c: New file.
|
||||
* sysdeps/tile/gccframe.h: New file.
|
||||
* sysdeps/tile/jmpbuf-offsets.h: New file.
|
||||
* sysdeps/tile/jmpbuf-unwind.h: New file.
|
||||
* sysdeps/tile/ldsodefs.h: New file.
|
||||
* sysdeps/tile/machine-gmon.h: New file.
|
||||
* sysdeps/tile/nptl/Makefile: New file.
|
||||
* sysdeps/tile/nptl/pthread_spin_lock.c: New file.
|
||||
* sysdeps/tile/nptl/pthread_spin_trylock.c: New file.
|
||||
* sysdeps/tile/nptl/pthreaddef.h: New file.
|
||||
* sysdeps/tile/nptl/tcb-offsets.sym: New file.
|
||||
* sysdeps/tile/nptl/tls.h: New file.
|
||||
* sysdeps/tile/preconfigure: New file.
|
||||
* sysdeps/tile/s_fma.c: New file.
|
||||
* sysdeps/tile/s_fmaf.c: New file.
|
||||
* sysdeps/tile/setjmp.S: New file.
|
||||
* sysdeps/tile/shlib-versions: New file.
|
||||
* sysdeps/tile/stackinfo.h: New file.
|
||||
* sysdeps/tile/sysdep.h: New file.
|
||||
* sysdeps/tile/tilegx/bits/atomic.h: New file.
|
||||
* sysdeps/tile/tilegx/bits/wordsize.h: New file.
|
||||
* sysdeps/tile/tilegx/memchr.c: New file.
|
||||
* sysdeps/tile/tilegx/memcpy.c: New file.
|
||||
* sysdeps/tile/tilegx/memset.c: New file.
|
||||
* sysdeps/tile/tilegx/memusage.h: New file.
|
||||
* sysdeps/tile/tilegx/rawmemchr.c: New file.
|
||||
* sysdeps/tile/tilegx/strchr.c: New file.
|
||||
* sysdeps/tile/tilegx/strchrnul.c: New file.
|
||||
* sysdeps/tile/tilegx/string-endian.h: New file.
|
||||
* sysdeps/tile/tilegx/strlen.c: New file.
|
||||
* sysdeps/tile/tilegx/strrchr.c: New file.
|
||||
* sysdeps/tile/tilegx/tilegx32/Implies: New file.
|
||||
* sysdeps/tile/tilegx/tilegx64/Implies: New file.
|
||||
* sysdeps/tile/tilepro/Implies: New file.
|
||||
* sysdeps/tile/tilepro/bits/atomic.h: New file.
|
||||
* sysdeps/tile/tilepro/bits/wordsize.h: New file.
|
||||
* sysdeps/tile/tilepro/memchr.c: New file.
|
||||
* sysdeps/tile/tilepro/memcpy.S: New file.
|
||||
* sysdeps/tile/tilepro/memset.c: New file.
|
||||
* sysdeps/tile/tilepro/memusage.h: New file.
|
||||
* sysdeps/tile/tilepro/rawmemchr.c: New file.
|
||||
* sysdeps/tile/tilepro/strchr.c: New file.
|
||||
* sysdeps/tile/tilepro/strchrnul.c: New file.
|
||||
* sysdeps/tile/tilepro/strlen.c: New file.
|
||||
* sysdeps/tile/tilepro/strrchr.c: New file.
|
||||
* sysdeps/tile/tls-macros.h: New file.
|
||||
* sysdeps/tile/tst-audit.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/Versions: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/environments.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/local_lim.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/mman.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/mman.h~: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/sigaction.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/siginfo.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/cacheflush.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/configure: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/configure.in: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/getcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/makecontext.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/createthread.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/fork.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/vfork.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/waitpid.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/profil-counter.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/set_dataplane.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/setcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sigcontextinfo.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/swapcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/cachectl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/dataplane.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/procfs.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/ptrace.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/reg.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/ucontext.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/user.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/syscall.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sysdep.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/ucontext_i.h: New file.
|
43
ports/Makefile
Normal file
43
ports/Makefile
Normal file
@ -0,0 +1,43 @@
|
||||
# This makefile is not used by the glibc build process.
|
||||
# It's purely for making ports tarballs.
|
||||
|
||||
.PHONY: dist dist-ports
|
||||
dist: dist-ports
|
||||
|
||||
# Do `make dist dist-version=X.Y.Z' to make tar files of an older version.
|
||||
dist-version = $(version)
|
||||
# Also try 'dist-tag=some="-r TAG"' (or -D DATE) to get some tag rather
|
||||
# than the release tag for X.Y.Z.
|
||||
dist-tag = -r glibc-$(subst .,_,$(dist-version))
|
||||
|
||||
distname = glibc-ports-$(dist-version)
|
||||
|
||||
do-export = cvs $(CVSOPTS) -Q export -d $(basename $@) $(dist-tag)
|
||||
|
||||
dist-ports: $(foreach Z,.bz2 .gz,$(distname).tar$Z)
|
||||
md5sum $^
|
||||
$(distname).tar:
|
||||
@rm -fr $(basename $@)
|
||||
$(MAKE) -q `find sysdeps -name configure`
|
||||
$(do-export) ports
|
||||
find $(basename $@) -name configure -print | xargs touch
|
||||
tar cf $@ $(basename $@)
|
||||
rm -fr $(basename $@)
|
||||
|
||||
sysdeps-of-stem = sysdeps/$* sysdeps/unix/sysv/linux/$*
|
||||
|
||||
.PRECIOUS: %.gz %.bz2 # Don't delete output as intermediate files.
|
||||
dist-port-%: $(foreach Z,.bz2 .gz,glibc-port-%-$(dist-version).tar$Z)
|
||||
md5sum $^
|
||||
glibc-port-%-$(dist-version).tar: ChangeLog.%
|
||||
@rm -fr $(basename $@)
|
||||
$(MAKE) -q `find $(sysdeps-of-stem) -name configure`
|
||||
$(do-export) ports/ChangeLog.$* $(addprefix ports/,$(sysdeps-of-stem))
|
||||
mv $(basename $@)/ports/* $(basename $@)/
|
||||
rmdir $(basename $@)/ports
|
||||
find $(basename $@) -name configure -print | xargs touch
|
||||
tar cf $@ $(basename $@)
|
||||
rm -fr $(basename $@)
|
||||
|
||||
%.bz2: %; bzip2 -9vk $<
|
||||
%.gz: %; gzip -9vnc $< > $@.new && mv -f $@.new $@
|
50
ports/README
Normal file
50
ports/README
Normal file
@ -0,0 +1,50 @@
|
||||
This is the glibc ports repository, an add-on for the GNU C Library (glibc).
|
||||
It contains code that is not maintained in the official glibc source tree.
|
||||
|
||||
This includes working ports to GNU/Linux on some machine architectures that
|
||||
are not maintained in the official glibc source tree. It also includes
|
||||
some code once used by old libc ports now defunct, which has been abandoned
|
||||
but may be useful for some future porter to examine. It may also include
|
||||
some optimized functions tailored for specific CPU implementations of an
|
||||
architecture, to be selected using --with-cpu.
|
||||
|
||||
The ports repository is cooperatively maintained by volunteers on the
|
||||
<libc-ports@sourceware.org> mailing list, and housed in a separate
|
||||
ports git repository. See
|
||||
http://www.gnu.org/software/libc/download.html for details on using
|
||||
git. To report a bug in code housed in the ports repository, please
|
||||
go to http://sources.redhat.com/bugzilla/ and file a bug report under
|
||||
the glibc "ports" component.
|
||||
|
||||
An add-on for an individual port can be made from just the sysdeps/
|
||||
subdirectories containing the port's code. You may want to include a
|
||||
README and Banner of your own talking about your port's code in particular,
|
||||
rather than the generic ones here.
|
||||
|
||||
The real source code for any ports is found in the sysdeps/ subdirectories.
|
||||
These should be exactly what would go into the main libc source tree if you
|
||||
were to incorporate it directly. The only exceptions are the files
|
||||
sysdeps/*/preconfigure and sysdeps/*/preconfigure.in; these are fragments
|
||||
used by this add-on's configure fragment. The purpose of these is to set
|
||||
$base_machine et al when the main libc configure's defaults are not right
|
||||
for some machine. Everything else can and should be done from a normal
|
||||
sysdeps/.../configure fragment that is used only when the configuration
|
||||
selects that sysdeps subdirectory. Each port that requires some special
|
||||
treatment before the sysdeps directory list is calculated, should add a
|
||||
sysdeps/CPU/preconfigure file; this can either be written by hand or
|
||||
generated by Autoconf from sysdeps/CPU/preconfigure.in, and follow the
|
||||
rules for glibc add-on configure fragments. No preconfigure file should do
|
||||
anything on an unrelated configuration, so that disparate ports can be put
|
||||
into a single add-on without interfering with each other. Files that
|
||||
would go in scripts/data/ for libc go in data/ in ports.
|
||||
|
||||
Like all glibc add-ons, this must be used by specifying the directory in
|
||||
the --enable-add-ons option when running glibc's configure script.
|
||||
|
||||
The GNU C Library is free software. See the file COPYING.LIB in the
|
||||
libc repository for copying conditions, and LICENSES for notices about
|
||||
a few contributions that require these additional notices to be
|
||||
distributed. License copyright years may be listed using range
|
||||
notation, e.g., 2000-2011, indicating that every year in the range,
|
||||
inclusive, is a copyrightable year that would otherwise be listed
|
||||
individually.
|
67
ports/data/c++-types-arm-linux-gnueabi.data
Normal file
67
ports/data/c++-types-arm-linux-gnueabi.data
Normal file
@ -0,0 +1,67 @@
|
||||
blkcnt64_t:x
|
||||
blkcnt_t:l
|
||||
blksize_t:l
|
||||
caddr_t:Pc
|
||||
clockid_t:i
|
||||
clock_t:l
|
||||
daddr_t:i
|
||||
dev_t:y
|
||||
fd_mask:l
|
||||
fsblkcnt64_t:y
|
||||
fsblkcnt_t:m
|
||||
fsfilcnt64_t:y
|
||||
fsfilcnt_t:m
|
||||
fsid_t:8__fsid_t
|
||||
gid_t:j
|
||||
id_t:j
|
||||
ino64_t:y
|
||||
ino_t:m
|
||||
int16_t:s
|
||||
int32_t:i
|
||||
int64_t:x
|
||||
int8_t:a
|
||||
intptr_t:i
|
||||
key_t:i
|
||||
loff_t:x
|
||||
mode_t:j
|
||||
nlink_t:j
|
||||
off64_t:x
|
||||
off_t:l
|
||||
pid_t:i
|
||||
pthread_attr_t:14pthread_attr_t
|
||||
pthread_barrier_t:17pthread_barrier_t
|
||||
pthread_barrierattr_t:21pthread_barrierattr_t
|
||||
pthread_cond_t:14pthread_cond_t
|
||||
pthread_condattr_t:18pthread_condattr_t
|
||||
pthread_key_t:j
|
||||
pthread_mutex_t:15pthread_mutex_t
|
||||
pthread_mutexattr_t:19pthread_mutexattr_t
|
||||
pthread_once_t:i
|
||||
pthread_rwlock_t:16pthread_rwlock_t
|
||||
pthread_rwlockattr_t:20pthread_rwlockattr_t
|
||||
pthread_spinlock_t:i
|
||||
pthread_t:m
|
||||
quad_t:x
|
||||
register_t:i
|
||||
rlim64_t:y
|
||||
rlim_t:m
|
||||
sigset_t:10__sigset_t
|
||||
size_t:j
|
||||
socklen_t:j
|
||||
ssize_t:i
|
||||
suseconds_t:l
|
||||
time_t:l
|
||||
u_char:h
|
||||
uid_t:j
|
||||
uint:j
|
||||
u_int:j
|
||||
u_int16_t:t
|
||||
u_int32_t:j
|
||||
u_int64_t:y
|
||||
u_int8_t:h
|
||||
ulong:m
|
||||
u_long:m
|
||||
u_quad_t:y
|
||||
useconds_t:j
|
||||
ushort:t
|
||||
u_short:t
|
67
ports/data/c++-types-m68k-linux-gnu.data
Normal file
67
ports/data/c++-types-m68k-linux-gnu.data
Normal file
@ -0,0 +1,67 @@
|
||||
blkcnt64_t:x
|
||||
blkcnt_t:l
|
||||
blksize_t:l
|
||||
caddr_t:Pc
|
||||
clockid_t:i
|
||||
clock_t:l
|
||||
daddr_t:i
|
||||
dev_t:y
|
||||
fd_mask:l
|
||||
fsblkcnt64_t:y
|
||||
fsblkcnt_t:m
|
||||
fsfilcnt64_t:y
|
||||
fsfilcnt_t:m
|
||||
fsid_t:8__fsid_t
|
||||
gid_t:j
|
||||
id_t:j
|
||||
ino64_t:y
|
||||
ino_t:m
|
||||
int16_t:s
|
||||
int32_t:i
|
||||
int64_t:x
|
||||
int8_t:a
|
||||
intptr_t:i
|
||||
key_t:i
|
||||
loff_t:x
|
||||
mode_t:j
|
||||
nlink_t:j
|
||||
off64_t:x
|
||||
off_t:l
|
||||
pid_t:i
|
||||
pthread_attr_t:14pthread_attr_t
|
||||
pthread_barrier_t:17pthread_barrier_t
|
||||
pthread_barrierattr_t:21pthread_barrierattr_t
|
||||
pthread_cond_t:14pthread_cond_t
|
||||
pthread_condattr_t:18pthread_condattr_t
|
||||
pthread_key_t:j
|
||||
pthread_mutex_t:15pthread_mutex_t
|
||||
pthread_mutexattr_t:19pthread_mutexattr_t
|
||||
pthread_once_t:i
|
||||
pthread_rwlock_t:16pthread_rwlock_t
|
||||
pthread_rwlockattr_t:20pthread_rwlockattr_t
|
||||
pthread_spinlock_t:i
|
||||
pthread_t:m
|
||||
quad_t:x
|
||||
register_t:i
|
||||
rlim64_t:y
|
||||
rlim_t:m
|
||||
sigset_t:10__sigset_t
|
||||
size_t:j
|
||||
socklen_t:j
|
||||
ssize_t:i
|
||||
suseconds_t:l
|
||||
time_t:l
|
||||
u_char:h
|
||||
uid_t:j
|
||||
uint:j
|
||||
u_int:j
|
||||
u_int16_t:t
|
||||
u_int32_t:j
|
||||
u_int64_t:y
|
||||
u_int8_t:h
|
||||
ulong:m
|
||||
u_long:m
|
||||
u_quad_t:y
|
||||
useconds_t:j
|
||||
ushort:t
|
||||
u_short:t
|
67
ports/data/c++-types-powerpcsoft-linux-gnu.data
Normal file
67
ports/data/c++-types-powerpcsoft-linux-gnu.data
Normal file
@ -0,0 +1,67 @@
|
||||
blkcnt64_t:x
|
||||
blkcnt_t:l
|
||||
blksize_t:l
|
||||
caddr_t:Pc
|
||||
clockid_t:i
|
||||
clock_t:l
|
||||
daddr_t:i
|
||||
dev_t:y
|
||||
fd_mask:l
|
||||
fsblkcnt64_t:y
|
||||
fsblkcnt_t:m
|
||||
fsfilcnt64_t:y
|
||||
fsfilcnt_t:m
|
||||
fsid_t:8__fsid_t
|
||||
gid_t:j
|
||||
id_t:j
|
||||
ino64_t:y
|
||||
ino_t:m
|
||||
int16_t:s
|
||||
int32_t:i
|
||||
int64_t:x
|
||||
int8_t:a
|
||||
intptr_t:i
|
||||
key_t:i
|
||||
loff_t:x
|
||||
mode_t:j
|
||||
nlink_t:j
|
||||
off64_t:x
|
||||
off_t:l
|
||||
pid_t:i
|
||||
pthread_attr_t:14pthread_attr_t
|
||||
pthread_barrier_t:17pthread_barrier_t
|
||||
pthread_barrierattr_t:21pthread_barrierattr_t
|
||||
pthread_cond_t:14pthread_cond_t
|
||||
pthread_condattr_t:18pthread_condattr_t
|
||||
pthread_key_t:j
|
||||
pthread_mutex_t:15pthread_mutex_t
|
||||
pthread_mutexattr_t:19pthread_mutexattr_t
|
||||
pthread_once_t:i
|
||||
pthread_rwlock_t:16pthread_rwlock_t
|
||||
pthread_rwlockattr_t:20pthread_rwlockattr_t
|
||||
pthread_spinlock_t:i
|
||||
pthread_t:m
|
||||
quad_t:x
|
||||
register_t:i
|
||||
rlim64_t:y
|
||||
rlim_t:m
|
||||
sigset_t:10__sigset_t
|
||||
size_t:j
|
||||
socklen_t:j
|
||||
ssize_t:i
|
||||
suseconds_t:l
|
||||
time_t:l
|
||||
u_char:h
|
||||
uid_t:j
|
||||
uint:j
|
||||
u_int:j
|
||||
u_int16_t:t
|
||||
u_int32_t:j
|
||||
u_int64_t:y
|
||||
u_int8_t:h
|
||||
ulong:m
|
||||
u_long:m
|
||||
u_quad_t:y
|
||||
useconds_t:j
|
||||
ushort:t
|
||||
u_short:t
|
67
ports/data/c++-types-tilegx-linux-gnu.data
Normal file
67
ports/data/c++-types-tilegx-linux-gnu.data
Normal file
@ -0,0 +1,67 @@
|
||||
blkcnt64_t:l
|
||||
blkcnt_t:l
|
||||
blksize_t:i
|
||||
caddr_t:Pc
|
||||
clockid_t:i
|
||||
clock_t:l
|
||||
daddr_t:i
|
||||
dev_t:m
|
||||
fd_mask:l
|
||||
fsblkcnt64_t:m
|
||||
fsblkcnt_t:m
|
||||
fsfilcnt64_t:m
|
||||
fsfilcnt_t:m
|
||||
fsid_t:8__fsid_t
|
||||
gid_t:j
|
||||
id_t:j
|
||||
ino64_t:m
|
||||
ino_t:m
|
||||
int16_t:s
|
||||
int32_t:i
|
||||
int64_t:l
|
||||
int8_t:a
|
||||
intptr_t:l
|
||||
key_t:i
|
||||
loff_t:l
|
||||
mode_t:j
|
||||
nlink_t:j
|
||||
off64_t:l
|
||||
off_t:l
|
||||
pid_t:i
|
||||
pthread_attr_t:14pthread_attr_t
|
||||
pthread_barrier_t:17pthread_barrier_t
|
||||
pthread_barrierattr_t:21pthread_barrierattr_t
|
||||
pthread_cond_t:14pthread_cond_t
|
||||
pthread_condattr_t:18pthread_condattr_t
|
||||
pthread_key_t:j
|
||||
pthread_mutex_t:15pthread_mutex_t
|
||||
pthread_mutexattr_t:19pthread_mutexattr_t
|
||||
pthread_once_t:i
|
||||
pthread_rwlock_t:16pthread_rwlock_t
|
||||
pthread_rwlockattr_t:20pthread_rwlockattr_t
|
||||
pthread_spinlock_t:i
|
||||
pthread_t:m
|
||||
quad_t:l
|
||||
register_t:l
|
||||
rlim64_t:m
|
||||
rlim_t:m
|
||||
sigset_t:10__sigset_t
|
||||
size_t:m
|
||||
socklen_t:j
|
||||
ssize_t:l
|
||||
suseconds_t:l
|
||||
time_t:l
|
||||
u_char:h
|
||||
uid_t:j
|
||||
uint:j
|
||||
u_int:j
|
||||
u_int16_t:t
|
||||
u_int32_t:j
|
||||
u_int64_t:m
|
||||
u_int8_t:h
|
||||
ulong:m
|
||||
u_long:m
|
||||
u_quad_t:m
|
||||
useconds_t:j
|
||||
ushort:t
|
||||
u_short:t
|
67
ports/data/c++-types-tilepro-linux-gnu.data
Normal file
67
ports/data/c++-types-tilepro-linux-gnu.data
Normal file
@ -0,0 +1,67 @@
|
||||
blkcnt64_t:x
|
||||
blkcnt_t:l
|
||||
blksize_t:i
|
||||
caddr_t:Pc
|
||||
clockid_t:i
|
||||
clock_t:l
|
||||
daddr_t:i
|
||||
dev_t:y
|
||||
fd_mask:l
|
||||
fsblkcnt64_t:y
|
||||
fsblkcnt_t:m
|
||||
fsfilcnt64_t:y
|
||||
fsfilcnt_t:m
|
||||
fsid_t:8__fsid_t
|
||||
gid_t:j
|
||||
id_t:j
|
||||
ino64_t:y
|
||||
ino_t:m
|
||||
int16_t:s
|
||||
int32_t:i
|
||||
int64_t:x
|
||||
int8_t:a
|
||||
intptr_t:i
|
||||
key_t:i
|
||||
loff_t:x
|
||||
mode_t:j
|
||||
nlink_t:j
|
||||
off64_t:x
|
||||
off_t:l
|
||||
pid_t:i
|
||||
pthread_attr_t:14pthread_attr_t
|
||||
pthread_barrier_t:17pthread_barrier_t
|
||||
pthread_barrierattr_t:21pthread_barrierattr_t
|
||||
pthread_cond_t:14pthread_cond_t
|
||||
pthread_condattr_t:18pthread_condattr_t
|
||||
pthread_key_t:j
|
||||
pthread_mutex_t:15pthread_mutex_t
|
||||
pthread_mutexattr_t:19pthread_mutexattr_t
|
||||
pthread_once_t:i
|
||||
pthread_rwlock_t:16pthread_rwlock_t
|
||||
pthread_rwlockattr_t:20pthread_rwlockattr_t
|
||||
pthread_spinlock_t:i
|
||||
pthread_t:m
|
||||
quad_t:x
|
||||
register_t:i
|
||||
rlim64_t:y
|
||||
rlim_t:m
|
||||
sigset_t:10__sigset_t
|
||||
size_t:j
|
||||
socklen_t:j
|
||||
ssize_t:i
|
||||
suseconds_t:l
|
||||
time_t:l
|
||||
u_char:h
|
||||
uid_t:j
|
||||
uint:j
|
||||
u_int:j
|
||||
u_int16_t:t
|
||||
u_int32_t:j
|
||||
u_int64_t:y
|
||||
u_int8_t:h
|
||||
ulong:m
|
||||
u_long:m
|
||||
u_quad_t:y
|
||||
useconds_t:j
|
||||
ushort:t
|
||||
u_short:t
|
20
ports/data/localplt-alpha-linux-gnu.data
Normal file
20
ports/data/localplt-alpha-linux-gnu.data
Normal file
@ -0,0 +1,20 @@
|
||||
libc.so: _OtsAddX ?
|
||||
libc.so: _OtsConvertFloatXT ?
|
||||
libc.so: _OtsCvtQX ?
|
||||
libc.so: _OtsDivX ?
|
||||
libc.so: _OtsEqlX ?
|
||||
libc.so: _OtsGeqX ?
|
||||
libc.so: _OtsLssX ?
|
||||
libc.so: _OtsMulX ?
|
||||
libc.so: _OtsNeqX ?
|
||||
libc.so: _OtsSubX ?
|
||||
libc.so: _Unwind_Find_FDE
|
||||
libc.so: calloc ?
|
||||
libc.so: free ?
|
||||
libc.so: malloc ?
|
||||
libc.so: memalign ?
|
||||
libc.so: realloc ?
|
||||
libm.so: matherr
|
||||
# We used to offer inline functions that used this, so it must be exported.
|
||||
# Ought to reorg things such that carg isn't thus forced to use a plt.
|
||||
libm.so: __atan2
|
13
ports/data/localplt-arm-linux-gnueabi.data
Normal file
13
ports/data/localplt-arm-linux-gnueabi.data
Normal file
@ -0,0 +1,13 @@
|
||||
libc.so: __signbit
|
||||
libc.so: calloc
|
||||
libc.so: free
|
||||
libc.so: fscanf
|
||||
libc.so: malloc
|
||||
libc.so: memalign
|
||||
libc.so: raise
|
||||
libc.so: realloc
|
||||
libm.so: __signbit
|
||||
libm.so: __signbitf
|
||||
libm.so: matherr
|
||||
libpthread.so: __errno_location
|
||||
libpthread.so: raise
|
8
ports/data/localplt-ia64-linux-gnu.data
Normal file
8
ports/data/localplt-ia64-linux-gnu.data
Normal file
@ -0,0 +1,8 @@
|
||||
libc.so: calloc
|
||||
libc.so: free
|
||||
libc.so: malloc
|
||||
libc.so: memalign
|
||||
libc.so: realloc
|
||||
libm.so: matherr
|
||||
libm.so: matherrf
|
||||
libm.so: matherrl
|
8
ports/data/localplt-m68k-linux-gnu.data
Normal file
8
ports/data/localplt-m68k-linux-gnu.data
Normal file
@ -0,0 +1,8 @@
|
||||
libc.so: _Unwind_Find_FDE
|
||||
libc.so: __m68k_read_tp
|
||||
libc.so: calloc
|
||||
libc.so: free
|
||||
libc.so: malloc
|
||||
libc.so: memalign
|
||||
libc.so: realloc
|
||||
libm.so: matherr
|
41
ports/data/localplt-powerpcsoft-linux-gnu.data
Normal file
41
ports/data/localplt-powerpcsoft-linux-gnu.data
Normal file
@ -0,0 +1,41 @@
|
||||
libc.so: _Unwind_Find_FDE
|
||||
libc.so: __adddf3 ?
|
||||
libc.so: __addsf3 ?
|
||||
libc.so: __divdf3 ?
|
||||
libc.so: __divsf3 ?
|
||||
libc.so: __eqdf2 ?
|
||||
libc.so: __eqsf2 ?
|
||||
libc.so: __extendsfdf2 ?
|
||||
libc.so: __fixdfsi ?
|
||||
libc.so: __fixsfsi ?
|
||||
libc.so: __fixunsdfsi ?
|
||||
libc.so: __floatsidf ?
|
||||
libc.so: __floatsisf ?
|
||||
libc.so: __floatunsidf ?
|
||||
libc.so: __floatunsisf ?
|
||||
libc.so: __gedf2 ?
|
||||
libc.so: __gtdf2 ?
|
||||
libc.so: __ledf2 ?
|
||||
libc.so: __ltdf2 ?
|
||||
libc.so: __muldf3 ?
|
||||
libc.so: __mulsf3 ?
|
||||
libc.so: __nedf2 ?
|
||||
libc.so: __signbit
|
||||
libc.so: __signbitl
|
||||
libc.so: __subdf3 ?
|
||||
libc.so: __subsf3 ?
|
||||
libc.so: __truncdfsf2 ?
|
||||
libc.so: __unorddf2 ?
|
||||
libc.so: abort ?
|
||||
libc.so: calloc
|
||||
libc.so: free
|
||||
libc.so: malloc
|
||||
libc.so: memalign
|
||||
libc.so: realloc
|
||||
libm.so: __signbit
|
||||
libm.so: __signbitf
|
||||
libm.so: __signbitl
|
||||
libm.so: copysignl
|
||||
libm.so: fabsl
|
||||
libm.so: fegetround
|
||||
libm.so: matherr
|
7
ports/sysdeps/alpha/Implies
Normal file
7
ports/sysdeps/alpha/Implies
Normal file
@ -0,0 +1,7 @@
|
||||
wordsize-64
|
||||
# Alpha uses IEEE 754 single, double and quad precision floating point.
|
||||
ieee754/ldbl-128
|
||||
ieee754/dbl-64/wordsize-64
|
||||
ieee754/dbl-64
|
||||
ieee754/flt-32
|
||||
alpha/soft-fp
|
55
ports/sysdeps/alpha/Makefile
Normal file
55
ports/sysdeps/alpha/Makefile
Normal file
@ -0,0 +1,55 @@
|
||||
# Copyright (C) 1993, 94, 95, 96, 97, 99 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
# Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
# The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
# The GNU C Library 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 the GNU C Library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
ifeq ($(subdir),db2)
|
||||
CPPFLAGS += -DHAVE_SPINLOCKS=1 -DHAVE_ASSEM_ALPHA=1
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),gmon)
|
||||
sysdep_routines += _mcount
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),gnulib)
|
||||
sysdep_routines += divl divlu divq divqu reml remlu remq remqu
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),string)
|
||||
sysdep_routines += stxcpy stxncpy
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
# The ld.so startup code cannot use literals until it self-relocates.
|
||||
CFLAGS-rtld.c = -mbuild-constants
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),math)
|
||||
# The fma routines rely on inexact being raised for correct results.
|
||||
CFLAGS-s_fma.c = -mieee-with-inexact
|
||||
CFLAGS-s_fmaf.c = -mieee-with-inexact
|
||||
# This test tries to check for inexact being raised by arithmetic.
|
||||
CFLAGS-test-misc.c += -mieee-with-inexact
|
||||
endif
|
||||
|
||||
# Build everything with full IEEE math support, and with dynamic rounding;
|
||||
# there are a number of math routines that are defined to work with the
|
||||
# "current" rounding mode, and it's easiest to set this with all of them.
|
||||
sysdep-CFLAGS += -mieee -mfp-rounding-mode=d
|
||||
|
||||
# libc.so requires about 16k for the small data area, which is well
|
||||
# below the 64k maximum.
|
||||
pic-ccflag = -fpic
|
1
ports/sysdeps/alpha/Subdirs
Normal file
1
ports/sysdeps/alpha/Subdirs
Normal file
@ -0,0 +1 @@
|
||||
soft-fp
|
13
ports/sysdeps/alpha/Versions
Normal file
13
ports/sysdeps/alpha/Versions
Normal file
@ -0,0 +1,13 @@
|
||||
libc {
|
||||
GLIBC_2.0 {
|
||||
# functions with special/multiple interfaces
|
||||
__divqu; __remqu; __divqs; __remqs; __divlu; __remlu; __divls;
|
||||
__remls; __divl; __reml; __divq; __remq; __divqu; __remqu;
|
||||
}
|
||||
}
|
||||
libm {
|
||||
GLIBC_2.0 {
|
||||
# used in inline functions.
|
||||
__atan2;
|
||||
}
|
||||
}
|
63
ports/sysdeps/alpha/__longjmp.S
Normal file
63
ports/sysdeps/alpha/__longjmp.S
Normal file
@ -0,0 +1,63 @@
|
||||
/* Copyright (C) 1992, 1994, 1997, 2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define __ASSEMBLY__
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <jmpbuf-offsets.h>
|
||||
|
||||
|
||||
ENTRY(__longjmp)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
mov a1, v0
|
||||
ldq s0, JB_S0*8(a0)
|
||||
ldq s1, JB_S1*8(a0)
|
||||
ldq s2, JB_S2*8(a0)
|
||||
ldq s3, JB_S3*8(a0)
|
||||
ldq s4, JB_S4*8(a0)
|
||||
ldq s5, JB_S5*8(a0)
|
||||
ldq ra, JB_PC*8(a0)
|
||||
ldq fp, JB_FP*8(a0)
|
||||
ldq t0, JB_SP*8(a0)
|
||||
ldt $f2, JB_F2*8(a0)
|
||||
ldt $f3, JB_F3*8(a0)
|
||||
ldt $f4, JB_F4*8(a0)
|
||||
ldt $f5, JB_F5*8(a0)
|
||||
ldt $f6, JB_F6*8(a0)
|
||||
ldt $f7, JB_F7*8(a0)
|
||||
ldt $f8, JB_F8*8(a0)
|
||||
ldt $f9, JB_F9*8(a0)
|
||||
#ifdef PTR_DEMANGLE
|
||||
PTR_DEMANGLE(ra, t1)
|
||||
PTR_DEMANGLE2(t0, t1)
|
||||
PTR_DEMANGLE2(fp, t1)
|
||||
#endif
|
||||
cmoveq v0, 1, v0
|
||||
mov t0, sp
|
||||
ret
|
||||
|
||||
END(__longjmp)
|
105
ports/sysdeps/alpha/_mcount.S
Normal file
105
ports/sysdeps/alpha/_mcount.S
Normal file
@ -0,0 +1,105 @@
|
||||
/* Machine-specific calling sequence for `mcount' profiling function. alpha
|
||||
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger (davidm@cs.arizona.edu).
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Assembly stub to invoke _mcount(). Compiler generated code calls
|
||||
this stub after executing a function's prologue and without saving any
|
||||
registers. It is therefore necessary to preserve a0..a5 as they may
|
||||
contain function arguments. To work correctly with frame- less
|
||||
functions, it is also necessary to preserve ra. Finally, division
|
||||
routines are invoked with a special calling convention and the
|
||||
compiler treats those calls as if they were instructions. In
|
||||
particular, it doesn't save any of the temporary registers (caller
|
||||
saved registers). It is therefore necessary to preserve all
|
||||
caller-saved registers as well.
|
||||
|
||||
Upon entering _mcount, register $at holds the return address and ra
|
||||
holds the return address of the function's caller (selfpc and frompc,
|
||||
respectively in gmon.c language...). */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.set noat
|
||||
.set noreorder
|
||||
|
||||
LEAF(_mcount, 0xb0)
|
||||
subq sp, 0xb0, sp
|
||||
.prologue 0
|
||||
stq a0, 0x00(sp)
|
||||
mov ra, a0 # a0 = caller-pc
|
||||
stq a1, 0x08(sp)
|
||||
mov $at, a1 # a1 = self-pc
|
||||
stq $at, 0x10(sp)
|
||||
|
||||
stq a2, 0x18(sp)
|
||||
stq a3, 0x20(sp)
|
||||
stq a4, 0x28(sp)
|
||||
stq a5, 0x30(sp)
|
||||
stq ra, 0x38(sp)
|
||||
stq gp, 0x40(sp)
|
||||
|
||||
br gp, 1f
|
||||
1: ldgp gp, 0(gp)
|
||||
|
||||
stq t0, 0x48(sp)
|
||||
stq t1, 0x50(sp)
|
||||
stq t2, 0x58(sp)
|
||||
stq t3, 0x60(sp)
|
||||
stq t4, 0x68(sp)
|
||||
stq t5, 0x70(sp)
|
||||
stq t6, 0x78(sp)
|
||||
|
||||
stq t7, 0x80(sp)
|
||||
stq t8, 0x88(sp)
|
||||
stq t9, 0x90(sp)
|
||||
stq t10, 0x98(sp)
|
||||
stq t11, 0xa0(sp)
|
||||
stq v0, 0xa8(sp)
|
||||
|
||||
jsr ra, __mcount
|
||||
|
||||
ldq a0, 0x00(sp)
|
||||
ldq a1, 0x08(sp)
|
||||
ldq $at, 0x10(sp) # restore self-pc
|
||||
ldq a2, 0x18(sp)
|
||||
ldq a3, 0x20(sp)
|
||||
ldq a4, 0x28(sp)
|
||||
ldq a5, 0x30(sp)
|
||||
ldq ra, 0x38(sp)
|
||||
ldq gp, 0x40(sp)
|
||||
mov $at, pv # make pv point to return address
|
||||
ldq t0, 0x48(sp) # this is important under OSF/1 to
|
||||
ldq t1, 0x50(sp) # ensure that the code that we return
|
||||
ldq t2, 0x58(sp) # can correctly compute its gp
|
||||
ldq t3, 0x60(sp)
|
||||
ldq t4, 0x68(sp)
|
||||
ldq t5, 0x70(sp)
|
||||
ldq t6, 0x78(sp)
|
||||
ldq t7, 0x80(sp)
|
||||
ldq t8, 0x88(sp)
|
||||
ldq t9, 0x90(sp)
|
||||
ldq t10, 0x98(sp)
|
||||
ldq t11, 0xa0(sp)
|
||||
ldq v0, 0xa8(sp)
|
||||
|
||||
addq sp, 0xb0, sp
|
||||
ret zero,($at),1
|
||||
|
||||
END(_mcount)
|
||||
|
||||
weak_alias (_mcount, mcount)
|
118
ports/sysdeps/alpha/add_n.S
Normal file
118
ports/sysdeps/alpha/add_n.S
Normal file
@ -0,0 +1,118 @@
|
||||
# Alpha __mpn_add_n -- Add two limb vectors of the same length > 0 and
|
||||
# store sum in a third limb vector.
|
||||
|
||||
# Copyright (C) 1995 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of the GNU MP Library.
|
||||
|
||||
# The GNU MP Library 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 of the License, or (at your
|
||||
# option) any later version.
|
||||
|
||||
# The GNU MP Library 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 the GNU MP Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# INPUT PARAMETERS
|
||||
# res_ptr $16
|
||||
# s1_ptr $17
|
||||
# s2_ptr $18
|
||||
# size $19
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.text
|
||||
.align 3
|
||||
.globl __mpn_add_n
|
||||
.ent __mpn_add_n
|
||||
__mpn_add_n:
|
||||
.frame $30,0,$26,0
|
||||
|
||||
ldq $3,0($17)
|
||||
ldq $4,0($18)
|
||||
|
||||
subq $19,1,$19
|
||||
and $19,4-1,$2 # number of limbs in first loop
|
||||
bis $31,$31,$0
|
||||
beq $2,.L0 # if multiple of 4 limbs, skip first loop
|
||||
|
||||
subq $19,$2,$19
|
||||
|
||||
.Loop0: subq $2,1,$2
|
||||
ldq $5,8($17)
|
||||
addq $4,$0,$4
|
||||
ldq $6,8($18)
|
||||
cmpult $4,$0,$1
|
||||
addq $3,$4,$4
|
||||
cmpult $4,$3,$0
|
||||
stq $4,0($16)
|
||||
or $0,$1,$0
|
||||
|
||||
addq $17,8,$17
|
||||
addq $18,8,$18
|
||||
bis $5,$5,$3
|
||||
bis $6,$6,$4
|
||||
addq $16,8,$16
|
||||
bne $2,.Loop0
|
||||
|
||||
.L0: beq $19,.Lend
|
||||
|
||||
.align 3
|
||||
.Loop: subq $19,4,$19
|
||||
|
||||
ldq $5,8($17)
|
||||
addq $4,$0,$4
|
||||
ldq $6,8($18)
|
||||
cmpult $4,$0,$1
|
||||
addq $3,$4,$4
|
||||
cmpult $4,$3,$0
|
||||
stq $4,0($16)
|
||||
or $0,$1,$0
|
||||
|
||||
ldq $3,16($17)
|
||||
addq $6,$0,$6
|
||||
ldq $4,16($18)
|
||||
cmpult $6,$0,$1
|
||||
addq $5,$6,$6
|
||||
cmpult $6,$5,$0
|
||||
stq $6,8($16)
|
||||
or $0,$1,$0
|
||||
|
||||
ldq $5,24($17)
|
||||
addq $4,$0,$4
|
||||
ldq $6,24($18)
|
||||
cmpult $4,$0,$1
|
||||
addq $3,$4,$4
|
||||
cmpult $4,$3,$0
|
||||
stq $4,16($16)
|
||||
or $0,$1,$0
|
||||
|
||||
ldq $3,32($17)
|
||||
addq $6,$0,$6
|
||||
ldq $4,32($18)
|
||||
cmpult $6,$0,$1
|
||||
addq $5,$6,$6
|
||||
cmpult $6,$5,$0
|
||||
stq $6,24($16)
|
||||
or $0,$1,$0
|
||||
|
||||
addq $17,32,$17
|
||||
addq $18,32,$18
|
||||
addq $16,32,$16
|
||||
bne $19,.Loop
|
||||
|
||||
.Lend: addq $4,$0,$4
|
||||
cmpult $4,$0,$1
|
||||
addq $3,$4,$4
|
||||
cmpult $4,$3,$0
|
||||
stq $4,0($16)
|
||||
or $0,$1,$0
|
||||
ret $31,($26),1
|
||||
|
||||
.end __mpn_add_n
|
90
ports/sysdeps/alpha/addmul_1.S
Normal file
90
ports/sysdeps/alpha/addmul_1.S
Normal file
@ -0,0 +1,90 @@
|
||||
# Alpha 21064 __mpn_addmul_1 -- Multiply a limb vector with a limb and add
|
||||
# the result to a second limb vector.
|
||||
|
||||
# Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of the GNU MP Library.
|
||||
|
||||
# The GNU MP Library 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 of the License, or (at your
|
||||
# option) any later version.
|
||||
|
||||
# The GNU MP Library 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 the GNU MP Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# INPUT PARAMETERS
|
||||
# res_ptr r16
|
||||
# s1_ptr r17
|
||||
# size r18
|
||||
# s2_limb r19
|
||||
|
||||
# This code runs at 42 cycles/limb on EV4 and 18 cycles/limb on EV5.
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.text
|
||||
.align 3
|
||||
.globl __mpn_addmul_1
|
||||
.ent __mpn_addmul_1 2
|
||||
__mpn_addmul_1:
|
||||
.frame $30,0,$26
|
||||
|
||||
ldq $2,0($17) # $2 = s1_limb
|
||||
addq $17,8,$17 # s1_ptr++
|
||||
subq $18,1,$18 # size--
|
||||
mulq $2,$19,$3 # $3 = prod_low
|
||||
ldq $5,0($16) # $5 = *res_ptr
|
||||
umulh $2,$19,$0 # $0 = prod_high
|
||||
beq $18,.Lend1 # jump if size was == 1
|
||||
ldq $2,0($17) # $2 = s1_limb
|
||||
addq $17,8,$17 # s1_ptr++
|
||||
subq $18,1,$18 # size--
|
||||
addq $5,$3,$3
|
||||
cmpult $3,$5,$4
|
||||
stq $3,0($16)
|
||||
addq $16,8,$16 # res_ptr++
|
||||
beq $18,.Lend2 # jump if size was == 2
|
||||
|
||||
.align 3
|
||||
.Loop: mulq $2,$19,$3 # $3 = prod_low
|
||||
ldq $5,0($16) # $5 = *res_ptr
|
||||
addq $4,$0,$0 # cy_limb = cy_limb + 'cy'
|
||||
subq $18,1,$18 # size--
|
||||
umulh $2,$19,$4 # $4 = cy_limb
|
||||
ldq $2,0($17) # $2 = s1_limb
|
||||
addq $17,8,$17 # s1_ptr++
|
||||
addq $3,$0,$3 # $3 = cy_limb + prod_low
|
||||
cmpult $3,$0,$0 # $0 = carry from (cy_limb + prod_low)
|
||||
addq $5,$3,$3
|
||||
cmpult $3,$5,$5
|
||||
stq $3,0($16)
|
||||
addq $16,8,$16 # res_ptr++
|
||||
addq $5,$0,$0 # combine carries
|
||||
bne $18,.Loop
|
||||
|
||||
.Lend2: mulq $2,$19,$3 # $3 = prod_low
|
||||
ldq $5,0($16) # $5 = *res_ptr
|
||||
addq $4,$0,$0 # cy_limb = cy_limb + 'cy'
|
||||
umulh $2,$19,$4 # $4 = cy_limb
|
||||
addq $3,$0,$3 # $3 = cy_limb + prod_low
|
||||
cmpult $3,$0,$0 # $0 = carry from (cy_limb + prod_low)
|
||||
addq $5,$3,$3
|
||||
cmpult $3,$5,$5
|
||||
stq $3,0($16)
|
||||
addq $5,$0,$0 # combine carries
|
||||
addq $4,$0,$0 # cy_limb = prod_high + cy
|
||||
ret $31,($26),1
|
||||
.Lend1: addq $5,$3,$3
|
||||
cmpult $3,$5,$5
|
||||
stq $3,0($16)
|
||||
addq $0,$5,$0
|
||||
ret $31,($26),1
|
||||
|
||||
.end __mpn_addmul_1
|
146
ports/sysdeps/alpha/alphaev5/add_n.S
Normal file
146
ports/sysdeps/alpha/alphaev5/add_n.S
Normal file
@ -0,0 +1,146 @@
|
||||
# Alpha __mpn_add_n -- Add two limb vectors of the same length > 0 and
|
||||
# store sum in a third limb vector.
|
||||
|
||||
# Copyright (C) 1995 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of the GNU MP Library.
|
||||
|
||||
# The GNU MP Library 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 of the License, or (at your
|
||||
# option) any later version.
|
||||
|
||||
# The GNU MP Library 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 the GNU MP Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# INPUT PARAMETERS
|
||||
# res_ptr $16
|
||||
# s1_ptr $17
|
||||
# s2_ptr $18
|
||||
# size $19
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.text
|
||||
.align 3
|
||||
.globl __mpn_add_n
|
||||
.ent __mpn_add_n
|
||||
__mpn_add_n:
|
||||
.frame $30,0,$26,0
|
||||
|
||||
or $31,$31,$25 # clear cy
|
||||
subq $19,4,$19 # decr loop cnt
|
||||
blt $19,.Lend2 # if less than 4 limbs, goto 2nd loop
|
||||
# Start software pipeline for 1st loop
|
||||
ldq $0,0($18)
|
||||
ldq $1,8($18)
|
||||
ldq $4,0($17)
|
||||
ldq $5,8($17)
|
||||
addq $17,32,$17 # update s1_ptr
|
||||
ldq $2,16($18)
|
||||
addq $0,$4,$20 # 1st main add
|
||||
ldq $3,24($18)
|
||||
subq $19,4,$19 # decr loop cnt
|
||||
ldq $6,-16($17)
|
||||
cmpult $20,$0,$25 # compute cy from last add
|
||||
ldq $7,-8($17)
|
||||
addq $1,$25,$28 # cy add
|
||||
addq $18,32,$18 # update s2_ptr
|
||||
addq $5,$28,$21 # 2nd main add
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
blt $19,.Lend1 # if less than 4 limbs remain, jump
|
||||
# 1st loop handles groups of 4 limbs in a software pipeline
|
||||
.align 4
|
||||
.Loop: cmpult $21,$28,$25 # compute cy from last add
|
||||
ldq $0,0($18)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
ldq $1,8($18)
|
||||
addq $2,$25,$28 # cy add
|
||||
ldq $4,0($17)
|
||||
addq $28,$6,$22 # 3rd main add
|
||||
ldq $5,8($17)
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $22,$28,$25 # compute cy from last add
|
||||
stq $20,0($16)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
stq $21,8($16)
|
||||
addq $3,$25,$28 # cy add
|
||||
addq $28,$7,$23 # 4th main add
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $23,$28,$25 # compute cy from last add
|
||||
addq $17,32,$17 # update s1_ptr
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
addq $16,32,$16 # update res_ptr
|
||||
addq $0,$25,$28 # cy add
|
||||
ldq $2,16($18)
|
||||
addq $4,$28,$20 # 1st main add
|
||||
ldq $3,24($18)
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
ldq $6,-16($17)
|
||||
cmpult $20,$28,$25 # compute cy from last add
|
||||
ldq $7,-8($17)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
subq $19,4,$19 # decr loop cnt
|
||||
stq $22,-16($16)
|
||||
addq $1,$25,$28 # cy add
|
||||
stq $23,-8($16)
|
||||
addq $5,$28,$21 # 2nd main add
|
||||
addq $18,32,$18 # update s2_ptr
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
bge $19,.Loop
|
||||
# Finish software pipeline for 1st loop
|
||||
.Lend1: cmpult $21,$28,$25 # compute cy from last add
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
addq $2,$25,$28 # cy add
|
||||
addq $28,$6,$22 # 3rd main add
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $22,$28,$25 # compute cy from last add
|
||||
stq $20,0($16)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
stq $21,8($16)
|
||||
addq $3,$25,$28 # cy add
|
||||
addq $28,$7,$23 # 4th main add
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $23,$28,$25 # compute cy from last add
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
addq $16,32,$16 # update res_ptr
|
||||
stq $22,-16($16)
|
||||
stq $23,-8($16)
|
||||
.Lend2: addq $19,4,$19 # restore loop cnt
|
||||
beq $19,.Lret
|
||||
# Start software pipeline for 2nd loop
|
||||
ldq $0,0($18)
|
||||
ldq $4,0($17)
|
||||
subq $19,1,$19
|
||||
beq $19,.Lend0
|
||||
# 2nd loop handles remaining 1-3 limbs
|
||||
.align 4
|
||||
.Loop0: addq $0,$25,$28 # cy add
|
||||
ldq $0,8($18)
|
||||
addq $4,$28,$20 # main add
|
||||
ldq $4,8($17)
|
||||
addq $18,8,$18
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
addq $17,8,$17
|
||||
stq $20,0($16)
|
||||
cmpult $20,$28,$25 # compute cy from last add
|
||||
subq $19,1,$19 # decr loop cnt
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
addq $16,8,$16
|
||||
bne $19,.Loop0
|
||||
.Lend0: addq $0,$25,$28 # cy add
|
||||
addq $4,$28,$20 # main add
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $20,$28,$25 # compute cy from last add
|
||||
stq $20,0($16)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
|
||||
.Lret: or $25,$31,$0 # return cy
|
||||
ret $31,($26),1
|
||||
.end __mpn_add_n
|
172
ports/sysdeps/alpha/alphaev5/lshift.S
Normal file
172
ports/sysdeps/alpha/alphaev5/lshift.S
Normal file
@ -0,0 +1,172 @@
|
||||
# Alpha EV5 __mpn_lshift --
|
||||
|
||||
# Copyright (C) 1994, 1995 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of the GNU MP Library.
|
||||
|
||||
# The GNU MP Library 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 of the License, or (at your
|
||||
# option) any later version.
|
||||
|
||||
# The GNU MP Library 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 the GNU MP Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# INPUT PARAMETERS
|
||||
# res_ptr r16
|
||||
# s1_ptr r17
|
||||
# size r18
|
||||
# cnt r19
|
||||
|
||||
# This code runs at 3.25 cycles/limb on the EV5.
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.text
|
||||
.align 3
|
||||
.globl __mpn_lshift
|
||||
.ent __mpn_lshift
|
||||
__mpn_lshift:
|
||||
.frame $30,0,$26,0
|
||||
|
||||
s8addq $18,$17,$17 # make r17 point at end of s1
|
||||
ldq $4,-8($17) # load first limb
|
||||
subq $31,$19,$20
|
||||
s8addq $18,$16,$16 # make r16 point at end of RES
|
||||
subq $18,1,$18
|
||||
and $18,4-1,$28 # number of limbs in first loop
|
||||
srl $4,$20,$0 # compute function result
|
||||
|
||||
beq $28,.L0
|
||||
subq $18,$28,$18
|
||||
|
||||
.align 3
|
||||
.Loop0: ldq $3,-16($17)
|
||||
subq $16,8,$16
|
||||
sll $4,$19,$5
|
||||
subq $17,8,$17
|
||||
subq $28,1,$28
|
||||
srl $3,$20,$6
|
||||
or $3,$3,$4
|
||||
or $5,$6,$8
|
||||
stq $8,0($16)
|
||||
bne $28,.Loop0
|
||||
|
||||
.L0: sll $4,$19,$24
|
||||
beq $18,.Lend
|
||||
# warm up phase 1
|
||||
ldq $1,-16($17)
|
||||
subq $18,4,$18
|
||||
ldq $2,-24($17)
|
||||
ldq $3,-32($17)
|
||||
ldq $4,-40($17)
|
||||
beq $18,.Lend1
|
||||
# warm up phase 2
|
||||
srl $1,$20,$7
|
||||
sll $1,$19,$21
|
||||
srl $2,$20,$8
|
||||
ldq $1,-48($17)
|
||||
sll $2,$19,$22
|
||||
ldq $2,-56($17)
|
||||
srl $3,$20,$5
|
||||
or $7,$24,$7
|
||||
sll $3,$19,$23
|
||||
or $8,$21,$8
|
||||
srl $4,$20,$6
|
||||
ldq $3,-64($17)
|
||||
sll $4,$19,$24
|
||||
ldq $4,-72($17)
|
||||
subq $18,4,$18
|
||||
beq $18,.Lend2
|
||||
.align 4
|
||||
# main loop
|
||||
.Loop: stq $7,-8($16)
|
||||
or $5,$22,$5
|
||||
stq $8,-16($16)
|
||||
or $6,$23,$6
|
||||
|
||||
srl $1,$20,$7
|
||||
subq $18,4,$18
|
||||
sll $1,$19,$21
|
||||
unop # ldq $31,-96($17)
|
||||
|
||||
srl $2,$20,$8
|
||||
ldq $1,-80($17)
|
||||
sll $2,$19,$22
|
||||
ldq $2,-88($17)
|
||||
|
||||
stq $5,-24($16)
|
||||
or $7,$24,$7
|
||||
stq $6,-32($16)
|
||||
or $8,$21,$8
|
||||
|
||||
srl $3,$20,$5
|
||||
unop # ldq $31,-96($17)
|
||||
sll $3,$19,$23
|
||||
subq $16,32,$16
|
||||
|
||||
srl $4,$20,$6
|
||||
ldq $3,-96($17)
|
||||
sll $4,$19,$24
|
||||
ldq $4,-104($17)
|
||||
|
||||
subq $17,32,$17
|
||||
bne $18,.Loop
|
||||
# cool down phase 2/1
|
||||
.Lend2: stq $7,-8($16)
|
||||
or $5,$22,$5
|
||||
stq $8,-16($16)
|
||||
or $6,$23,$6
|
||||
srl $1,$20,$7
|
||||
sll $1,$19,$21
|
||||
srl $2,$20,$8
|
||||
sll $2,$19,$22
|
||||
stq $5,-24($16)
|
||||
or $7,$24,$7
|
||||
stq $6,-32($16)
|
||||
or $8,$21,$8
|
||||
srl $3,$20,$5
|
||||
sll $3,$19,$23
|
||||
srl $4,$20,$6
|
||||
sll $4,$19,$24
|
||||
# cool down phase 2/2
|
||||
stq $7,-40($16)
|
||||
or $5,$22,$5
|
||||
stq $8,-48($16)
|
||||
or $6,$23,$6
|
||||
stq $5,-56($16)
|
||||
stq $6,-64($16)
|
||||
# cool down phase 2/3
|
||||
stq $24,-72($16)
|
||||
ret $31,($26),1
|
||||
|
||||
# cool down phase 1/1
|
||||
.Lend1: srl $1,$20,$7
|
||||
sll $1,$19,$21
|
||||
srl $2,$20,$8
|
||||
sll $2,$19,$22
|
||||
srl $3,$20,$5
|
||||
or $7,$24,$7
|
||||
sll $3,$19,$23
|
||||
or $8,$21,$8
|
||||
srl $4,$20,$6
|
||||
sll $4,$19,$24
|
||||
# cool down phase 1/2
|
||||
stq $7,-8($16)
|
||||
or $5,$22,$5
|
||||
stq $8,-16($16)
|
||||
or $6,$23,$6
|
||||
stq $5,-24($16)
|
||||
stq $6,-32($16)
|
||||
stq $24,-40($16)
|
||||
ret $31,($26),1
|
||||
|
||||
.Lend: stq $24,-8($16)
|
||||
ret $31,($26),1
|
||||
.end __mpn_lshift
|
170
ports/sysdeps/alpha/alphaev5/rshift.S
Normal file
170
ports/sysdeps/alpha/alphaev5/rshift.S
Normal file
@ -0,0 +1,170 @@
|
||||
# Alpha EV5 __mpn_rshift --
|
||||
|
||||
# Copyright (C) 1994, 1995 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of the GNU MP Library.
|
||||
|
||||
# The GNU MP Library 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 of the License, or (at your
|
||||
# option) any later version.
|
||||
|
||||
# The GNU MP Library 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 the GNU MP Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# INPUT PARAMETERS
|
||||
# res_ptr r16
|
||||
# s1_ptr r17
|
||||
# size r18
|
||||
# cnt r19
|
||||
|
||||
# This code runs at 3.25 cycles/limb on the EV5.
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.text
|
||||
.align 3
|
||||
.globl __mpn_rshift
|
||||
.ent __mpn_rshift
|
||||
__mpn_rshift:
|
||||
.frame $30,0,$26,0
|
||||
|
||||
ldq $4,0($17) # load first limb
|
||||
subq $31,$19,$20
|
||||
subq $18,1,$18
|
||||
and $18,4-1,$28 # number of limbs in first loop
|
||||
sll $4,$20,$0 # compute function result
|
||||
|
||||
beq $28,.L0
|
||||
subq $18,$28,$18
|
||||
|
||||
.align 3
|
||||
.Loop0: ldq $3,8($17)
|
||||
addq $16,8,$16
|
||||
srl $4,$19,$5
|
||||
addq $17,8,$17
|
||||
subq $28,1,$28
|
||||
sll $3,$20,$6
|
||||
or $3,$3,$4
|
||||
or $5,$6,$8
|
||||
stq $8,-8($16)
|
||||
bne $28,.Loop0
|
||||
|
||||
.L0: srl $4,$19,$24
|
||||
beq $18,.Lend
|
||||
# warm up phase 1
|
||||
ldq $1,8($17)
|
||||
subq $18,4,$18
|
||||
ldq $2,16($17)
|
||||
ldq $3,24($17)
|
||||
ldq $4,32($17)
|
||||
beq $18,.Lend1
|
||||
# warm up phase 2
|
||||
sll $1,$20,$7
|
||||
srl $1,$19,$21
|
||||
sll $2,$20,$8
|
||||
ldq $1,40($17)
|
||||
srl $2,$19,$22
|
||||
ldq $2,48($17)
|
||||
sll $3,$20,$5
|
||||
or $7,$24,$7
|
||||
srl $3,$19,$23
|
||||
or $8,$21,$8
|
||||
sll $4,$20,$6
|
||||
ldq $3,56($17)
|
||||
srl $4,$19,$24
|
||||
ldq $4,64($17)
|
||||
subq $18,4,$18
|
||||
beq $18,.Lend2
|
||||
.align 4
|
||||
# main loop
|
||||
.Loop: stq $7,0($16)
|
||||
or $5,$22,$5
|
||||
stq $8,8($16)
|
||||
or $6,$23,$6
|
||||
|
||||
sll $1,$20,$7
|
||||
subq $18,4,$18
|
||||
srl $1,$19,$21
|
||||
unop # ldq $31,-96($17)
|
||||
|
||||
sll $2,$20,$8
|
||||
ldq $1,72($17)
|
||||
srl $2,$19,$22
|
||||
ldq $2,80($17)
|
||||
|
||||
stq $5,16($16)
|
||||
or $7,$24,$7
|
||||
stq $6,24($16)
|
||||
or $8,$21,$8
|
||||
|
||||
sll $3,$20,$5
|
||||
unop # ldq $31,-96($17)
|
||||
srl $3,$19,$23
|
||||
addq $16,32,$16
|
||||
|
||||
sll $4,$20,$6
|
||||
ldq $3,88($17)
|
||||
srl $4,$19,$24
|
||||
ldq $4,96($17)
|
||||
|
||||
addq $17,32,$17
|
||||
bne $18,.Loop
|
||||
# cool down phase 2/1
|
||||
.Lend2: stq $7,0($16)
|
||||
or $5,$22,$5
|
||||
stq $8,8($16)
|
||||
or $6,$23,$6
|
||||
sll $1,$20,$7
|
||||
srl $1,$19,$21
|
||||
sll $2,$20,$8
|
||||
srl $2,$19,$22
|
||||
stq $5,16($16)
|
||||
or $7,$24,$7
|
||||
stq $6,24($16)
|
||||
or $8,$21,$8
|
||||
sll $3,$20,$5
|
||||
srl $3,$19,$23
|
||||
sll $4,$20,$6
|
||||
srl $4,$19,$24
|
||||
# cool down phase 2/2
|
||||
stq $7,32($16)
|
||||
or $5,$22,$5
|
||||
stq $8,40($16)
|
||||
or $6,$23,$6
|
||||
stq $5,48($16)
|
||||
stq $6,56($16)
|
||||
# cool down phase 2/3
|
||||
stq $24,64($16)
|
||||
ret $31,($26),1
|
||||
|
||||
# cool down phase 1/1
|
||||
.Lend1: sll $1,$20,$7
|
||||
srl $1,$19,$21
|
||||
sll $2,$20,$8
|
||||
srl $2,$19,$22
|
||||
sll $3,$20,$5
|
||||
or $7,$24,$7
|
||||
srl $3,$19,$23
|
||||
or $8,$21,$8
|
||||
sll $4,$20,$6
|
||||
srl $4,$19,$24
|
||||
# cool down phase 1/2
|
||||
stq $7,0($16)
|
||||
or $5,$22,$5
|
||||
stq $8,8($16)
|
||||
or $6,$23,$6
|
||||
stq $5,16($16)
|
||||
stq $6,24($16)
|
||||
stq $24,32($16)
|
||||
ret $31,($26),1
|
||||
|
||||
.Lend: stq $24,0($16)
|
||||
ret $31,($26),1
|
||||
.end __mpn_rshift
|
147
ports/sysdeps/alpha/alphaev5/sub_n.S
Normal file
147
ports/sysdeps/alpha/alphaev5/sub_n.S
Normal file
@ -0,0 +1,147 @@
|
||||
# Alpha __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
|
||||
# store difference in a third limb vector.
|
||||
|
||||
# Copyright (C) 1995 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of the GNU MP Library.
|
||||
|
||||
# The GNU MP Library 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 of the License, or (at your
|
||||
# option) any later version.
|
||||
|
||||
# The GNU MP Library 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 the GNU MP Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# INPUT PARAMETERS
|
||||
# res_ptr $16
|
||||
# s1_ptr $17
|
||||
# s2_ptr $18
|
||||
# size $19
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.text
|
||||
.align 3
|
||||
.globl __mpn_sub_n
|
||||
.ent __mpn_sub_n
|
||||
__mpn_sub_n:
|
||||
.frame $30,0,$26,0
|
||||
|
||||
or $31,$31,$25 # clear cy
|
||||
subq $19,4,$19 # decr loop cnt
|
||||
blt $19,.Lend2 # if less than 4 limbs, goto 2nd loop
|
||||
# Start software pipeline for 1st loop
|
||||
ldq $0,0($18)
|
||||
ldq $1,8($18)
|
||||
ldq $4,0($17)
|
||||
ldq $5,8($17)
|
||||
addq $17,32,$17 # update s1_ptr
|
||||
ldq $2,16($18)
|
||||
subq $4,$0,$20 # 1st main sub
|
||||
ldq $3,24($18)
|
||||
subq $19,4,$19 # decr loop cnt
|
||||
ldq $6,-16($17)
|
||||
cmpult $4,$20,$25 # compute cy from last sub
|
||||
ldq $7,-8($17)
|
||||
addq $1,$25,$28 # cy add
|
||||
addq $18,32,$18 # update s2_ptr
|
||||
subq $5,$28,$21 # 2nd main sub
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
blt $19,.Lend1 # if less than 4 limbs remain, jump
|
||||
# 1st loop handles groups of 4 limbs in a software pipeline
|
||||
.align 4
|
||||
.Loop: cmpult $5,$21,$25 # compute cy from last add
|
||||
ldq $0,0($18)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
ldq $1,8($18)
|
||||
addq $2,$25,$28 # cy add
|
||||
ldq $4,0($17)
|
||||
subq $6,$28,$22 # 3rd main sub
|
||||
ldq $5,8($17)
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $6,$22,$25 # compute cy from last add
|
||||
stq $20,0($16)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
stq $21,8($16)
|
||||
addq $3,$25,$28 # cy add
|
||||
subq $7,$28,$23 # 4th main sub
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $7,$23,$25 # compute cy from last add
|
||||
addq $17,32,$17 # update s1_ptr
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
addq $16,32,$16 # update res_ptr
|
||||
addq $0,$25,$28 # cy add
|
||||
ldq $2,16($18)
|
||||
subq $4,$28,$20 # 1st main sub
|
||||
ldq $3,24($18)
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
ldq $6,-16($17)
|
||||
cmpult $4,$20,$25 # compute cy from last add
|
||||
ldq $7,-8($17)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
subq $19,4,$19 # decr loop cnt
|
||||
stq $22,-16($16)
|
||||
addq $1,$25,$28 # cy add
|
||||
stq $23,-8($16)
|
||||
subq $5,$28,$21 # 2nd main sub
|
||||
addq $18,32,$18 # update s2_ptr
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
bge $19,.Loop
|
||||
# Finish software pipeline for 1st loop
|
||||
.Lend1: cmpult $5,$21,$25 # compute cy from last add
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
addq $2,$25,$28 # cy add
|
||||
subq $6,$28,$22 # 3rd main sub
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $6,$22,$25 # compute cy from last add
|
||||
stq $20,0($16)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
stq $21,8($16)
|
||||
addq $3,$25,$28 # cy add
|
||||
subq $7,$28,$23 # 4th main sub
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $7,$23,$25 # compute cy from last add
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
addq $16,32,$16 # update res_ptr
|
||||
stq $22,-16($16)
|
||||
stq $23,-8($16)
|
||||
.Lend2: addq $19,4,$19 # restore loop cnt
|
||||
beq $19,.Lret
|
||||
# Start software pipeline for 2nd loop
|
||||
ldq $0,0($18)
|
||||
ldq $4,0($17)
|
||||
subq $19,1,$19
|
||||
beq $19,.Lend0
|
||||
# 2nd loop handles remaining 1-3 limbs
|
||||
.align 4
|
||||
.Loop0: addq $0,$25,$28 # cy add
|
||||
ldq $0,8($18)
|
||||
subq $4,$28,$20 # main sub
|
||||
ldq $1,8($17)
|
||||
addq $18,8,$18
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
addq $17,8,$17
|
||||
stq $20,0($16)
|
||||
cmpult $4,$20,$25 # compute cy from last add
|
||||
subq $19,1,$19 # decr loop cnt
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
addq $16,8,$16
|
||||
or $1,$31,$4
|
||||
bne $19,.Loop0
|
||||
.Lend0: addq $0,$25,$28 # cy add
|
||||
subq $4,$28,$20 # main sub
|
||||
cmpult $28,$25,$8 # compute cy from last add
|
||||
cmpult $4,$20,$25 # compute cy from last add
|
||||
stq $20,0($16)
|
||||
or $8,$25,$25 # combine cy from the two adds
|
||||
|
||||
.Lret: or $25,$31,$0 # return cy
|
||||
ret $31,($26),1
|
||||
.end __mpn_sub_n
|
1
ports/sysdeps/alpha/alphaev6/Implies
Normal file
1
ports/sysdeps/alpha/alphaev6/Implies
Normal file
@ -0,0 +1 @@
|
||||
alpha/alphaev5
|
477
ports/sysdeps/alpha/alphaev6/addmul_1.S
Normal file
477
ports/sysdeps/alpha/alphaev6/addmul_1.S
Normal file
@ -0,0 +1,477 @@
|
||||
# Alpha ev6 mpn_addmul_1 -- Multiply a limb vector with a limb and add
|
||||
# the result to a second limb vector.
|
||||
#
|
||||
# Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of the GNU MP Library.
|
||||
#
|
||||
# The GNU MP Library 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 of the License, or (at
|
||||
# your option) any later version.
|
||||
#
|
||||
# The GNU MP Library 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 the GNU MP Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# INPUT PARAMETERS
|
||||
# res_ptr $16
|
||||
# s1_ptr $17
|
||||
# size $18
|
||||
# s2_limb $19
|
||||
#
|
||||
# This code runs at 42 cycles/limb on EV4, 18 cycles/limb on EV5, and
|
||||
# exactly 3.625 cycles/limb on EV6...
|
||||
#
|
||||
# This code was written in close cooperation with ev6 pipeline expert
|
||||
# Steve Root (root@toober.hlo.dec.com). Any errors are tege's fault, though.
|
||||
#
|
||||
# Register usages for unrolled loop:
|
||||
# 0-3 mul's
|
||||
# 4-7 acc's
|
||||
# 8-15 mul results
|
||||
# 20,21 carry's
|
||||
# 22,23 save for stores
|
||||
#
|
||||
# Sustains 8 mul-adds in 29 cycles in the unrolled inner loop.
|
||||
#
|
||||
# The stores can issue a cycle late so we have paired no-op's to 'catch'
|
||||
# them, so that further disturbance to the schedule is damped.
|
||||
#
|
||||
# We couldn't pair the loads, because the entangled schedule of the
|
||||
# carry's has to happen on one side {0} of the machine. Note, the total
|
||||
# use of U0, and the total use of L0 (after attending to the stores).
|
||||
# which is part of the reason why....
|
||||
#
|
||||
# This is a great schedule for the d_cache, a poor schedule for the
|
||||
# b_cache. The lockup on U0 means that any stall can't be recovered
|
||||
# from. Consider a ldq in L1. say that load gets stalled because it
|
||||
# collides with a fill from the b_Cache. On the next cycle, this load
|
||||
# gets priority. If first looks at L0, and goes there. The instruction
|
||||
# we intended for L0 gets to look at L1, which is NOT where we want
|
||||
# it. It either stalls 1, because it can't go in L0, or goes there, and
|
||||
# causes a further instruction to stall.
|
||||
#
|
||||
# So for b_cache, we're likely going to want to put one or more cycles
|
||||
# back into the code! And, of course, put in prefetches. For the
|
||||
# accumulator, lds, intent to modify. For the multiplier, you might
|
||||
# want ldq, evict next, if you're not wanting to use it again soon. Use
|
||||
# 256 ahead of present pointer value. At a place where we have an mt
|
||||
# followed by a bookkeeping, put the bookkeeping in upper, and the
|
||||
# prefetch into lower.
|
||||
#
|
||||
# Note, the usage of physical registers per cycle is smoothed off, as
|
||||
# much as possible.
|
||||
#
|
||||
# Note, the ldq's and stq's are at the end of the quadpacks. note, we'd
|
||||
# like not to have a ldq or stq to preceded a conditional branch in a
|
||||
# quadpack. The conditional branch moves the retire pointer one cycle
|
||||
# later.
|
||||
#
|
||||
# Optimization notes:
|
||||
# Callee-saves regs: $9 $10 $11 $12 $13 $14 $15 $26 ?$27?
|
||||
# Reserved regs: $29 $30 $31
|
||||
# Free caller-saves regs in unrolled code: $24 $25 $28
|
||||
# We should swap some of the callee-saves regs for some of the free
|
||||
# caller-saves regs, saving some overhead cycles.
|
||||
# Most importantly, we should write fast code for the 0-7 case.
|
||||
# The code we use there are for the 21164, and runs at 7 cycles/limb
|
||||
# on the 21264. Should not be hard, if we write specialized code for
|
||||
# 1-7 limbs (the one for 0 limbs should be straightforward). We then just
|
||||
# need a jump table indexed by the low 3 bits of the count argument.
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.text
|
||||
|
||||
.globl __mpn_addmul_1
|
||||
.ent __mpn_addmul_1
|
||||
__mpn_addmul_1:
|
||||
.frame $30,0,$26,0
|
||||
.prologue 0
|
||||
|
||||
cmpult $18, 8, $1
|
||||
beq $1, $Large
|
||||
|
||||
ldq $2, 0($17) # $2 = s1_limb
|
||||
addq $17, 8, $17 # s1_ptr++
|
||||
subq $18, 1, $18 # size--
|
||||
mulq $2, $19, $3 # $3 = prod_low
|
||||
ldq $5, 0($16) # $5 = *res_ptr
|
||||
umulh $2, $19, $0 # $0 = prod_high
|
||||
beq $18, $Lend0b # jump if size was == 1
|
||||
ldq $2, 0($17) # $2 = s1_limb
|
||||
addq $17, 8, $17 # s1_ptr++
|
||||
subq $18, 1, $18 # size--
|
||||
addq $5, $3, $3
|
||||
cmpult $3, $5, $4
|
||||
stq $3, 0($16)
|
||||
addq $16, 8, $16 # res_ptr++
|
||||
beq $18, $Lend0a # jump if size was == 2
|
||||
|
||||
.align 3
|
||||
$Loop0: mulq $2, $19, $3 # $3 = prod_low
|
||||
ldq $5, 0($16) # $5 = *res_ptr
|
||||
addq $4, $0, $0 # cy_limb = cy_limb + 'cy'
|
||||
subq $18, 1, $18 # size--
|
||||
umulh $2, $19, $4 # $4 = cy_limb
|
||||
ldq $2, 0($17) # $2 = s1_limb
|
||||
addq $17, 8, $17 # s1_ptr++
|
||||
addq $3, $0, $3 # $3 = cy_limb + prod_low
|
||||
cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low)
|
||||
addq $5, $3, $3
|
||||
cmpult $3, $5, $5
|
||||
stq $3, 0($16)
|
||||
addq $16, 8, $16 # res_ptr++
|
||||
addq $5, $0, $0 # combine carries
|
||||
bne $18, $Loop0
|
||||
$Lend0a:
|
||||
mulq $2, $19, $3 # $3 = prod_low
|
||||
ldq $5, 0($16) # $5 = *res_ptr
|
||||
addq $4, $0, $0 # cy_limb = cy_limb + 'cy'
|
||||
umulh $2, $19, $4 # $4 = cy_limb
|
||||
addq $3, $0, $3 # $3 = cy_limb + prod_low
|
||||
cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low)
|
||||
addq $5, $3, $3
|
||||
cmpult $3, $5, $5
|
||||
stq $3, 0($16)
|
||||
addq $5, $0, $0 # combine carries
|
||||
addq $4, $0, $0 # cy_limb = prod_high + cy
|
||||
ret $31, ($26), 1
|
||||
$Lend0b:
|
||||
addq $5, $3, $3
|
||||
cmpult $3, $5, $5
|
||||
stq $3, 0($16)
|
||||
addq $0, $5, $0
|
||||
ret $31, ($26), 1
|
||||
|
||||
$Large:
|
||||
lda $30, -240($30)
|
||||
stq $9, 8($30)
|
||||
stq $10, 16($30)
|
||||
stq $11, 24($30)
|
||||
stq $12, 32($30)
|
||||
stq $13, 40($30)
|
||||
stq $14, 48($30)
|
||||
stq $15, 56($30)
|
||||
|
||||
and $18, 7, $20 # count for the first loop, 0-7
|
||||
srl $18, 3, $18 # count for unrolled loop
|
||||
bis $31, $31, $0
|
||||
beq $20, $Lunroll
|
||||
ldq $2, 0($17) # $2 = s1_limb
|
||||
addq $17, 8, $17 # s1_ptr++
|
||||
subq $20, 1, $20 # size--
|
||||
mulq $2, $19, $3 # $3 = prod_low
|
||||
ldq $5, 0($16) # $5 = *res_ptr
|
||||
umulh $2, $19, $0 # $0 = prod_high
|
||||
beq $20, $Lend1b # jump if size was == 1
|
||||
ldq $2, 0($17) # $2 = s1_limb
|
||||
addq $17, 8, $17 # s1_ptr++
|
||||
subq $20, 1, $20 # size--
|
||||
addq $5, $3, $3
|
||||
cmpult $3, $5, $4
|
||||
stq $3, 0($16)
|
||||
addq $16, 8, $16 # res_ptr++
|
||||
beq $20, $Lend1a # jump if size was == 2
|
||||
|
||||
.align 3
|
||||
$Loop1: mulq $2, $19, $3 # $3 = prod_low
|
||||
ldq $5, 0($16) # $5 = *res_ptr
|
||||
addq $4, $0, $0 # cy_limb = cy_limb + 'cy'
|
||||
subq $20, 1, $20 # size--
|
||||
umulh $2, $19, $4 # $4 = cy_limb
|
||||
ldq $2, 0($17) # $2 = s1_limb
|
||||
addq $17, 8, $17 # s1_ptr++
|
||||
addq $3, $0, $3 # $3 = cy_limb + prod_low
|
||||
cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low)
|
||||
addq $5, $3, $3
|
||||
cmpult $3, $5, $5
|
||||
stq $3, 0($16)
|
||||
addq $16, 8, $16 # res_ptr++
|
||||
addq $5, $0, $0 # combine carries
|
||||
bne $20, $Loop1
|
||||
|
||||
$Lend1a:
|
||||
mulq $2, $19, $3 # $3 = prod_low
|
||||
ldq $5, 0($16) # $5 = *res_ptr
|
||||
addq $4, $0, $0 # cy_limb = cy_limb + 'cy'
|
||||
umulh $2, $19, $4 # $4 = cy_limb
|
||||
addq $3, $0, $3 # $3 = cy_limb + prod_low
|
||||
cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low)
|
||||
addq $5, $3, $3
|
||||
cmpult $3, $5, $5
|
||||
stq $3, 0($16)
|
||||
addq $16, 8, $16 # res_ptr++
|
||||
addq $5, $0, $0 # combine carries
|
||||
addq $4, $0, $0 # cy_limb = prod_high + cy
|
||||
br $31, $Lunroll
|
||||
$Lend1b:
|
||||
addq $5, $3, $3
|
||||
cmpult $3, $5, $5
|
||||
stq $3, 0($16)
|
||||
addq $16, 8, $16 # res_ptr++
|
||||
addq $0, $5, $0
|
||||
|
||||
$Lunroll:
|
||||
lda $17, -16($17) # L1 bookkeeping
|
||||
lda $16, -16($16) # L1 bookkeeping
|
||||
bis $0, $31, $12
|
||||
|
||||
# ____ UNROLLED LOOP SOFTWARE PIPELINE STARTUP ____
|
||||
|
||||
ldq $2, 16($17) # L1
|
||||
ldq $3, 24($17) # L1
|
||||
lda $18, -1($18) # L1 bookkeeping
|
||||
ldq $6, 16($16) # L1
|
||||
ldq $7, 24($16) # L1
|
||||
ldq $0, 32($17) # L1
|
||||
mulq $19, $2, $13 # U1
|
||||
ldq $1, 40($17) # L1
|
||||
umulh $19, $2, $14 # U1
|
||||
mulq $19, $3, $15 # U1
|
||||
lda $17, 64($17) # L1 bookkeeping
|
||||
ldq $4, 32($16) # L1
|
||||
ldq $5, 40($16) # L1
|
||||
umulh $19, $3, $8 # U1
|
||||
ldq $2, -16($17) # L1
|
||||
mulq $19, $0, $9 # U1
|
||||
ldq $3, -8($17) # L1
|
||||
umulh $19, $0, $10 # U1
|
||||
addq $6, $13, $6 # L0 lo + acc
|
||||
mulq $19, $1, $11 # U1
|
||||
cmpult $6, $13, $20 # L0 lo add => carry
|
||||
lda $16, 64($16) # L1 bookkeeping
|
||||
addq $6, $12, $22 # U0 hi add => answer
|
||||
cmpult $22, $12, $21 # L0 hi add => carry
|
||||
addq $14, $20, $14 # U0 hi mul + carry
|
||||
ldq $6, -16($16) # L1
|
||||
addq $7, $15, $23 # L0 lo + acc
|
||||
addq $14, $21, $14 # U0 hi mul + carry
|
||||
ldq $7, -8($16) # L1
|
||||
umulh $19, $1, $12 # U1
|
||||
cmpult $23, $15, $20 # L0 lo add => carry
|
||||
addq $23, $14, $23 # U0 hi add => answer
|
||||
ldq $0, 0($17) # L1
|
||||
mulq $19, $2, $13 # U1
|
||||
cmpult $23, $14, $21 # L0 hi add => carry
|
||||
addq $8, $20, $8 # U0 hi mul + carry
|
||||
ldq $1, 8($17) # L1
|
||||
umulh $19, $2, $14 # U1
|
||||
addq $4, $9, $4 # L0 lo + acc
|
||||
stq $22, -48($16) # L0
|
||||
stq $23, -40($16) # L1
|
||||
mulq $19, $3, $15 # U1
|
||||
addq $8, $21, $8 # U0 hi mul + carry
|
||||
cmpult $4, $9, $20 # L0 lo add => carry
|
||||
addq $4, $8, $22 # U0 hi add => answer
|
||||
ble $18, $Lend # U1 bookkeeping
|
||||
|
||||
# ____ MAIN UNROLLED LOOP ____
|
||||
.align 4
|
||||
$Loop:
|
||||
bis $31, $31, $31 # U1 mt
|
||||
cmpult $22, $8, $21 # L0 hi add => carry
|
||||
addq $10, $20, $10 # U0 hi mul + carry
|
||||
ldq $4, 0($16) # L1
|
||||
|
||||
bis $31, $31, $31 # U1 mt
|
||||
addq $5, $11, $23 # L0 lo + acc
|
||||
addq $10, $21, $10 # L0 hi mul + carry
|
||||
ldq $5, 8($16) # L1
|
||||
|
||||
umulh $19, $3, $8 # U1
|
||||
cmpult $23, $11, $20 # L0 lo add => carry
|
||||
addq $23, $10, $23 # U0 hi add => answer
|
||||
ldq $2, 16($17) # L1
|
||||
|
||||
mulq $19, $0, $9 # U1
|
||||
cmpult $23, $10, $21 # L0 hi add => carry
|
||||
addq $12, $20, $12 # U0 hi mul + carry
|
||||
ldq $3, 24($17) # L1
|
||||
|
||||
umulh $19, $0, $10 # U1
|
||||
addq $6, $13, $6 # L0 lo + acc
|
||||
stq $22, -32($16) # L0
|
||||
stq $23, -24($16) # L1
|
||||
|
||||
bis $31, $31, $31 # L0 st slosh
|
||||
mulq $19, $1, $11 # U1
|
||||
bis $31, $31, $31 # L1 st slosh
|
||||
addq $12, $21, $12 # U0 hi mul + carry
|
||||
|
||||
cmpult $6, $13, $20 # L0 lo add => carry
|
||||
bis $31, $31, $31 # U1 mt
|
||||
lda $18, -1($18) # L1 bookkeeping
|
||||
addq $6, $12, $22 # U0 hi add => answer
|
||||
|
||||
bis $31, $31, $31 # U1 mt
|
||||
cmpult $22, $12, $21 # L0 hi add => carry
|
||||
addq $14, $20, $14 # U0 hi mul + carry
|
||||
ldq $6, 16($16) # L1
|
||||
|
||||
bis $31, $31, $31 # U1 mt
|
||||
addq $7, $15, $23 # L0 lo + acc
|
||||
addq $14, $21, $14 # U0 hi mul + carry
|
||||
ldq $7, 24($16) # L1
|
||||
|
||||
umulh $19, $1, $12 # U1
|
||||
cmpult $23, $15, $20 # L0 lo add => carry
|
||||
addq $23, $14, $23 # U0 hi add => answer
|
||||
ldq $0, 32($17) # L1
|
||||
|
||||
mulq $19, $2, $13 # U1
|
||||
cmpult $23, $14, $21 # L0 hi add => carry
|
||||
addq $8, $20, $8 # U0 hi mul + carry
|
||||
ldq $1, 40($17) # L1
|
||||
|
||||
umulh $19, $2, $14 # U1
|
||||
addq $4, $9, $4 # U0 lo + acc
|
||||
stq $22, -16($16) # L0
|
||||
stq $23, -8($16) # L1
|
||||
|
||||
bis $31, $31, $31 # L0 st slosh
|
||||
mulq $19, $3, $15 # U1
|
||||
bis $31, $31, $31 # L1 st slosh
|
||||
addq $8, $21, $8 # L0 hi mul + carry
|
||||
|
||||
cmpult $4, $9, $20 # L0 lo add => carry
|
||||
bis $31, $31, $31 # U1 mt
|
||||
lda $17, 64($17) # L1 bookkeeping
|
||||
addq $4, $8, $22 # U0 hi add => answer
|
||||
|
||||
bis $31, $31, $31 # U1 mt
|
||||
cmpult $22, $8, $21 # L0 hi add => carry
|
||||
addq $10, $20, $10 # U0 hi mul + carry
|
||||
ldq $4, 32($16) # L1
|
||||
|
||||
bis $31, $31, $31 # U1 mt
|
||||
addq $5, $11, $23 # L0 lo + acc
|
||||
addq $10, $21, $10 # L0 hi mul + carry
|
||||
ldq $5, 40($16) # L1
|
||||
|
||||
umulh $19, $3, $8 # U1
|
||||
cmpult $23, $11, $20 # L0 lo add => carry
|
||||
addq $23, $10, $23 # U0 hi add => answer
|
||||
ldq $2, -16($17) # L1
|
||||
|
||||
mulq $19, $0, $9 # U1
|
||||
cmpult $23, $10, $21 # L0 hi add => carry
|
||||
addq $12, $20, $12 # U0 hi mul + carry
|
||||
ldq $3, -8($17) # L1
|
||||
|
||||
umulh $19, $0, $10 # U1
|
||||
addq $6, $13, $6 # L0 lo + acc
|
||||
stq $22, 0($16) # L0
|
||||
stq $23, 8($16) # L1
|
||||
|
||||
bis $31, $31, $31 # L0 st slosh
|
||||
mulq $19, $1, $11 # U1
|
||||
bis $31, $31, $31 # L1 st slosh
|
||||
addq $12, $21, $12 # U0 hi mul + carry
|
||||
|
||||
cmpult $6, $13, $20 # L0 lo add => carry
|
||||
bis $31, $31, $31 # U1 mt
|
||||
lda $16, 64($16) # L1 bookkeeping
|
||||
addq $6, $12, $22 # U0 hi add => answer
|
||||
|
||||
bis $31, $31, $31 # U1 mt
|
||||
cmpult $22, $12, $21 # L0 hi add => carry
|
||||
addq $14, $20, $14 # U0 hi mul + carry
|
||||
ldq $6, -16($16) # L1
|
||||
|
||||
bis $31, $31, $31 # U1 mt
|
||||
addq $7, $15, $23 # L0 lo + acc
|
||||
addq $14, $21, $14 # U0 hi mul + carry
|
||||
ldq $7, -8($16) # L1
|
||||
|
||||
umulh $19, $1, $12 # U1
|
||||
cmpult $23, $15, $20 # L0 lo add => carry
|
||||
addq $23, $14, $23 # U0 hi add => answer
|
||||
ldq $0, 0($17) # L1
|
||||
|
||||
mulq $19, $2, $13 # U1
|
||||
cmpult $23, $14, $21 # L0 hi add => carry
|
||||
addq $8, $20, $8 # U0 hi mul + carry
|
||||
ldq $1, 8($17) # L1
|
||||
|
||||
umulh $19, $2, $14 # U1
|
||||
addq $4, $9, $4 # L0 lo + acc
|
||||
stq $22, -48($16) # L0
|
||||
stq $23, -40($16) # L1
|
||||
|
||||
bis $31, $31, $31 # L0 st slosh
|
||||
mulq $19, $3, $15 # U1
|
||||
bis $31, $31, $31 # L1 st slosh
|
||||
addq $8, $21, $8 # U0 hi mul + carry
|
||||
|
||||
cmpult $4, $9, $20 # L0 lo add => carry
|
||||
addq $4, $8, $22 # U0 hi add => answer
|
||||
bis $31, $31, $31 # L1 mt
|
||||
bgt $18, $Loop # U1 bookkeeping
|
||||
|
||||
# ____ UNROLLED LOOP SOFTWARE PIPELINE FINISH ____
|
||||
$Lend:
|
||||
cmpult $22, $8, $21 # L0 hi add => carry
|
||||
addq $10, $20, $10 # U0 hi mul + carry
|
||||
ldq $4, 0($16) # L1
|
||||
addq $5, $11, $23 # L0 lo + acc
|
||||
addq $10, $21, $10 # L0 hi mul + carry
|
||||
ldq $5, 8($16) # L1
|
||||
umulh $19, $3, $8 # U1
|
||||
cmpult $23, $11, $20 # L0 lo add => carry
|
||||
addq $23, $10, $23 # U0 hi add => answer
|
||||
mulq $19, $0, $9 # U1
|
||||
cmpult $23, $10, $21 # L0 hi add => carry
|
||||
addq $12, $20, $12 # U0 hi mul + carry
|
||||
umulh $19, $0, $10 # U1
|
||||
addq $6, $13, $6 # L0 lo + acc
|
||||
stq $22, -32($16) # L0
|
||||
stq $23, -24($16) # L1
|
||||
mulq $19, $1, $11 # U1
|
||||
addq $12, $21, $12 # U0 hi mul + carry
|
||||
cmpult $6, $13, $20 # L0 lo add => carry
|
||||
addq $6, $12, $22 # U0 hi add => answer
|
||||
cmpult $22, $12, $21 # L0 hi add => carry
|
||||
addq $14, $20, $14 # U0 hi mul + carry
|
||||
addq $7, $15, $23 # L0 lo + acc
|
||||
addq $14, $21, $14 # U0 hi mul + carry
|
||||
umulh $19, $1, $12 # U1
|
||||
cmpult $23, $15, $20 # L0 lo add => carry
|
||||
addq $23, $14, $23 # U0 hi add => answer
|
||||
cmpult $23, $14, $21 # L0 hi add => carry
|
||||
addq $8, $20, $8 # U0 hi mul + carry
|
||||
addq $4, $9, $4 # U0 lo + acc
|
||||
stq $22, -16($16) # L0
|
||||
stq $23, -8($16) # L1
|
||||
bis $31, $31, $31 # L0 st slosh
|
||||
addq $8, $21, $8 # L0 hi mul + carry
|
||||
cmpult $4, $9, $20 # L0 lo add => carry
|
||||
addq $4, $8, $22 # U0 hi add => answer
|
||||
cmpult $22, $8, $21 # L0 hi add => carry
|
||||
addq $10, $20, $10 # U0 hi mul + carry
|
||||
addq $5, $11, $23 # L0 lo + acc
|
||||
addq $10, $21, $10 # L0 hi mul + carry
|
||||
cmpult $23, $11, $20 # L0 lo add => carry
|
||||
addq $23, $10, $23 # U0 hi add => answer
|
||||
cmpult $23, $10, $21 # L0 hi add => carry
|
||||
addq $12, $20, $12 # U0 hi mul + carry
|
||||
stq $22, 0($16) # L0
|
||||
stq $23, 8($16) # L1
|
||||
addq $12, $21, $0 # U0 hi mul + carry
|
||||
|
||||
ldq $9, 8($30)
|
||||
ldq $10, 16($30)
|
||||
ldq $11, 24($30)
|
||||
ldq $12, 32($30)
|
||||
ldq $13, 40($30)
|
||||
ldq $14, 48($30)
|
||||
ldq $15, 56($30)
|
||||
lda $30, 240($30)
|
||||
ret $31, ($26), 1
|
||||
|
||||
.end __mpn_addmul_1
|
44
ports/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
Normal file
44
ports/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
Normal file
@ -0,0 +1,44 @@
|
||||
/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
ENTRY(__ieee754_sqrt)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
.align 4
|
||||
#ifdef _IEEE_FP_INEXACT
|
||||
sqrtt/suid $f16, $f0
|
||||
#else
|
||||
sqrtt/sud $f16, $f0
|
||||
#endif
|
||||
ret
|
||||
nop
|
||||
nop
|
||||
|
||||
END(__ieee754_sqrt)
|
44
ports/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S
Normal file
44
ports/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S
Normal file
@ -0,0 +1,44 @@
|
||||
/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
ENTRY(__ieee754_sqrtf)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
.align 4
|
||||
#ifdef _IEEE_FP_INEXACT
|
||||
sqrts/suid $f16, $f0
|
||||
#else
|
||||
sqrts/sud $f16, $f0
|
||||
#endif
|
||||
ret
|
||||
nop
|
||||
nop
|
||||
|
||||
END(__ieee754_sqrtf)
|
255
ports/sysdeps/alpha/alphaev6/memcpy.S
Normal file
255
ports/sysdeps/alpha/alphaev6/memcpy.S
Normal file
@ -0,0 +1,255 @@
|
||||
/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/*
|
||||
* Much of the information about 21264 scheduling/coding comes from:
|
||||
* Compiler Writer's Guide for the Alpha 21264
|
||||
* abbreviated as 'CWG' in other comments here
|
||||
* ftp.digital.com/pub/Digital/info/semiconductor/literature/dsc-library.html
|
||||
* Scheduling notation:
|
||||
* E - either cluster
|
||||
* U - upper subcluster; U0 - subcluster U0; U1 - subcluster U1
|
||||
* L - lower subcluster; L0 - subcluster L0; L1 - subcluster L1
|
||||
*
|
||||
* Temp usage notes:
|
||||
* $0 - destination address
|
||||
* $1,$2, - scratch
|
||||
*/
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
ENTRY(memcpy)
|
||||
.prologue 0
|
||||
|
||||
mov $16, $0 # E : copy dest to return
|
||||
ble $18, $nomoredata # U : done with the copy?
|
||||
xor $16, $17, $1 # E : are source and dest alignments the same?
|
||||
and $1, 7, $1 # E : are they the same mod 8?
|
||||
|
||||
bne $1, $misaligned # U : Nope - gotta do this the slow way
|
||||
/* source and dest are same mod 8 address */
|
||||
and $16, 7, $1 # E : Are both 0mod8?
|
||||
beq $1, $both_0mod8 # U : Yes
|
||||
nop # E :
|
||||
|
||||
/*
|
||||
* source and dest are same misalignment. move a byte at a time
|
||||
* until a 0mod8 alignment for both is reached.
|
||||
* At least one byte more to move
|
||||
*/
|
||||
|
||||
$head_align:
|
||||
ldbu $1, 0($17) # L : grab a byte
|
||||
subq $18, 1, $18 # E : count--
|
||||
addq $17, 1, $17 # E : src++
|
||||
stb $1, 0($16) # L :
|
||||
addq $16, 1, $16 # E : dest++
|
||||
and $16, 7, $1 # E : Are we at 0mod8 yet?
|
||||
ble $18, $nomoredata # U : done with the copy?
|
||||
bne $1, $head_align # U :
|
||||
|
||||
$both_0mod8:
|
||||
cmple $18, 127, $1 # E : Can we unroll the loop?
|
||||
bne $1, $no_unroll # U :
|
||||
and $16, 63, $1 # E : get mod64 alignment
|
||||
beq $1, $do_unroll # U : no single quads to fiddle
|
||||
|
||||
$single_head_quad:
|
||||
ldq $1, 0($17) # L : get 8 bytes
|
||||
subq $18, 8, $18 # E : count -= 8
|
||||
addq $17, 8, $17 # E : src += 8
|
||||
nop # E :
|
||||
|
||||
stq $1, 0($16) # L : store
|
||||
addq $16, 8, $16 # E : dest += 8
|
||||
and $16, 63, $1 # E : get mod64 alignment
|
||||
bne $1, $single_head_quad # U : still not fully aligned
|
||||
|
||||
$do_unroll:
|
||||
addq $16, 64, $7 # E : Initial (+1 trip) wh64 address
|
||||
cmple $18, 127, $1 # E : Can we go through the unrolled loop?
|
||||
bne $1, $tail_quads # U : Nope
|
||||
nop # E :
|
||||
|
||||
$unroll_body:
|
||||
wh64 ($7) # L1 : memory subsystem hint: 64 bytes at
|
||||
# ($7) are about to be over-written
|
||||
ldq $6, 0($17) # L0 : bytes 0..7
|
||||
nop # E :
|
||||
nop # E :
|
||||
|
||||
ldq $4, 8($17) # L : bytes 8..15
|
||||
ldq $5, 16($17) # L : bytes 16..23
|
||||
addq $7, 64, $7 # E : Update next wh64 address
|
||||
nop # E :
|
||||
|
||||
ldq $3, 24($17) # L : bytes 24..31
|
||||
addq $16, 64, $1 # E : fallback value for wh64
|
||||
nop # E :
|
||||
nop # E :
|
||||
|
||||
addq $17, 32, $17 # E : src += 32 bytes
|
||||
stq $6, 0($16) # L : bytes 0..7
|
||||
nop # E :
|
||||
nop # E :
|
||||
|
||||
stq $4, 8($16) # L : bytes 8..15
|
||||
stq $5, 16($16) # L : bytes 16..23
|
||||
subq $18, 192, $2 # E : At least two more trips to go?
|
||||
nop # E :
|
||||
|
||||
stq $3, 24($16) # L : bytes 24..31
|
||||
addq $16, 32, $16 # E : dest += 32 bytes
|
||||
nop # E :
|
||||
nop # E :
|
||||
|
||||
ldq $6, 0($17) # L : bytes 0..7
|
||||
ldq $4, 8($17) # L : bytes 8..15
|
||||
cmovlt $2, $1, $7 # E : Latency 2, extra map slot - Use
|
||||
# fallback wh64 address if < 2 more trips
|
||||
nop # E :
|
||||
|
||||
ldq $5, 16($17) # L : bytes 16..23
|
||||
ldq $3, 24($17) # L : bytes 24..31
|
||||
addq $16, 32, $16 # E : dest += 32
|
||||
subq $18, 64, $18 # E : count -= 64
|
||||
|
||||
addq $17, 32, $17 # E : src += 32
|
||||
stq $6, -32($16) # L : bytes 0..7
|
||||
stq $4, -24($16) # L : bytes 8..15
|
||||
cmple $18, 63, $1 # E : At least one more trip?
|
||||
|
||||
stq $5, -16($16) # L : bytes 16..23
|
||||
stq $3, -8($16) # L : bytes 24..31
|
||||
nop # E :
|
||||
beq $1, $unroll_body
|
||||
|
||||
$tail_quads:
|
||||
$no_unroll:
|
||||
.align 4
|
||||
subq $18, 8, $18 # E : At least a quad left?
|
||||
blt $18, $less_than_8 # U : Nope
|
||||
nop # E :
|
||||
nop # E :
|
||||
|
||||
$move_a_quad:
|
||||
ldq $1, 0($17) # L : fetch 8
|
||||
subq $18, 8, $18 # E : count -= 8
|
||||
addq $17, 8, $17 # E : src += 8
|
||||
nop # E :
|
||||
|
||||
stq $1, 0($16) # L : store 8
|
||||
addq $16, 8, $16 # E : dest += 8
|
||||
bge $18, $move_a_quad # U :
|
||||
nop # E :
|
||||
|
||||
$less_than_8:
|
||||
.align 4
|
||||
addq $18, 8, $18 # E : add back for trailing bytes
|
||||
ble $18, $nomoredata # U : All-done
|
||||
nop # E :
|
||||
nop # E :
|
||||
|
||||
/* Trailing bytes */
|
||||
$tail_bytes:
|
||||
subq $18, 1, $18 # E : count--
|
||||
ldbu $1, 0($17) # L : fetch a byte
|
||||
addq $17, 1, $17 # E : src++
|
||||
nop # E :
|
||||
|
||||
stb $1, 0($16) # L : store a byte
|
||||
addq $16, 1, $16 # E : dest++
|
||||
bgt $18, $tail_bytes # U : more to be done?
|
||||
nop # E :
|
||||
|
||||
/* branching to exit takes 3 extra cycles, so replicate exit here */
|
||||
ret $31, ($26), 1 # L0 :
|
||||
nop # E :
|
||||
nop # E :
|
||||
nop # E :
|
||||
|
||||
$misaligned:
|
||||
mov $0, $4 # E : dest temp
|
||||
and $0, 7, $1 # E : dest alignment mod8
|
||||
beq $1, $dest_0mod8 # U : life doesnt totally suck
|
||||
nop
|
||||
|
||||
$aligndest:
|
||||
ble $18, $nomoredata # U :
|
||||
ldbu $1, 0($17) # L : fetch a byte
|
||||
subq $18, 1, $18 # E : count--
|
||||
addq $17, 1, $17 # E : src++
|
||||
|
||||
stb $1, 0($4) # L : store it
|
||||
addq $4, 1, $4 # E : dest++
|
||||
and $4, 7, $1 # E : dest 0mod8 yet?
|
||||
bne $1, $aligndest # U : go until we are aligned.
|
||||
|
||||
/* Source has unknown alignment, but dest is known to be 0mod8 */
|
||||
$dest_0mod8:
|
||||
subq $18, 8, $18 # E : At least a quad left?
|
||||
blt $18, $misalign_tail # U : Nope
|
||||
ldq_u $3, 0($17) # L : seed (rotating load) of 8 bytes
|
||||
nop # E :
|
||||
|
||||
$mis_quad:
|
||||
ldq_u $16, 8($17) # L : Fetch next 8
|
||||
extql $3, $17, $3 # U : masking
|
||||
extqh $16, $17, $1 # U : masking
|
||||
bis $3, $1, $1 # E : merged bytes to store
|
||||
|
||||
subq $18, 8, $18 # E : count -= 8
|
||||
addq $17, 8, $17 # E : src += 8
|
||||
stq $1, 0($4) # L : store 8 (aligned)
|
||||
mov $16, $3 # E : "rotate" source data
|
||||
|
||||
addq $4, 8, $4 # E : dest += 8
|
||||
bge $18, $mis_quad # U : More quads to move
|
||||
nop
|
||||
nop
|
||||
|
||||
$misalign_tail:
|
||||
addq $18, 8, $18 # E : account for tail stuff
|
||||
ble $18, $nomoredata # U :
|
||||
nop
|
||||
nop
|
||||
|
||||
$misalign_byte:
|
||||
ldbu $1, 0($17) # L : fetch 1
|
||||
subq $18, 1, $18 # E : count--
|
||||
addq $17, 1, $17 # E : src++
|
||||
nop # E :
|
||||
|
||||
stb $1, 0($4) # L : store
|
||||
addq $4, 1, $4 # E : dest++
|
||||
bgt $18, $misalign_byte # U : more to go?
|
||||
nop
|
||||
|
||||
|
||||
$nomoredata:
|
||||
ret $31, ($26), 1 # L0 :
|
||||
nop # E :
|
||||
nop # E :
|
||||
nop # E :
|
||||
|
||||
END(memcpy)
|
||||
libc_hidden_builtin_def (memcpy)
|
223
ports/sysdeps/alpha/alphaev6/memset.S
Normal file
223
ports/sysdeps/alpha/alphaev6/memset.S
Normal file
@ -0,0 +1,223 @@
|
||||
/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@tamu.edu)
|
||||
EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noat
|
||||
.set noreorder
|
||||
|
||||
ENTRY(memset)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Serious stalling happens. The only way to mitigate this is to
|
||||
* undertake a major re-write to interleave the constant materialization
|
||||
* with other parts of the fall-through code. This is important, even
|
||||
* though it makes maintenance tougher.
|
||||
* Do this later.
|
||||
*/
|
||||
and $17, 255, $1 # E : 00000000000000ch
|
||||
insbl $17, 1, $2 # U : 000000000000ch00
|
||||
mov $16, $0 # E : return value
|
||||
ble $18, $end # U : zero length requested?
|
||||
|
||||
addq $18, $16, $6 # E : max address to write to
|
||||
or $1, $2, $17 # E : 000000000000chch
|
||||
insbl $1, 2, $3 # U : 0000000000ch0000
|
||||
insbl $1, 3, $4 # U : 00000000ch000000
|
||||
|
||||
or $3, $4, $3 # E : 00000000chch0000
|
||||
inswl $17, 4, $5 # U : 0000chch00000000
|
||||
xor $16, $6, $1 # E : will complete write be within one quadword?
|
||||
inswl $17, 6, $2 # U : chch000000000000
|
||||
|
||||
or $17, $3, $17 # E : 00000000chchchch
|
||||
or $2, $5, $2 # E : chchchch00000000
|
||||
bic $1, 7, $1 # E : fit within a single quadword?
|
||||
and $16, 7, $3 # E : Target addr misalignment
|
||||
|
||||
or $17, $2, $17 # E : chchchchchchchch
|
||||
beq $1, $within_quad # U :
|
||||
nop # E :
|
||||
beq $3, $aligned # U : target is 0mod8
|
||||
|
||||
/*
|
||||
* Target address is misaligned, and won't fit within a quadword.
|
||||
*/
|
||||
ldq_u $4, 0($16) # L : Fetch first partial
|
||||
mov $16, $5 # E : Save the address
|
||||
insql $17, $16, $2 # U : Insert new bytes
|
||||
subq $3, 8, $3 # E : Invert (for addressing uses)
|
||||
|
||||
addq $18, $3, $18 # E : $18 is new count ($3 is negative)
|
||||
mskql $4, $16, $4 # U : clear relevant parts of the quad
|
||||
subq $16, $3, $16 # E : $16 is new aligned destination
|
||||
or $2, $4, $1 # E : Final bytes
|
||||
|
||||
nop
|
||||
stq_u $1,0($5) # L : Store result
|
||||
nop
|
||||
nop
|
||||
|
||||
.align 4
|
||||
$aligned:
|
||||
/*
|
||||
* We are now guaranteed to be quad aligned, with at least
|
||||
* one partial quad to write.
|
||||
*/
|
||||
|
||||
sra $18, 3, $3 # U : Number of remaining quads to write
|
||||
and $18, 7, $18 # E : Number of trailing bytes to write
|
||||
mov $16, $5 # E : Save dest address
|
||||
beq $3, $no_quad # U : tail stuff only
|
||||
|
||||
/*
|
||||
* It's worth the effort to unroll this and use wh64 if possible.
|
||||
* At this point, entry values are:
|
||||
* $16 Current destination address
|
||||
* $5 A copy of $16
|
||||
* $6 The max quadword address to write to
|
||||
* $18 Number trailer bytes
|
||||
* $3 Number quads to write
|
||||
*/
|
||||
|
||||
and $16, 0x3f, $2 # E : Forward work (only useful for unrolled loop)
|
||||
subq $3, 16, $4 # E : Only try to unroll if > 128 bytes
|
||||
subq $2, 0x40, $1 # E : bias counter (aligning stuff 0mod64)
|
||||
blt $4, $loop # U :
|
||||
|
||||
/*
|
||||
* We know we've got at least 16 quads, minimum of one trip
|
||||
* through unrolled loop. Do a quad at a time to get us 0mod64
|
||||
* aligned.
|
||||
*/
|
||||
|
||||
nop # E :
|
||||
nop # E :
|
||||
nop # E :
|
||||
beq $1, $bigalign # U :
|
||||
|
||||
$alignmod64:
|
||||
stq $17, 0($5) # L :
|
||||
subq $3, 1, $3 # E : For consistency later
|
||||
addq $1, 8, $1 # E : Increment towards zero for alignment
|
||||
addq $5, 8, $4 # E : Initial wh64 address (filler instruction)
|
||||
|
||||
nop
|
||||
nop
|
||||
addq $5, 8, $5 # E : Inc address
|
||||
blt $1, $alignmod64 # U :
|
||||
|
||||
$bigalign:
|
||||
/*
|
||||
* $3 - number quads left to go
|
||||
* $5 - target address (aligned 0mod64)
|
||||
* $17 - mask of stuff to store
|
||||
* Scratch registers available: $7, $2, $4, $1
|
||||
* We know that we'll be taking a minimum of one trip through.
|
||||
* CWG Section 3.7.6: do not expect a sustained store rate of > 1/cycle
|
||||
* Assumes the wh64 needs to be for 2 trips through the loop in the future.
|
||||
* The wh64 is issued on for the starting destination address for trip +2
|
||||
* through the loop, and if there are less than two trips left, the target
|
||||
* address will be for the current trip.
|
||||
*/
|
||||
|
||||
$do_wh64:
|
||||
wh64 ($4) # L1 : memory subsystem write hint
|
||||
subq $3, 24, $2 # E : For determining future wh64 addresses
|
||||
stq $17, 0($5) # L :
|
||||
nop # E :
|
||||
|
||||
addq $5, 128, $4 # E : speculative target of next wh64
|
||||
stq $17, 8($5) # L :
|
||||
stq $17, 16($5) # L :
|
||||
addq $5, 64, $7 # E : Fallback address for wh64 (== next trip addr)
|
||||
|
||||
stq $17, 24($5) # L :
|
||||
stq $17, 32($5) # L :
|
||||
cmovlt $2, $7, $4 # E : Latency 2, extra mapping cycle
|
||||
nop
|
||||
|
||||
stq $17, 40($5) # L :
|
||||
stq $17, 48($5) # L :
|
||||
subq $3, 16, $2 # E : Repeat the loop at least once more?
|
||||
nop
|
||||
|
||||
stq $17, 56($5) # L :
|
||||
addq $5, 64, $5 # E :
|
||||
subq $3, 8, $3 # E :
|
||||
bge $2, $do_wh64 # U :
|
||||
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
beq $3, $no_quad # U : Might have finished already
|
||||
|
||||
.align 4
|
||||
/*
|
||||
* Simple loop for trailing quadwords, or for small amounts
|
||||
* of data (where we can't use an unrolled loop and wh64)
|
||||
*/
|
||||
$loop:
|
||||
stq $17, 0($5) # L :
|
||||
subq $3, 1, $3 # E : Decrement number quads left
|
||||
addq $5, 8, $5 # E : Inc address
|
||||
bne $3, $loop # U : more?
|
||||
|
||||
$no_quad:
|
||||
/*
|
||||
* Write 0..7 trailing bytes.
|
||||
*/
|
||||
nop # E :
|
||||
beq $18, $end # U : All done?
|
||||
ldq $7, 0($5) # L :
|
||||
mskqh $7, $6, $2 # U : Mask final quad
|
||||
|
||||
insqh $17, $6, $4 # U : New bits
|
||||
or $2, $4, $1 # E : Put it all together
|
||||
stq $1, 0($5) # L : And back to memory
|
||||
ret $31,($26),1 # L0 :
|
||||
|
||||
$within_quad:
|
||||
ldq_u $1, 0($16) # L :
|
||||
insql $17, $16, $2 # U : New bits
|
||||
mskql $1, $16, $4 # U : Clear old
|
||||
or $2, $4, $2 # E : New result
|
||||
|
||||
mskql $2, $6, $4 # U :
|
||||
mskqh $1, $6, $2 # U :
|
||||
or $2, $4, $1 # E :
|
||||
stq_u $1, 0($16) # L :
|
||||
|
||||
$end:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
ret $31,($26),1 # L0 :
|
||||
|
||||
END(memset)
|
||||
libc_hidden_builtin_def (memset)
|
314
ports/sysdeps/alpha/alphaev6/stxcpy.S
Normal file
314
ports/sysdeps/alpha/alphaev6/stxcpy.S
Normal file
@ -0,0 +1,314 @@
|
||||
/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@tamu.edu)
|
||||
EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Copy a null-terminated string from SRC to DST.
|
||||
|
||||
This is an internal routine used by strcpy, stpcpy, and strcat.
|
||||
As such, it uses special linkage conventions to make implementation
|
||||
of these public functions more efficient.
|
||||
|
||||
On input:
|
||||
t9 = return address
|
||||
a0 = DST
|
||||
a1 = SRC
|
||||
|
||||
On output:
|
||||
t8 = bitmask (with one bit set) indicating the last byte written
|
||||
a0 = unaligned address of the last *word* written
|
||||
|
||||
Furthermore, v0, a3-a5, t11, and t12 are untouched.
|
||||
*/
|
||||
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noat
|
||||
.set noreorder
|
||||
|
||||
.text
|
||||
.type __stxcpy, @function
|
||||
.globl __stxcpy
|
||||
.usepv __stxcpy, no
|
||||
|
||||
cfi_startproc
|
||||
cfi_return_column (t9)
|
||||
|
||||
/* On entry to this basic block:
|
||||
t0 == the first destination word for masking back in
|
||||
t1 == the first source word. */
|
||||
.align 4
|
||||
stxcpy_aligned:
|
||||
/* Create the 1st output word and detect 0's in the 1st input word. */
|
||||
lda t2, -1 # E : build a mask against false zero
|
||||
mskqh t2, a1, t2 # U : detection in the src word (stall)
|
||||
mskqh t1, a1, t3 # U :
|
||||
ornot t1, t2, t2 # E : (stall)
|
||||
|
||||
mskql t0, a1, t0 # U : assemble the first output word
|
||||
cmpbge zero, t2, t10 # E : bits set iff null found
|
||||
or t0, t3, t1 # E : (stall)
|
||||
bne t10, $a_eos # U : (stall)
|
||||
|
||||
/* On entry to this basic block:
|
||||
t0 == the first destination word for masking back in
|
||||
t1 == a source word not containing a null. */
|
||||
/* Nops here to separate store quads from load quads */
|
||||
|
||||
$a_loop:
|
||||
stq_u t1, 0(a0) # L :
|
||||
addq a0, 8, a0 # E :
|
||||
nop
|
||||
nop
|
||||
|
||||
ldq_u t1, 0(a1) # L : Latency=3
|
||||
addq a1, 8, a1 # E :
|
||||
cmpbge zero, t1, t10 # E : (3 cycle stall)
|
||||
beq t10, $a_loop # U : (stall for t10)
|
||||
|
||||
/* Take care of the final (partial) word store.
|
||||
On entry to this basic block we have:
|
||||
t1 == the source word containing the null
|
||||
t10 == the cmpbge mask that found it. */
|
||||
$a_eos:
|
||||
negq t10, t6 # E : find low bit set
|
||||
and t10, t6, t8 # E : (stall)
|
||||
/* For the sake of the cache, don't read a destination word
|
||||
if we're not going to need it. */
|
||||
and t8, 0x80, t6 # E : (stall)
|
||||
bne t6, 1f # U : (stall)
|
||||
|
||||
/* We're doing a partial word store and so need to combine
|
||||
our source and original destination words. */
|
||||
ldq_u t0, 0(a0) # L : Latency=3
|
||||
subq t8, 1, t6 # E :
|
||||
zapnot t1, t6, t1 # U : clear src bytes >= null (stall)
|
||||
or t8, t6, t10 # E : (stall)
|
||||
|
||||
zap t0, t10, t0 # E : clear dst bytes <= null
|
||||
or t0, t1, t1 # E : (stall)
|
||||
nop
|
||||
nop
|
||||
|
||||
1: stq_u t1, 0(a0) # L :
|
||||
ret (t9) # L0 : Latency=3
|
||||
nop
|
||||
nop
|
||||
|
||||
.align 4
|
||||
__stxcpy:
|
||||
/* Are source and destination co-aligned? */
|
||||
xor a0, a1, t0 # E :
|
||||
unop # E :
|
||||
and t0, 7, t0 # E : (stall)
|
||||
bne t0, $unaligned # U : (stall)
|
||||
|
||||
/* We are co-aligned; take care of a partial first word. */
|
||||
ldq_u t1, 0(a1) # L : load first src word
|
||||
and a0, 7, t0 # E : take care not to load a word ...
|
||||
addq a1, 8, a1 # E :
|
||||
beq t0, stxcpy_aligned # U : ... if we wont need it (stall)
|
||||
|
||||
ldq_u t0, 0(a0) # L :
|
||||
br stxcpy_aligned # L0 : Latency=3
|
||||
nop
|
||||
nop
|
||||
|
||||
|
||||
/* The source and destination are not co-aligned. Align the destination
|
||||
and cope. We have to be very careful about not reading too much and
|
||||
causing a SEGV. */
|
||||
|
||||
.align 4
|
||||
$u_head:
|
||||
/* We know just enough now to be able to assemble the first
|
||||
full source word. We can still find a zero at the end of it
|
||||
that prevents us from outputting the whole thing.
|
||||
|
||||
On entry to this basic block:
|
||||
t0 == the first dest word, for masking back in, if needed else 0
|
||||
t1 == the low bits of the first source word
|
||||
t6 == bytemask that is -1 in dest word bytes */
|
||||
|
||||
ldq_u t2, 8(a1) # L :
|
||||
addq a1, 8, a1 # E :
|
||||
extql t1, a1, t1 # U : (stall on a1)
|
||||
extqh t2, a1, t4 # U : (stall on a1)
|
||||
|
||||
mskql t0, a0, t0 # U :
|
||||
or t1, t4, t1 # E :
|
||||
mskqh t1, a0, t1 # U : (stall on t1)
|
||||
or t0, t1, t1 # E : (stall on t1)
|
||||
|
||||
or t1, t6, t6 # E :
|
||||
cmpbge zero, t6, t10 # E : (stall)
|
||||
lda t6, -1 # E : for masking just below
|
||||
bne t10, $u_final # U : (stall)
|
||||
|
||||
mskql t6, a1, t6 # U : mask out the bits we have
|
||||
or t6, t2, t2 # E : already extracted before (stall)
|
||||
cmpbge zero, t2, t10 # E : testing eos (stall)
|
||||
bne t10, $u_late_head_exit # U : (stall)
|
||||
|
||||
/* Finally, we've got all the stupid leading edge cases taken care
|
||||
of and we can set up to enter the main loop. */
|
||||
|
||||
stq_u t1, 0(a0) # L : store first output word
|
||||
addq a0, 8, a0 # E :
|
||||
extql t2, a1, t0 # U : position ho-bits of lo word
|
||||
ldq_u t2, 8(a1) # U : read next high-order source word
|
||||
|
||||
addq a1, 8, a1 # E :
|
||||
cmpbge zero, t2, t10 # E : (stall for t2)
|
||||
nop # E :
|
||||
bne t10, $u_eos # U : (stall)
|
||||
|
||||
/* Unaligned copy main loop. In order to avoid reading too much,
|
||||
the loop is structured to detect zeros in aligned source words.
|
||||
This has, unfortunately, effectively pulled half of a loop
|
||||
iteration out into the head and half into the tail, but it does
|
||||
prevent nastiness from accumulating in the very thing we want
|
||||
to run as fast as possible.
|
||||
|
||||
On entry to this basic block:
|
||||
t0 == the shifted high-order bits from the previous source word
|
||||
t2 == the unshifted current source word
|
||||
|
||||
We further know that t2 does not contain a null terminator. */
|
||||
|
||||
.align 3
|
||||
$u_loop:
|
||||
extqh t2, a1, t1 # U : extract high bits for current word
|
||||
addq a1, 8, a1 # E : (stall)
|
||||
extql t2, a1, t3 # U : extract low bits for next time (stall)
|
||||
addq a0, 8, a0 # E :
|
||||
|
||||
or t0, t1, t1 # E : current dst word now complete
|
||||
ldq_u t2, 0(a1) # L : Latency=3 load high word for next time
|
||||
stq_u t1, -8(a0) # L : save the current word (stall)
|
||||
mov t3, t0 # E :
|
||||
|
||||
cmpbge zero, t2, t10 # E : test new word for eos
|
||||
beq t10, $u_loop # U : (stall)
|
||||
nop
|
||||
nop
|
||||
|
||||
/* We've found a zero somewhere in the source word we just read.
|
||||
If it resides in the lower half, we have one (probably partial)
|
||||
word to write out, and if it resides in the upper half, we
|
||||
have one full and one partial word left to write out.
|
||||
|
||||
On entry to this basic block:
|
||||
t0 == the shifted high-order bits from the previous source word
|
||||
t2 == the unshifted current source word. */
|
||||
$u_eos:
|
||||
extqh t2, a1, t1 # U :
|
||||
or t0, t1, t1 # E : first (partial) source word complete (stall)
|
||||
cmpbge zero, t1, t10 # E : is the null in this first bit? (stall)
|
||||
bne t10, $u_final # U : (stall)
|
||||
|
||||
$u_late_head_exit:
|
||||
stq_u t1, 0(a0) # L : the null was in the high-order bits
|
||||
addq a0, 8, a0 # E :
|
||||
extql t2, a1, t1 # U :
|
||||
cmpbge zero, t1, t10 # E : (stall)
|
||||
|
||||
/* Take care of a final (probably partial) result word.
|
||||
On entry to this basic block:
|
||||
t1 == assembled source word
|
||||
t10 == cmpbge mask that found the null. */
|
||||
$u_final:
|
||||
negq t10, t6 # E : isolate low bit set
|
||||
and t6, t10, t8 # E : (stall)
|
||||
and t8, 0x80, t6 # E : avoid dest word load if we can (stall)
|
||||
bne t6, 1f # U : (stall)
|
||||
|
||||
ldq_u t0, 0(a0) # E :
|
||||
subq t8, 1, t6 # E :
|
||||
or t6, t8, t10 # E : (stall)
|
||||
zapnot t1, t6, t1 # U : kill source bytes >= null (stall)
|
||||
|
||||
zap t0, t10, t0 # U : kill dest bytes <= null (2 cycle data stall)
|
||||
or t0, t1, t1 # E : (stall)
|
||||
nop
|
||||
nop
|
||||
|
||||
1: stq_u t1, 0(a0) # L :
|
||||
ret (t9) # L0 : Latency=3
|
||||
nop
|
||||
nop
|
||||
|
||||
/* Unaligned copy entry point. */
|
||||
.align 4
|
||||
$unaligned:
|
||||
|
||||
ldq_u t1, 0(a1) # L : load first source word
|
||||
and a0, 7, t4 # E : find dest misalignment
|
||||
and a1, 7, t5 # E : find src misalignment
|
||||
/* Conditionally load the first destination word and a bytemask
|
||||
with 0xff indicating that the destination byte is sacrosanct. */
|
||||
mov zero, t0 # E :
|
||||
|
||||
mov zero, t6 # E :
|
||||
beq t4, 1f # U :
|
||||
ldq_u t0, 0(a0) # L :
|
||||
lda t6, -1 # E :
|
||||
|
||||
mskql t6, a0, t6 # U :
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
1:
|
||||
subq a1, t4, a1 # E : sub dest misalignment from src addr
|
||||
/* If source misalignment is larger than dest misalignment, we need
|
||||
extra startup checks to avoid SEGV. */
|
||||
cmplt t4, t5, t8 # E :
|
||||
beq t8, $u_head # U :
|
||||
lda t2, -1 # E : mask out leading garbage in source
|
||||
|
||||
mskqh t2, t5, t2 # U :
|
||||
ornot t1, t2, t3 # E : (stall)
|
||||
cmpbge zero, t3, t10 # E : is there a zero? (stall)
|
||||
beq t10, $u_head # U : (stall)
|
||||
|
||||
/* At this point we've found a zero in the first partial word of
|
||||
the source. We need to isolate the valid source data and mask
|
||||
it into the original destination data. (Incidentally, we know
|
||||
that we'll need at least one byte of that original dest word.) */
|
||||
|
||||
ldq_u t0, 0(a0) # L :
|
||||
negq t10, t6 # E : build bitmask of bytes <= zero
|
||||
and t6, t10, t8 # E : (stall)
|
||||
and a1, 7, t5 # E :
|
||||
|
||||
subq t8, 1, t6 # E :
|
||||
or t6, t8, t10 # E : (stall)
|
||||
srl t8, t5, t8 # U : adjust final null return value
|
||||
zapnot t2, t10, t2 # U : prepare source word; mirror changes (stall)
|
||||
|
||||
and t1, t2, t1 # E : to source validity mask
|
||||
extql t2, a1, t2 # U :
|
||||
extql t1, a1, t1 # U : (stall)
|
||||
andnot t0, t2, t0 # .. e1 : zero place for source to reside (stall)
|
||||
|
||||
or t0, t1, t1 # e1 : and put it there
|
||||
stq_u t1, 0(a0) # .. e0 : (stall)
|
||||
ret (t9) # e1 :
|
||||
|
||||
cfi_endproc
|
392
ports/sysdeps/alpha/alphaev6/stxncpy.S
Normal file
392
ports/sysdeps/alpha/alphaev6/stxncpy.S
Normal file
@ -0,0 +1,392 @@
|
||||
/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@tamu.edu)
|
||||
EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Copy no more than COUNT bytes of the null-terminated string from
|
||||
SRC to DST.
|
||||
|
||||
This is an internal routine used by strncpy, stpncpy, and strncat.
|
||||
As such, it uses special linkage conventions to make implementation
|
||||
of these public functions more efficient.
|
||||
|
||||
On input:
|
||||
t9 = return address
|
||||
a0 = DST
|
||||
a1 = SRC
|
||||
a2 = COUNT
|
||||
|
||||
Furthermore, COUNT may not be zero.
|
||||
|
||||
On output:
|
||||
t0 = last word written
|
||||
t8 = bitmask (with one bit set) indicating the last byte written
|
||||
t10 = bitmask (with one bit set) indicating the byte position of
|
||||
the end of the range specified by COUNT
|
||||
a0 = unaligned address of the last *word* written
|
||||
a2 = the number of full words left in COUNT
|
||||
|
||||
Furthermore, v0, a3-a5, t11, and t12 are untouched.
|
||||
*/
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noat
|
||||
.set noreorder
|
||||
|
||||
.text
|
||||
.type __stxncpy, @function
|
||||
.globl __stxncpy
|
||||
.usepv __stxncpy, no
|
||||
|
||||
cfi_startproc
|
||||
cfi_return_column (t9)
|
||||
|
||||
/* On entry to this basic block:
|
||||
t0 == the first destination word for masking back in
|
||||
t1 == the first source word. */
|
||||
.align 4
|
||||
stxncpy_aligned:
|
||||
/* Create the 1st output word and detect 0's in the 1st input word. */
|
||||
lda t2, -1 # E : build a mask against false zero
|
||||
mskqh t2, a1, t2 # U : detection in the src word (stall)
|
||||
mskqh t1, a1, t3 # U :
|
||||
ornot t1, t2, t2 # E : (stall)
|
||||
|
||||
mskql t0, a1, t0 # U : assemble the first output word
|
||||
cmpbge zero, t2, t7 # E : bits set iff null found
|
||||
or t0, t3, t0 # E : (stall)
|
||||
beq a2, $a_eoc # U :
|
||||
|
||||
bne t7, $a_eos # U :
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
/* On entry to this basic block:
|
||||
t0 == a source word not containing a null. */
|
||||
|
||||
/*
|
||||
* nops here to:
|
||||
* separate store quads from load quads
|
||||
* limit of 1 bcond/quad to permit training
|
||||
*/
|
||||
$a_loop:
|
||||
stq_u t0, 0(a0) # L :
|
||||
addq a0, 8, a0 # E :
|
||||
subq a2, 1, a2 # E :
|
||||
nop
|
||||
|
||||
ldq_u t0, 0(a1) # L :
|
||||
addq a1, 8, a1 # E :
|
||||
cmpbge zero, t0, t7 # E :
|
||||
beq a2, $a_eoc # U :
|
||||
|
||||
beq t7, $a_loop # U :
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
/* Take care of the final (partial) word store. At this point
|
||||
the end-of-count bit is set in t7 iff it applies.
|
||||
|
||||
On entry to this basic block we have:
|
||||
t0 == the source word containing the null
|
||||
t7 == the cmpbge mask that found it. */
|
||||
$a_eos:
|
||||
negq t7, t8 # E : find low bit set
|
||||
and t7, t8, t8 # E : (stall)
|
||||
/* For the sake of the cache, don't read a destination word
|
||||
if we're not going to need it. */
|
||||
and t8, 0x80, t6 # E : (stall)
|
||||
bne t6, 1f # U : (stall)
|
||||
|
||||
/* We're doing a partial word store and so need to combine
|
||||
our source and original destination words. */
|
||||
ldq_u t1, 0(a0) # L :
|
||||
subq t8, 1, t6 # E :
|
||||
or t8, t6, t7 # E : (stall)
|
||||
zapnot t0, t7, t0 # U : clear src bytes > null (stall)
|
||||
|
||||
zap t1, t7, t1 # .. e1 : clear dst bytes <= null
|
||||
or t0, t1, t0 # e1 : (stall)
|
||||
nop
|
||||
nop
|
||||
|
||||
1: stq_u t0, 0(a0) # L :
|
||||
ret (t9) # L0 : Latency=3
|
||||
nop
|
||||
nop
|
||||
|
||||
/* Add the end-of-count bit to the eos detection bitmask. */
|
||||
$a_eoc:
|
||||
or t10, t7, t7 # E :
|
||||
br $a_eos # L0 : Latency=3
|
||||
nop
|
||||
nop
|
||||
|
||||
.align 4
|
||||
__stxncpy:
|
||||
/* Are source and destination co-aligned? */
|
||||
lda t2, -1 # E :
|
||||
xor a0, a1, t1 # E :
|
||||
and a0, 7, t0 # E : find dest misalignment
|
||||
nop # E :
|
||||
|
||||
srl t2, 1, t2 # U :
|
||||
and t1, 7, t1 # E :
|
||||
cmovlt a2, t2, a2 # E : bound count to LONG_MAX (stall)
|
||||
nop # E :
|
||||
|
||||
addq a2, t0, a2 # E : bias count by dest misalignment
|
||||
subq a2, 1, a2 # E : (stall)
|
||||
and a2, 7, t2 # E : (stall)
|
||||
lda t10, 1 # E :
|
||||
|
||||
srl a2, 3, a2 # U : a2 = loop counter = (count - 1)/8
|
||||
sll t10, t2, t10 # U : t10 = bitmask of last count byte
|
||||
nop # E :
|
||||
bne t1, $unaligned # U : (stall)
|
||||
|
||||
/* We are co-aligned; take care of a partial first word. */
|
||||
ldq_u t1, 0(a1) # L : load first src word
|
||||
addq a1, 8, a1 # E :
|
||||
beq t0, stxncpy_aligned # U : avoid loading dest word if not needed
|
||||
ldq_u t0, 0(a0) # L :
|
||||
|
||||
br stxncpy_aligned # U :
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
|
||||
|
||||
/* The source and destination are not co-aligned. Align the destination
|
||||
and cope. We have to be very careful about not reading too much and
|
||||
causing a SEGV. */
|
||||
|
||||
.align 4
|
||||
$u_head:
|
||||
/* We know just enough now to be able to assemble the first
|
||||
full source word. We can still find a zero at the end of it
|
||||
that prevents us from outputting the whole thing.
|
||||
|
||||
On entry to this basic block:
|
||||
t0 == the first dest word, unmasked
|
||||
t1 == the shifted low bits of the first source word
|
||||
t6 == bytemask that is -1 in dest word bytes */
|
||||
|
||||
ldq_u t2, 8(a1) # L : Latency=3 load second src word
|
||||
addq a1, 8, a1 # E :
|
||||
mskql t0, a0, t0 # U : mask trailing garbage in dst
|
||||
extqh t2, a1, t4 # U : (3 cycle stall on t2)
|
||||
|
||||
or t1, t4, t1 # E : first aligned src word complete (stall)
|
||||
mskqh t1, a0, t1 # U : mask leading garbage in src (stall)
|
||||
or t0, t1, t0 # E : first output word complete (stall)
|
||||
or t0, t6, t6 # E : mask original data for zero test (stall)
|
||||
|
||||
cmpbge zero, t6, t7 # E :
|
||||
beq a2, $u_eocfin # U :
|
||||
lda t6, -1 # E :
|
||||
nop
|
||||
|
||||
bne t7, $u_final # U :
|
||||
mskql t6, a1, t6 # U : mask out bits already seen
|
||||
stq_u t0, 0(a0) # L : store first output word
|
||||
or t6, t2, t2 # E :
|
||||
|
||||
cmpbge zero, t2, t7 # E : find nulls in second partial
|
||||
addq a0, 8, a0 # E :
|
||||
subq a2, 1, a2 # E :
|
||||
bne t7, $u_late_head_exit # U :
|
||||
|
||||
/* Finally, we've got all the stupid leading edge cases taken care
|
||||
of and we can set up to enter the main loop. */
|
||||
extql t2, a1, t1 # U : position hi-bits of lo word
|
||||
beq a2, $u_eoc # U :
|
||||
ldq_u t2, 8(a1) # L : read next high-order source word
|
||||
addq a1, 8, a1 # E :
|
||||
|
||||
extqh t2, a1, t0 # U : position lo-bits of hi word (stall)
|
||||
cmpbge zero, t2, t7 # E :
|
||||
nop
|
||||
bne t7, $u_eos # U :
|
||||
|
||||
/* Unaligned copy main loop. In order to avoid reading too much,
|
||||
the loop is structured to detect zeros in aligned source words.
|
||||
This has, unfortunately, effectively pulled half of a loop
|
||||
iteration out into the head and half into the tail, but it does
|
||||
prevent nastiness from accumulating in the very thing we want
|
||||
to run as fast as possible.
|
||||
|
||||
On entry to this basic block:
|
||||
t0 == the shifted low-order bits from the current source word
|
||||
t1 == the shifted high-order bits from the previous source word
|
||||
t2 == the unshifted current source word
|
||||
|
||||
We further know that t2 does not contain a null terminator. */
|
||||
|
||||
.align 4
|
||||
$u_loop:
|
||||
or t0, t1, t0 # E : current dst word now complete
|
||||
subq a2, 1, a2 # E : decrement word count
|
||||
extql t2, a1, t1 # U : extract high bits for next time
|
||||
addq a0, 8, a0 # E :
|
||||
|
||||
stq_u t0, -8(a0) # L : save the current word
|
||||
beq a2, $u_eoc # U :
|
||||
ldq_u t2, 8(a1) # L : Latency=3 load high word for next time
|
||||
addq a1, 8, a1 # E :
|
||||
|
||||
extqh t2, a1, t0 # U : extract low bits (2 cycle stall)
|
||||
cmpbge zero, t2, t7 # E : test new word for eos
|
||||
nop
|
||||
beq t7, $u_loop # U :
|
||||
|
||||
/* We've found a zero somewhere in the source word we just read.
|
||||
If it resides in the lower half, we have one (probably partial)
|
||||
word to write out, and if it resides in the upper half, we
|
||||
have one full and one partial word left to write out.
|
||||
|
||||
On entry to this basic block:
|
||||
t0 == the shifted low-order bits from the current source word
|
||||
t1 == the shifted high-order bits from the previous source word
|
||||
t2 == the unshifted current source word. */
|
||||
$u_eos:
|
||||
or t0, t1, t0 # E : first (partial) source word complete
|
||||
nop
|
||||
cmpbge zero, t0, t7 # E : is the null in this first bit? (stall)
|
||||
bne t7, $u_final # U : (stall)
|
||||
|
||||
stq_u t0, 0(a0) # L : the null was in the high-order bits
|
||||
addq a0, 8, a0 # E :
|
||||
subq a2, 1, a2 # E :
|
||||
nop
|
||||
|
||||
$u_late_head_exit:
|
||||
extql t2, a1, t0 # U :
|
||||
cmpbge zero, t0, t7 # E :
|
||||
or t7, t10, t6 # E : (stall)
|
||||
cmoveq a2, t6, t7 # E : Latency=2, extra map slot (stall)
|
||||
|
||||
/* Take care of a final (probably partial) result word.
|
||||
On entry to this basic block:
|
||||
t0 == assembled source word
|
||||
t7 == cmpbge mask that found the null. */
|
||||
$u_final:
|
||||
negq t7, t6 # E : isolate low bit set
|
||||
and t6, t7, t8 # E : (stall)
|
||||
and t8, 0x80, t6 # E : avoid dest word load if we can (stall)
|
||||
bne t6, 1f # U : (stall)
|
||||
|
||||
ldq_u t1, 0(a0) # L :
|
||||
subq t8, 1, t6 # E :
|
||||
or t6, t8, t7 # E : (stall)
|
||||
zapnot t0, t7, t0 # U : kill source bytes > null
|
||||
|
||||
zap t1, t7, t1 # U : kill dest bytes <= null
|
||||
or t0, t1, t0 # E : (stall)
|
||||
nop
|
||||
nop
|
||||
|
||||
1: stq_u t0, 0(a0) # L :
|
||||
ret (t9) # L0 : Latency=3
|
||||
|
||||
/* Got to end-of-count before end of string.
|
||||
On entry to this basic block:
|
||||
t1 == the shifted high-order bits from the previous source word */
|
||||
$u_eoc:
|
||||
and a1, 7, t6 # E :
|
||||
sll t10, t6, t6 # U : (stall)
|
||||
and t6, 0xff, t6 # E : (stall)
|
||||
bne t6, 1f # U : (stall)
|
||||
|
||||
ldq_u t2, 8(a1) # L : load final src word
|
||||
nop
|
||||
extqh t2, a1, t0 # U : extract low bits for last word (stall)
|
||||
or t1, t0, t1 # E : (stall)
|
||||
|
||||
1: cmpbge zero, t1, t7 # E :
|
||||
mov t1, t0
|
||||
|
||||
$u_eocfin: # end-of-count, final word
|
||||
or t10, t7, t7 # E :
|
||||
br $u_final # L0 : Latency=3
|
||||
|
||||
/* Unaligned copy entry point. */
|
||||
.align 4
|
||||
$unaligned:
|
||||
|
||||
ldq_u t1, 0(a1) # L : load first source word
|
||||
and a0, 7, t4 # E : find dest misalignment
|
||||
and a1, 7, t5 # E : find src misalignment
|
||||
/* Conditionally load the first destination word and a bytemask
|
||||
with 0xff indicating that the destination byte is sacrosanct. */
|
||||
mov zero, t0 # E :
|
||||
|
||||
mov zero, t6 # E :
|
||||
beq t4, 1f # U :
|
||||
ldq_u t0, 0(a0) # L :
|
||||
lda t6, -1 # E :
|
||||
|
||||
mskql t6, a0, t6 # U :
|
||||
nop
|
||||
nop
|
||||
1: subq a1, t4, a1 # E : sub dest misalignment from src addr
|
||||
|
||||
/* If source misalignment is larger than dest misalignment, we need
|
||||
extra startup checks to avoid SEGV. */
|
||||
|
||||
cmplt t4, t5, t8 # E :
|
||||
extql t1, a1, t1 # U : shift src into place
|
||||
lda t2, -1 # E : for creating masks later
|
||||
beq t8, $u_head # U : (stall)
|
||||
|
||||
mskqh t2, t5, t2 # U : begin src byte validity mask
|
||||
cmpbge zero, t1, t7 # E : is there a zero?
|
||||
extql t2, a1, t2 # U :
|
||||
or t7, t10, t5 # E : test for end-of-count too
|
||||
|
||||
cmpbge zero, t2, t3 # E :
|
||||
cmoveq a2, t5, t7 # E : Latency=2, extra map slot
|
||||
nop # E : keep with cmoveq
|
||||
andnot t7, t3, t7 # E : (stall)
|
||||
|
||||
beq t7, $u_head # U :
|
||||
/* At this point we've found a zero in the first partial word of
|
||||
the source. We need to isolate the valid source data and mask
|
||||
it into the original destination data. (Incidentally, we know
|
||||
that we'll need at least one byte of that original dest word.) */
|
||||
ldq_u t0, 0(a0) # L :
|
||||
negq t7, t6 # E : build bitmask of bytes <= zero
|
||||
mskqh t1, t4, t1 # U :
|
||||
|
||||
and t6, t7, t8 # E :
|
||||
subq t8, 1, t6 # E : (stall)
|
||||
or t6, t8, t7 # E : (stall)
|
||||
zapnot t2, t7, t2 # U : prepare source word; mirror changes (stall)
|
||||
|
||||
zapnot t1, t7, t1 # U : to source validity mask
|
||||
andnot t0, t2, t0 # E : zero place for source to reside
|
||||
or t0, t1, t0 # E : and put it there (stall both t0, t1)
|
||||
stq_u t0, 0(a0) # L : (stall)
|
||||
|
||||
ret (t9) # L0 : Latency=3
|
||||
|
||||
cfi_endproc
|
1
ports/sysdeps/alpha/alphaev67/Implies
Normal file
1
ports/sysdeps/alpha/alphaev67/Implies
Normal file
@ -0,0 +1 @@
|
||||
alpha/alphaev6
|
50
ports/sysdeps/alpha/alphaev67/ffs.S
Normal file
50
ports/sysdeps/alpha/alphaev67/ffs.S
Normal file
@ -0,0 +1,50 @@
|
||||
/* Copyright (C) 2000, 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Finds the first bit set in an integer. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
|
||||
ENTRY(__ffs)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
zap $16, 0xF0, $16
|
||||
cttz $16, $0
|
||||
addq $0, 1, $0
|
||||
cmoveq $16, 0, $0
|
||||
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
ret
|
||||
|
||||
END(__ffs)
|
||||
|
||||
weak_alias (__ffs, ffs)
|
||||
libc_hidden_builtin_def (ffs)
|
44
ports/sysdeps/alpha/alphaev67/ffsll.S
Normal file
44
ports/sysdeps/alpha/alphaev67/ffsll.S
Normal file
@ -0,0 +1,44 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Finds the first bit set in a long. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
ENTRY(ffsl)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
cttz $16, $0
|
||||
addq $0, 1, $0
|
||||
cmoveq $16, 0, $0
|
||||
ret
|
||||
|
||||
END(ffsl)
|
||||
|
||||
weak_extern (ffsl)
|
||||
weak_alias (ffsl, ffsll)
|
1
ports/sysdeps/alpha/alphaev67/fpu/Implies
Normal file
1
ports/sysdeps/alpha/alphaev67/fpu/Implies
Normal file
@ -0,0 +1 @@
|
||||
alpha/alphaev6/fpu
|
92
ports/sysdeps/alpha/alphaev67/rawmemchr.S
Normal file
92
ports/sysdeps/alpha/alphaev67/rawmemchr.S
Normal file
@ -0,0 +1,92 @@
|
||||
/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Return pointer to first occurrence of CH in STR. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
ENTRY(__rawmemchr)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
ldq_u t0, 0(a0) # L : load first quadword Latency=3
|
||||
and a1, 0xff, t3 # E : 00000000000000ch
|
||||
insbl a1, 1, t5 # U : 000000000000ch00
|
||||
insbl a1, 7, a2 # U : ch00000000000000
|
||||
|
||||
insbl t3, 6, a3 # U : 00ch000000000000
|
||||
or t5, t3, a1 # E : 000000000000chch
|
||||
andnot a0, 7, v0 # E : align our loop pointer
|
||||
lda t4, -1 # E : build garbage mask
|
||||
|
||||
mskqh t4, a0, t4 # U : only want relevant part of first quad
|
||||
or a2, a3, a2 # E : chch000000000000
|
||||
inswl a1, 2, t5 # E : 00000000chch0000
|
||||
inswl a1, 4, a3 # E : 0000chch00000000
|
||||
|
||||
or a1, a2, a1 # E : chch00000000chch
|
||||
or a3, t5, t5 # E : 0000chchchch0000
|
||||
cmpbge zero, t4, t4 # E : bits set iff byte is garbage
|
||||
nop # E :
|
||||
|
||||
/* This quad is _very_ serialized. Lots of stalling happens */
|
||||
or t5, a1, a1 # E : chchchchchchchch
|
||||
xor t0, a1, t1 # E : make bytes == c zero
|
||||
cmpbge zero, t1, t0 # E : bits set iff byte == c
|
||||
andnot t0, t4, t0 # E : clear garbage bits
|
||||
|
||||
cttz t0, a2 # U0 : speculative (in case we get a match)
|
||||
nop # E :
|
||||
nop # E :
|
||||
bne t0, $found # U :
|
||||
|
||||
/*
|
||||
* Yuk. This loop is going to stall like crazy waiting for the
|
||||
* data to be loaded. Not much can be done about it unless it's
|
||||
* unrolled multiple times, which is generally unsafe.
|
||||
*/
|
||||
$loop:
|
||||
ldq t0, 8(v0) # L : Latency=3
|
||||
addq v0, 8, v0 # E :
|
||||
xor t0, a1, t1 # E :
|
||||
cmpbge zero, t1, t0 # E : bits set iff byte == c
|
||||
|
||||
cttz t0, a2 # U0 : speculative (in case we get a match)
|
||||
nop # E :
|
||||
nop # E :
|
||||
beq t0, $loop # U :
|
||||
|
||||
$found:
|
||||
negq t0, t1 # E : clear all but least set bit
|
||||
and t0, t1, t0 # E :
|
||||
addq v0, a2, v0 # E : Add in the bit number from above
|
||||
ret # L0 :
|
||||
|
||||
END(__rawmemchr)
|
||||
|
||||
libc_hidden_def (__rawmemchr)
|
||||
weak_alias (__rawmemchr, rawmemchr)
|
53
ports/sysdeps/alpha/alphaev67/stpcpy.S
Normal file
53
ports/sysdeps/alpha/alphaev67/stpcpy.S
Normal file
@ -0,0 +1,53 @@
|
||||
/* Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <rth@redhat.com>.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Copy SRC to DEST returning the address of the terminating 0 in DEST. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
.text
|
||||
|
||||
ENTRY(__stpcpy)
|
||||
ldgp gp, 0(pv)
|
||||
#ifdef PROF
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
.align 4
|
||||
mov a0, v0
|
||||
nop
|
||||
jsr t9, __stxcpy
|
||||
|
||||
# t8 = bitmask (with one bit set) indicating the last byte written
|
||||
# a0 = unaligned address of the last *word* written
|
||||
|
||||
cttz t8, t8
|
||||
andnot a0, 7, a0
|
||||
addq a0, t8, v0
|
||||
ret
|
||||
|
||||
END(__stpcpy)
|
||||
|
||||
weak_alias (__stpcpy, stpcpy)
|
||||
libc_hidden_def (__stpcpy)
|
||||
libc_hidden_builtin_def (stpcpy)
|
115
ports/sysdeps/alpha/alphaev67/stpncpy.S
Normal file
115
ports/sysdeps/alpha/alphaev67/stpncpy.S
Normal file
@ -0,0 +1,115 @@
|
||||
/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@redhat.com)
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Copy no more then N bytes from SRC to DEST, returning the address of
|
||||
the terminating '\0' in DEST. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noat
|
||||
.set noreorder
|
||||
.text
|
||||
|
||||
ENTRY(__stpncpy)
|
||||
ldgp gp, 0(pv)
|
||||
#ifdef PROF
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
mov a0, v0
|
||||
beq a2, $zerocount
|
||||
|
||||
.align 4
|
||||
nop
|
||||
nop
|
||||
jsr t9, __stxncpy # do the work of the copy
|
||||
|
||||
cttz t8, t4
|
||||
zapnot t0, t8, t5
|
||||
andnot a0, 7, a0
|
||||
bne a2, $multiword # do we have full words left?
|
||||
|
||||
subq t8, 1, t2
|
||||
subq t10, 1, t3
|
||||
cmpult zero, t5, t5
|
||||
addq a0, t4, v0
|
||||
|
||||
or t2, t8, t2
|
||||
or t3, t10, t3
|
||||
addq v0, t5, v0
|
||||
andnot t3, t2, t3
|
||||
|
||||
zap t0, t3, t0
|
||||
nop
|
||||
stq t0, 0(a0)
|
||||
ret
|
||||
|
||||
$multiword:
|
||||
subq t8, 1, t7 # clear the final bits in the prev word
|
||||
cmpult zero, t5, t5
|
||||
or t7, t8, t7
|
||||
zapnot t0, t7, t0
|
||||
|
||||
subq a2, 1, a2
|
||||
stq t0, 0(a0)
|
||||
addq a0, 8, a1
|
||||
beq a2, 1f # loop over full words remaining
|
||||
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
blbc a2, 0f
|
||||
|
||||
stq zero, 0(a1)
|
||||
subq a2, 1, a2
|
||||
addq a1, 8, a1
|
||||
beq a2, 1f
|
||||
|
||||
0: stq zero, 0(a1)
|
||||
subq a2, 2, a2
|
||||
nop
|
||||
nop
|
||||
|
||||
stq zero, 8(a1)
|
||||
addq a1, 16, a1
|
||||
nop
|
||||
bne a2, 0b
|
||||
|
||||
1: ldq t0, 0(a1) # clear the leading bits in the final word
|
||||
subq t10, 1, t7
|
||||
addq a0, t4, v0
|
||||
nop
|
||||
|
||||
or t7, t10, t7
|
||||
addq v0, t5, v0
|
||||
zap t0, t7, t0
|
||||
stq t0, 0(a1)
|
||||
|
||||
$zerocount:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
ret
|
||||
|
||||
END(__stpncpy)
|
||||
|
||||
libc_hidden_def (__stpncpy)
|
||||
weak_alias (__stpncpy, stpncpy)
|
61
ports/sysdeps/alpha/alphaev67/strcat.S
Normal file
61
ports/sysdeps/alpha/alphaev67/strcat.S
Normal file
@ -0,0 +1,61 @@
|
||||
/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>, 1996.
|
||||
EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Append a null-terminated string from SRC to DST. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.text
|
||||
|
||||
ENTRY(strcat)
|
||||
ldgp gp, 0(pv)
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
mov $16, $0 # E : set up return value
|
||||
/* Find the end of the string. */
|
||||
ldq_u $1, 0($16) # L : load first quadword (a0 may be misaligned)
|
||||
lda $2, -1 # E :
|
||||
insqh $2, $16, $2 # U :
|
||||
|
||||
andnot $16, 7, $16 # E :
|
||||
or $2, $1, $1 # E :
|
||||
cmpbge $31, $1, $2 # E : bits set iff byte == 0
|
||||
bne $2, $found # U :
|
||||
|
||||
$loop: ldq $1, 8($16) # L :
|
||||
addq $16, 8, $16 # E :
|
||||
cmpbge $31, $1, $2 # E :
|
||||
beq $2, $loop # U :
|
||||
|
||||
$found: cttz $2, $3 # U0 :
|
||||
addq $16, $3, $16 # E :
|
||||
/* Now do the append. */
|
||||
mov $26, $23 # E :
|
||||
jmp $31, __stxcpy # L0 :
|
||||
|
||||
END(strcat)
|
||||
libc_hidden_builtin_def (strcat)
|
100
ports/sysdeps/alpha/alphaev67/strchr.S
Normal file
100
ports/sysdeps/alpha/alphaev67/strchr.S
Normal file
@ -0,0 +1,100 @@
|
||||
/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>, 1996.
|
||||
EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Return the address of a given character within a null-terminated
|
||||
string, or null if it is not found. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
ENTRY(strchr)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
ldq_u t0, 0(a0) # L : load first quadword Latency=3
|
||||
and a1, 0xff, t3 # E : 00000000000000ch
|
||||
insbl a1, 1, t5 # U : 000000000000ch00
|
||||
insbl a1, 7, a2 # U : ch00000000000000
|
||||
|
||||
insbl t3, 6, a3 # U : 00ch000000000000
|
||||
or t5, t3, a1 # E : 000000000000chch
|
||||
andnot a0, 7, v0 # E : align our loop pointer
|
||||
lda t4, -1 # E : build garbage mask
|
||||
|
||||
mskqh t4, a0, t4 # U : only want relevant part of first quad
|
||||
or a2, a3, a2 # E : chch000000000000
|
||||
inswl a1, 2, t5 # E : 00000000chch0000
|
||||
inswl a1, 4, a3 # E : 0000chch00000000
|
||||
|
||||
or a1, a2, a1 # E : chch00000000chch
|
||||
or a3, t5, t5 # E : 0000chchchch0000
|
||||
cmpbge zero, t0, t2 # E : bits set iff byte == zero
|
||||
cmpbge zero, t4, t4 # E : bits set iff byte is garbage
|
||||
|
||||
/* This quad is _very_ serialized. Lots of stalling happens */
|
||||
or t5, a1, a1 # E : chchchchchchchch
|
||||
xor t0, a1, t1 # E : make bytes == c zero
|
||||
cmpbge zero, t1, t3 # E : bits set iff byte == c
|
||||
or t2, t3, t0 # E : bits set iff char match or zero match
|
||||
|
||||
andnot t0, t4, t0 # E : clear garbage bits
|
||||
cttz t0, a2 # U0 : speculative (in case we get a match)
|
||||
nop # E :
|
||||
bne t0, $found # U :
|
||||
|
||||
/*
|
||||
* Yuk. This loop is going to stall like crazy waiting for the
|
||||
* data to be loaded. Not much can be done about it unless it's
|
||||
* unrolled multiple times, which is generally unsafe.
|
||||
*/
|
||||
$loop:
|
||||
ldq t0, 8(v0) # L : Latency=3
|
||||
addq v0, 8, v0 # E :
|
||||
xor t0, a1, t1 # E :
|
||||
cmpbge zero, t0, t2 # E : bits set iff byte == 0
|
||||
|
||||
cmpbge zero, t1, t3 # E : bits set iff byte == c
|
||||
or t2, t3, t0 # E :
|
||||
cttz t3, a2 # U0 : speculative (in case we get a match)
|
||||
beq t0, $loop # U :
|
||||
|
||||
$found:
|
||||
negq t0, t1 # E : clear all but least set bit
|
||||
and t0, t1, t0 # E :
|
||||
and t0, t3, t1 # E : bit set iff byte was the char
|
||||
addq v0, a2, v0 # E : Add in the bit number from above
|
||||
|
||||
cmoveq t1, $31, v0 # E : Two mapping slots, latency = 2
|
||||
nop
|
||||
nop
|
||||
ret # L0 :
|
||||
|
||||
END(strchr)
|
||||
|
||||
weak_alias (strchr, index)
|
||||
libc_hidden_builtin_def (strchr)
|
60
ports/sysdeps/alpha/alphaev67/strlen.S
Normal file
60
ports/sysdeps/alpha/alphaev67/strlen.S
Normal file
@ -0,0 +1,60 @@
|
||||
/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger (davidm@cs.arizona.edu).
|
||||
EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Finds length of a 0-terminated string. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
ENTRY(strlen)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
ldq_u $1, 0($16) # L : load first quadword ($16 may be misaligned)
|
||||
lda $2, -1($31) # E :
|
||||
insqh $2, $16, $2 # U :
|
||||
andnot $16, 7, $0 # E :
|
||||
|
||||
or $2, $1, $1 # E :
|
||||
cmpbge $31, $1, $2 # E : $2 <- bitmask: bit i == 1 <==> i-th byte == 0
|
||||
nop # E :
|
||||
bne $2, $found # U :
|
||||
|
||||
$loop: ldq $1, 8($0) # L :
|
||||
addq $0, 8, $0 # E : addr += 8
|
||||
cmpbge $31, $1, $2 # E :
|
||||
beq $2, $loop # U :
|
||||
|
||||
$found:
|
||||
cttz $2, $3 # U0 :
|
||||
addq $0, $3, $0 # E :
|
||||
subq $0, $16, $0 # E :
|
||||
ret $31, ($26) # L0 :
|
||||
|
||||
END(strlen)
|
||||
libc_hidden_builtin_def (strlen)
|
87
ports/sysdeps/alpha/alphaev67/strncat.S
Normal file
87
ports/sysdeps/alpha/alphaev67/strncat.S
Normal file
@ -0,0 +1,87 @@
|
||||
/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>, 1996.
|
||||
EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Append no more than COUNT characters from the null-terminated string SRC
|
||||
to the null-terminated string DST. Always null-terminate the new DST. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.text
|
||||
|
||||
ENTRY(strncat)
|
||||
ldgp gp, 0(pv)
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
mov a0, v0 # set up return value
|
||||
beq a2, $zerocount # U :
|
||||
/* Find the end of the string. */
|
||||
ldq_u t0, 0(a0) # L : load first quadword (a0 may be misaligned)
|
||||
lda t1, -1 # E :
|
||||
|
||||
insqh t1, v0, t1 # U :
|
||||
andnot a0, 7, a0 # E :
|
||||
nop # E :
|
||||
or t1, t0, t0 # E :
|
||||
|
||||
nop # E :
|
||||
nop # E :
|
||||
cmpbge zero, t0, t1 # E : bits set iff byte == 0
|
||||
bne t1, $found # U :
|
||||
|
||||
$loop: ldq t0, 8(a0) # L :
|
||||
addq a0, 8, a0 # E :
|
||||
cmpbge zero, t0, t1 # E :
|
||||
beq t1, $loop # U :
|
||||
|
||||
$found: cttz t1, t2 # U0 :
|
||||
addq a0, t2, a0 # E :
|
||||
jsr t9, __stxncpy # L0 : Now do the append.
|
||||
|
||||
/* Worry about the null termination. */
|
||||
|
||||
cttz t10, t2 # U0: byte offset of end-of-count.
|
||||
bic a0, 7, a0 # E : word align the last write address.
|
||||
zapnot t0, t8, t1 # U : was last byte a null?
|
||||
nop # E :
|
||||
|
||||
bne t1, 0f # U :
|
||||
nop # E :
|
||||
nop # E :
|
||||
ret # L0 :
|
||||
|
||||
0: addq t2, a0, a0 # E : address of end-of-count
|
||||
stb zero, 1(a0) # L :
|
||||
nop # E :
|
||||
ret # L0 :
|
||||
|
||||
$zerocount:
|
||||
nop # E :
|
||||
nop # E :
|
||||
nop # E :
|
||||
ret # L0 :
|
||||
|
||||
END(strncat)
|
116
ports/sysdeps/alpha/alphaev67/strrchr.S
Normal file
116
ports/sysdeps/alpha/alphaev67/strrchr.S
Normal file
@ -0,0 +1,116 @@
|
||||
/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
|
||||
EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Return the address of the last occurrence of a given character
|
||||
within a null-terminated string, or null if it is not found. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
ENTRY(strrchr)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
and a1, 0xff, t2 # E : 00000000000000ch
|
||||
insbl a1, 1, t4 # U : 000000000000ch00
|
||||
insbl a1, 2, t5 # U : 0000000000ch0000
|
||||
ldq_u t0, 0(a0) # L : load first quadword Latency=3
|
||||
|
||||
mov zero, t6 # E : t6 is last match aligned addr
|
||||
or t2, t4, a1 # E : 000000000000chch
|
||||
sll t5, 8, t3 # U : 00000000ch000000
|
||||
mov zero, t8 # E : t8 is last match byte compare mask
|
||||
|
||||
andnot a0, 7, v0 # E : align source addr
|
||||
or t5, t3, t3 # E : 00000000chch0000
|
||||
sll a1, 32, t2 # U : 0000chch00000000
|
||||
sll a1, 48, t4 # U : chch000000000000
|
||||
|
||||
or t4, a1, a1 # E : chch00000000chch
|
||||
or t2, t3, t2 # E : 0000chchchch0000
|
||||
or a1, t2, a1 # E : chchchchchchchch
|
||||
lda t5, -1 # E : build garbage mask
|
||||
|
||||
cmpbge zero, t0, t1 # E : bits set iff byte == zero
|
||||
mskqh t5, a0, t4 # E : Complete garbage mask
|
||||
xor t0, a1, t2 # E : make bytes == c zero
|
||||
cmpbge zero, t4, t4 # E : bits set iff byte is garbage
|
||||
|
||||
cmpbge zero, t2, t3 # E : bits set iff byte == c
|
||||
andnot t1, t4, t1 # E : clear garbage from null test
|
||||
andnot t3, t4, t3 # E : clear garbage from char test
|
||||
bne t1, $eos # U : did we already hit the terminator?
|
||||
|
||||
/* Character search main loop */
|
||||
$loop:
|
||||
ldq t0, 8(v0) # L : load next quadword
|
||||
cmovne t3, v0, t6 # E : save previous comparisons match
|
||||
nop # : Latency=2, extra map slot (keep nop with cmov)
|
||||
nop
|
||||
|
||||
cmovne t3, t3, t8 # E : Latency=2, extra map slot
|
||||
nop # : keep with cmovne
|
||||
addq v0, 8, v0 # E :
|
||||
xor t0, a1, t2 # E :
|
||||
|
||||
cmpbge zero, t0, t1 # E : bits set iff byte == zero
|
||||
cmpbge zero, t2, t3 # E : bits set iff byte == c
|
||||
beq t1, $loop # U : if we havnt seen a null, loop
|
||||
nop
|
||||
|
||||
/* Mask out character matches after terminator */
|
||||
$eos:
|
||||
negq t1, t4 # E : isolate first null byte match
|
||||
and t1, t4, t4 # E :
|
||||
subq t4, 1, t5 # E : build a mask of the bytes upto...
|
||||
or t4, t5, t4 # E : ... and including the null
|
||||
|
||||
and t3, t4, t3 # E : mask out char matches after null
|
||||
cmovne t3, t3, t8 # E : save it, if match found Latency=2, extra map slot
|
||||
nop # : Keep with cmovne
|
||||
nop
|
||||
|
||||
cmovne t3, v0, t6 # E :
|
||||
nop # : Keep with cmovne
|
||||
/* Locate the address of the last matched character */
|
||||
ctlz t8, t2 # U0 : Latency=3 (0x40 for t8=0)
|
||||
nop
|
||||
|
||||
cmoveq t8, 0x3f, t2 # E : Compensate for case when no match is seen
|
||||
nop # E : hide the cmov latency (2) behind ctlz latency
|
||||
lda t5, 0x3f($31) # E :
|
||||
subq t5, t2, t5 # E : Normalize leading zero count
|
||||
|
||||
addq t6, t5, v0 # E : and add to quadword address
|
||||
ret # L0 : Latency=3
|
||||
nop
|
||||
nop
|
||||
|
||||
END(strrchr)
|
||||
|
||||
weak_alias (strrchr, rindex)
|
||||
libc_hidden_builtin_def (strrchr)
|
1
ports/sysdeps/alpha/backtrace.c
Normal file
1
ports/sysdeps/alpha/backtrace.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/x86_64/backtrace.c>
|
86
ports/sysdeps/alpha/bb_init_func.S
Normal file
86
ports/sysdeps/alpha/bb_init_func.S
Normal file
@ -0,0 +1,86 @@
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger (davidm@cs.arizona.edu).
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* __bb_init_func is invoked at the beginning of each function, before
|
||||
any registers have been saved. It is therefore safe to use any
|
||||
caller-saved (call-used) registers (except for argument registers
|
||||
a1-a5). */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
/*
|
||||
* These offsets should match with "struct bb" declared in gcc/libgcc2.c.
|
||||
*/
|
||||
#define ZERO_WORD 0x00
|
||||
#define NEXT 0x20
|
||||
|
||||
.set noat
|
||||
.set noreorder
|
||||
|
||||
ENTRY(__bb_init_func)
|
||||
.prologue 0
|
||||
|
||||
ldq t0, ZERO_WORD(a0) /* t0 <- blocks->zero_word */
|
||||
beq t0, init /* not initialized yet -> */
|
||||
ret
|
||||
|
||||
END(__bb_init_func)
|
||||
|
||||
.ent init
|
||||
init:
|
||||
.frame sp, 0x38, ra, 0
|
||||
subq sp, 0x38, sp
|
||||
.prologue 0
|
||||
|
||||
stq pv, 0x30(sp)
|
||||
br pv, 1f
|
||||
1: ldgp gp, 0(pv)
|
||||
|
||||
ldiq t1, __bb_head
|
||||
lda t3, _gmonparam
|
||||
ldq t2, 0(t1)
|
||||
ldl t3, 0(t3) /* t3 = _gmonparam.state */
|
||||
lda t0, 1
|
||||
stq t0, ZERO_WORD(a0) /* blocks->zero_word = 1 */
|
||||
stq t2, NEXT(a0) /* blocks->next = __bb_head */
|
||||
stq a0, 0(t1)
|
||||
bne t2, $leave
|
||||
beq t3, $leave /* t3 == GMON_PROF_ON? yes -> */
|
||||
|
||||
/* also need to initialize destructor: */
|
||||
stq ra, 0x00(sp)
|
||||
lda a0, __bb_exit_func
|
||||
stq a1, 0x08(sp)
|
||||
lda pv, atexit
|
||||
stq a2, 0x10(sp)
|
||||
stq a3, 0x18(sp)
|
||||
stq a4, 0x20(sp)
|
||||
stq a5, 0x28(sp)
|
||||
jsr ra, (pv), atexit
|
||||
ldq ra, 0x00(sp)
|
||||
ldq a1, 0x08(sp)
|
||||
ldq a2, 0x10(sp)
|
||||
ldq a3, 0x18(sp)
|
||||
ldq a4, 0x20(sp)
|
||||
ldq a5, 0x28(sp)
|
||||
|
||||
$leave: ldq pv, 0x30(sp)
|
||||
addq sp, 0x38, sp
|
||||
ret
|
||||
|
||||
.end init
|
368
ports/sysdeps/alpha/bits/atomic.h
Normal file
368
ports/sysdeps/alpha/bits/atomic.h
Normal file
@ -0,0 +1,368 @@
|
||||
/* Copyright (C) 2003, 2010 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef int8_t atomic8_t;
|
||||
typedef uint8_t uatomic8_t;
|
||||
typedef int_fast8_t atomic_fast8_t;
|
||||
typedef uint_fast8_t uatomic_fast8_t;
|
||||
|
||||
typedef int16_t atomic16_t;
|
||||
typedef uint16_t uatomic16_t;
|
||||
typedef int_fast16_t atomic_fast16_t;
|
||||
typedef uint_fast16_t uatomic_fast16_t;
|
||||
|
||||
typedef int32_t atomic32_t;
|
||||
typedef uint32_t uatomic32_t;
|
||||
typedef int_fast32_t atomic_fast32_t;
|
||||
typedef uint_fast32_t uatomic_fast32_t;
|
||||
|
||||
typedef int64_t atomic64_t;
|
||||
typedef uint64_t uatomic64_t;
|
||||
typedef int_fast64_t atomic_fast64_t;
|
||||
typedef uint_fast64_t uatomic_fast64_t;
|
||||
|
||||
typedef intptr_t atomicptr_t;
|
||||
typedef uintptr_t uatomicptr_t;
|
||||
typedef intmax_t atomic_max_t;
|
||||
typedef uintmax_t uatomic_max_t;
|
||||
|
||||
|
||||
#ifdef UP
|
||||
# define __MB /* nothing */
|
||||
#else
|
||||
# define __MB " mb\n"
|
||||
#endif
|
||||
|
||||
|
||||
/* Compare and exchange. For all of the "xxx" routines, we expect a
|
||||
"__prev" and a "__cmp" variable to be provided by the enclosing scope,
|
||||
in which values are returned. */
|
||||
|
||||
#define __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2) \
|
||||
({ \
|
||||
unsigned long __tmp, __snew, __addr64; \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
" andnot %[__addr8],7,%[__addr64]\n" \
|
||||
" insbl %[__new],%[__addr8],%[__snew]\n" \
|
||||
"1: ldq_l %[__tmp],0(%[__addr64])\n" \
|
||||
" extbl %[__tmp],%[__addr8],%[__prev]\n" \
|
||||
" cmpeq %[__prev],%[__old],%[__cmp]\n" \
|
||||
" beq %[__cmp],2f\n" \
|
||||
" mskbl %[__tmp],%[__addr8],%[__tmp]\n" \
|
||||
" or %[__snew],%[__tmp],%[__tmp]\n" \
|
||||
" stq_c %[__tmp],0(%[__addr64])\n" \
|
||||
" beq %[__tmp],1b\n" \
|
||||
mb2 \
|
||||
"2:" \
|
||||
: [__prev] "=&r" (__prev), \
|
||||
[__snew] "=&r" (__snew), \
|
||||
[__tmp] "=&r" (__tmp), \
|
||||
[__cmp] "=&r" (__cmp), \
|
||||
[__addr64] "=&r" (__addr64) \
|
||||
: [__addr8] "r" (mem), \
|
||||
[__old] "Ir" ((uint64_t)(uint8_t)(uint64_t)(old)), \
|
||||
[__new] "r" (new) \
|
||||
: "memory"); \
|
||||
})
|
||||
|
||||
#define __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2) \
|
||||
({ \
|
||||
unsigned long __tmp, __snew, __addr64; \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
" andnot %[__addr16],7,%[__addr64]\n" \
|
||||
" inswl %[__new],%[__addr16],%[__snew]\n" \
|
||||
"1: ldq_l %[__tmp],0(%[__addr64])\n" \
|
||||
" extwl %[__tmp],%[__addr16],%[__prev]\n" \
|
||||
" cmpeq %[__prev],%[__old],%[__cmp]\n" \
|
||||
" beq %[__cmp],2f\n" \
|
||||
" mskwl %[__tmp],%[__addr16],%[__tmp]\n" \
|
||||
" or %[__snew],%[__tmp],%[__tmp]\n" \
|
||||
" stq_c %[__tmp],0(%[__addr64])\n" \
|
||||
" beq %[__tmp],1b\n" \
|
||||
mb2 \
|
||||
"2:" \
|
||||
: [__prev] "=&r" (__prev), \
|
||||
[__snew] "=&r" (__snew), \
|
||||
[__tmp] "=&r" (__tmp), \
|
||||
[__cmp] "=&r" (__cmp), \
|
||||
[__addr64] "=&r" (__addr64) \
|
||||
: [__addr16] "r" (mem), \
|
||||
[__old] "Ir" ((uint64_t)(uint16_t)(uint64_t)(old)), \
|
||||
[__new] "r" (new) \
|
||||
: "memory"); \
|
||||
})
|
||||
|
||||
#define __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2) \
|
||||
({ \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
"1: ldl_l %[__prev],%[__mem]\n" \
|
||||
" cmpeq %[__prev],%[__old],%[__cmp]\n" \
|
||||
" beq %[__cmp],2f\n" \
|
||||
" mov %[__new],%[__cmp]\n" \
|
||||
" stl_c %[__cmp],%[__mem]\n" \
|
||||
" beq %[__cmp],1b\n" \
|
||||
mb2 \
|
||||
"2:" \
|
||||
: [__prev] "=&r" (__prev), \
|
||||
[__cmp] "=&r" (__cmp) \
|
||||
: [__mem] "m" (*(mem)), \
|
||||
[__old] "Ir" ((uint64_t)(atomic32_t)(uint64_t)(old)), \
|
||||
[__new] "Ir" (new) \
|
||||
: "memory"); \
|
||||
})
|
||||
|
||||
#define __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2) \
|
||||
({ \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
"1: ldq_l %[__prev],%[__mem]\n" \
|
||||
" cmpeq %[__prev],%[__old],%[__cmp]\n" \
|
||||
" beq %[__cmp],2f\n" \
|
||||
" mov %[__new],%[__cmp]\n" \
|
||||
" stq_c %[__cmp],%[__mem]\n" \
|
||||
" beq %[__cmp],1b\n" \
|
||||
mb2 \
|
||||
"2:" \
|
||||
: [__prev] "=&r" (__prev), \
|
||||
[__cmp] "=&r" (__cmp) \
|
||||
: [__mem] "m" (*(mem)), \
|
||||
[__old] "Ir" ((uint64_t)(old)), \
|
||||
[__new] "Ir" (new) \
|
||||
: "memory"); \
|
||||
})
|
||||
|
||||
/* For all "bool" routines, we return FALSE if exchange succesful. */
|
||||
|
||||
#define __arch_compare_and_exchange_bool_8_int(mem, new, old, mb1, mb2) \
|
||||
({ unsigned long __prev; int __cmp; \
|
||||
__arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \
|
||||
!__cmp; })
|
||||
|
||||
#define __arch_compare_and_exchange_bool_16_int(mem, new, old, mb1, mb2) \
|
||||
({ unsigned long __prev; int __cmp; \
|
||||
__arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \
|
||||
!__cmp; })
|
||||
|
||||
#define __arch_compare_and_exchange_bool_32_int(mem, new, old, mb1, mb2) \
|
||||
({ unsigned long __prev; int __cmp; \
|
||||
__arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \
|
||||
!__cmp; })
|
||||
|
||||
#define __arch_compare_and_exchange_bool_64_int(mem, new, old, mb1, mb2) \
|
||||
({ unsigned long __prev; int __cmp; \
|
||||
__arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \
|
||||
!__cmp; })
|
||||
|
||||
/* For all "val" routines, return the old value whether exchange
|
||||
successful or not. */
|
||||
|
||||
#define __arch_compare_and_exchange_val_8_int(mem, new, old, mb1, mb2) \
|
||||
({ unsigned long __prev; int __cmp; \
|
||||
__arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \
|
||||
(typeof (*mem))__prev; })
|
||||
|
||||
#define __arch_compare_and_exchange_val_16_int(mem, new, old, mb1, mb2) \
|
||||
({ unsigned long __prev; int __cmp; \
|
||||
__arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \
|
||||
(typeof (*mem))__prev; })
|
||||
|
||||
#define __arch_compare_and_exchange_val_32_int(mem, new, old, mb1, mb2) \
|
||||
({ unsigned long __prev; int __cmp; \
|
||||
__arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \
|
||||
(typeof (*mem))__prev; })
|
||||
|
||||
#define __arch_compare_and_exchange_val_64_int(mem, new, old, mb1, mb2) \
|
||||
({ unsigned long __prev; int __cmp; \
|
||||
__arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \
|
||||
(typeof (*mem))__prev; })
|
||||
|
||||
/* Compare and exchange with "acquire" semantics, ie barrier after. */
|
||||
|
||||
#define atomic_compare_and_exchange_bool_acq(mem, new, old) \
|
||||
__atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \
|
||||
mem, new, old, "", __MB)
|
||||
|
||||
#define atomic_compare_and_exchange_val_acq(mem, new, old) \
|
||||
__atomic_val_bysize (__arch_compare_and_exchange_val, int, \
|
||||
mem, new, old, "", __MB)
|
||||
|
||||
/* Compare and exchange with "release" semantics, ie barrier before. */
|
||||
|
||||
#define atomic_compare_and_exchange_bool_rel(mem, new, old) \
|
||||
__atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \
|
||||
mem, new, old, __MB, "")
|
||||
|
||||
#define atomic_compare_and_exchange_val_rel(mem, new, old) \
|
||||
__atomic_val_bysize (__arch_compare_and_exchange_val, int, \
|
||||
mem, new, old, __MB, "")
|
||||
|
||||
|
||||
/* Atomically store value and return the previous value. */
|
||||
|
||||
#define __arch_exchange_8_int(mem, value, mb1, mb2) \
|
||||
({ \
|
||||
unsigned long __tmp, __addr64, __sval; __typeof(*mem) __ret; \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
" andnot %[__addr8],7,%[__addr64]\n" \
|
||||
" insbl %[__value],%[__addr8],%[__sval]\n" \
|
||||
"1: ldq_l %[__tmp],0(%[__addr64])\n" \
|
||||
" extbl %[__tmp],%[__addr8],%[__ret]\n" \
|
||||
" mskbl %[__tmp],%[__addr8],%[__tmp]\n" \
|
||||
" or %[__sval],%[__tmp],%[__tmp]\n" \
|
||||
" stq_c %[__tmp],0(%[__addr64])\n" \
|
||||
" beq %[__tmp],1b\n" \
|
||||
mb2 \
|
||||
: [__ret] "=&r" (__ret), \
|
||||
[__sval] "=&r" (__sval), \
|
||||
[__tmp] "=&r" (__tmp), \
|
||||
[__addr64] "=&r" (__addr64) \
|
||||
: [__addr8] "r" (mem), \
|
||||
[__value] "r" (value) \
|
||||
: "memory"); \
|
||||
__ret; })
|
||||
|
||||
#define __arch_exchange_16_int(mem, value, mb1, mb2) \
|
||||
({ \
|
||||
unsigned long __tmp, __addr64, __sval; __typeof(*mem) __ret; \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
" andnot %[__addr16],7,%[__addr64]\n" \
|
||||
" inswl %[__value],%[__addr16],%[__sval]\n" \
|
||||
"1: ldq_l %[__tmp],0(%[__addr64])\n" \
|
||||
" extwl %[__tmp],%[__addr16],%[__ret]\n" \
|
||||
" mskwl %[__tmp],%[__addr16],%[__tmp]\n" \
|
||||
" or %[__sval],%[__tmp],%[__tmp]\n" \
|
||||
" stq_c %[__tmp],0(%[__addr64])\n" \
|
||||
" beq %[__tmp],1b\n" \
|
||||
mb2 \
|
||||
: [__ret] "=&r" (__ret), \
|
||||
[__sval] "=&r" (__sval), \
|
||||
[__tmp] "=&r" (__tmp), \
|
||||
[__addr64] "=&r" (__addr64) \
|
||||
: [__addr16] "r" (mem), \
|
||||
[__value] "r" (value) \
|
||||
: "memory"); \
|
||||
__ret; })
|
||||
|
||||
#define __arch_exchange_32_int(mem, value, mb1, mb2) \
|
||||
({ \
|
||||
signed int __tmp; __typeof(*mem) __ret; \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
"1: ldl_l %[__ret],%[__mem]\n" \
|
||||
" mov %[__val],%[__tmp]\n" \
|
||||
" stl_c %[__tmp],%[__mem]\n" \
|
||||
" beq %[__tmp],1b\n" \
|
||||
mb2 \
|
||||
: [__ret] "=&r" (__ret), \
|
||||
[__tmp] "=&r" (__tmp) \
|
||||
: [__mem] "m" (*(mem)), \
|
||||
[__val] "Ir" (value) \
|
||||
: "memory"); \
|
||||
__ret; })
|
||||
|
||||
#define __arch_exchange_64_int(mem, value, mb1, mb2) \
|
||||
({ \
|
||||
unsigned long __tmp; __typeof(*mem) __ret; \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
"1: ldq_l %[__ret],%[__mem]\n" \
|
||||
" mov %[__val],%[__tmp]\n" \
|
||||
" stq_c %[__tmp],%[__mem]\n" \
|
||||
" beq %[__tmp],1b\n" \
|
||||
mb2 \
|
||||
: [__ret] "=&r" (__ret), \
|
||||
[__tmp] "=&r" (__tmp) \
|
||||
: [__mem] "m" (*(mem)), \
|
||||
[__val] "Ir" (value) \
|
||||
: "memory"); \
|
||||
__ret; })
|
||||
|
||||
#define atomic_exchange_acq(mem, value) \
|
||||
__atomic_val_bysize (__arch_exchange, int, mem, value, "", __MB)
|
||||
|
||||
#define atomic_exchange_rel(mem, value) \
|
||||
__atomic_val_bysize (__arch_exchange, int, mem, value, __MB, "")
|
||||
|
||||
|
||||
/* Atomically add value and return the previous (unincremented) value. */
|
||||
|
||||
#define __arch_exchange_and_add_8_int(mem, value, mb1, mb2) \
|
||||
({ __builtin_trap (); 0; })
|
||||
|
||||
#define __arch_exchange_and_add_16_int(mem, value, mb1, mb2) \
|
||||
({ __builtin_trap (); 0; })
|
||||
|
||||
#define __arch_exchange_and_add_32_int(mem, value, mb1, mb2) \
|
||||
({ \
|
||||
signed int __tmp; __typeof(*mem) __ret; \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
"1: ldl_l %[__ret],%[__mem]\n" \
|
||||
" addl %[__ret],%[__val],%[__tmp]\n" \
|
||||
" stl_c %[__tmp],%[__mem]\n" \
|
||||
" beq %[__tmp],1b\n" \
|
||||
mb2 \
|
||||
: [__ret] "=&r" (__ret), \
|
||||
[__tmp] "=&r" (__tmp) \
|
||||
: [__mem] "m" (*(mem)), \
|
||||
[__val] "Ir" ((signed int)(value)) \
|
||||
: "memory"); \
|
||||
__ret; })
|
||||
|
||||
#define __arch_exchange_and_add_64_int(mem, value, mb1, mb2) \
|
||||
({ \
|
||||
unsigned long __tmp; __typeof(*mem) __ret; \
|
||||
__asm__ __volatile__ ( \
|
||||
mb1 \
|
||||
"1: ldq_l %[__ret],%[__mem]\n" \
|
||||
" addq %[__ret],%[__val],%[__tmp]\n" \
|
||||
" stq_c %[__tmp],%[__mem]\n" \
|
||||
" beq %[__tmp],1b\n" \
|
||||
mb2 \
|
||||
: [__ret] "=&r" (__ret), \
|
||||
[__tmp] "=&r" (__tmp) \
|
||||
: [__mem] "m" (*(mem)), \
|
||||
[__val] "Ir" ((unsigned long)(value)) \
|
||||
: "memory"); \
|
||||
__ret; })
|
||||
|
||||
/* ??? Barrier semantics for atomic_exchange_and_add appear to be
|
||||
undefined. Use full barrier for now, as that's safe. */
|
||||
#define atomic_exchange_and_add(mem, value) \
|
||||
__atomic_val_bysize (__arch_exchange_and_add, int, mem, value, __MB, __MB)
|
||||
|
||||
|
||||
/* ??? Blah, I'm lazy. Implement these later. Can do better than the
|
||||
compare-and-exchange loop provided by generic code.
|
||||
|
||||
#define atomic_decrement_if_positive(mem)
|
||||
#define atomic_bit_test_set(mem, bit)
|
||||
|
||||
*/
|
||||
|
||||
#ifndef UP
|
||||
# define atomic_full_barrier() __asm ("mb" : : : "memory");
|
||||
# define atomic_read_barrier() __asm ("mb" : : : "memory");
|
||||
# define atomic_write_barrier() __asm ("wmb" : : : "memory");
|
||||
#endif
|
7
ports/sysdeps/alpha/bits/endian.h
Normal file
7
ports/sysdeps/alpha/bits/endian.h
Normal file
@ -0,0 +1,7 @@
|
||||
/* Alpha is little-endian. */
|
||||
|
||||
#ifndef _ENDIAN_H
|
||||
# error "Never use <bits/endian.h> directly; include <endian.h> instead."
|
||||
#endif
|
||||
|
||||
#define __BYTE_ORDER __LITTLE_ENDIAN
|
68
ports/sysdeps/alpha/bits/link.h
Normal file
68
ports/sysdeps/alpha/bits/link.h
Normal file
@ -0,0 +1,68 @@
|
||||
/* Copyright (C) 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _LINK_H
|
||||
# error "Never include <bits/link.h> directly; use <link.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
/* Registers for entry into PLT on Alpha. */
|
||||
typedef struct La_alpha_regs
|
||||
{
|
||||
uint64_t lr_r26;
|
||||
uint64_t lr_sp;
|
||||
uint64_t lr_r16;
|
||||
uint64_t lr_r17;
|
||||
uint64_t lr_r18;
|
||||
uint64_t lr_r19;
|
||||
uint64_t lr_r20;
|
||||
uint64_t lr_r21;
|
||||
double lr_f16;
|
||||
double lr_f17;
|
||||
double lr_f18;
|
||||
double lr_f19;
|
||||
double lr_f20;
|
||||
double lr_f21;
|
||||
} La_alpha_regs;
|
||||
|
||||
/* Return values for calls from PLT on Alpha. */
|
||||
typedef struct La_alpha_retval
|
||||
{
|
||||
uint64_t lrv_r0;
|
||||
uint64_t lrv_r1;
|
||||
double lrv_f0;
|
||||
double lrv_f1;
|
||||
} La_alpha_retval;
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern Elf64_Addr la_alpha_gnu_pltenter (Elf64_Sym *__sym, unsigned int __ndx,
|
||||
uintptr_t *__refcook,
|
||||
uintptr_t *__defcook,
|
||||
La_alpha_regs *__regs,
|
||||
unsigned int *__flags,
|
||||
const char *__symname,
|
||||
long int *__framesizep);
|
||||
extern unsigned int la_alpha_gnu_pltexit (Elf64_Sym *__sym, unsigned int __ndx,
|
||||
uintptr_t *__refcook,
|
||||
uintptr_t *__defcook,
|
||||
const La_alpha_regs *__inregs,
|
||||
La_alpha_retval *__outregs,
|
||||
const char *symname);
|
||||
|
||||
__END_DECLS
|
60
ports/sysdeps/alpha/bits/mathdef.h
Normal file
60
ports/sysdeps/alpha/bits/mathdef.h
Normal file
@ -0,0 +1,60 @@
|
||||
/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _MATH_H && !defined _COMPLEX_H
|
||||
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
|
||||
#endif
|
||||
|
||||
/* FIXME! This file describes properties of the compiler, not the machine;
|
||||
it should not be part of libc! */
|
||||
|
||||
#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
|
||||
# define _MATH_H_MATHDEF 1
|
||||
|
||||
/* Alpha has "float" and "double" operations. */
|
||||
typedef float float_t; /* float expressions are evaluated as float. */
|
||||
typedef double double_t; /* double expressions are evaluated as double. */
|
||||
|
||||
/* The values returned by `ilogb' for 0 and NaN respectively. */
|
||||
# define FP_ILOGB0 (-2147483647)
|
||||
# define FP_ILOGBNAN (2147483647)
|
||||
|
||||
#endif /* ISO C99 && MATH_H */
|
||||
|
||||
#if defined _COMPLEX_H && !defined _COMPLEX_H_MATHDEF
|
||||
# define _COMPLEX_H_MATHDEF 1
|
||||
# if defined(__GNUC__) && !__GNUC_PREREQ(3,4)
|
||||
|
||||
/* Due to an ABI change, we need to remap the complex float symbols. */
|
||||
# define _Mdouble_ float
|
||||
# define __MATHCALL(function, args) \
|
||||
__MATHDECL (_Complex float, function, args)
|
||||
# define __MATHDECL(type, function, args) \
|
||||
__MATHDECL_1(type, function##f, args, __c1_##function##f); \
|
||||
__MATHDECL_1(type, __##function##f, args, __c1_##function##f)
|
||||
# define __MATHDECL_1(type, function, args, alias) \
|
||||
extern type function args __asm__(#alias) __THROW
|
||||
|
||||
# include <bits/cmathcalls.h>
|
||||
|
||||
# undef _Mdouble_
|
||||
# undef __MATHCALL
|
||||
# undef __MATHDECL
|
||||
# undef __MATHDECL_1
|
||||
|
||||
# endif /* GNUC before 3.4 */
|
||||
#endif /* COMPLEX_H */
|
61
ports/sysdeps/alpha/bits/setjmp.h
Normal file
61
ports/sysdeps/alpha/bits/setjmp.h
Normal file
@ -0,0 +1,61 @@
|
||||
/* Define the machine-dependent type `jmp_buf'. Alpha version.
|
||||
Copyright (C) 1992,1997,2003,2005,2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_SETJMP_H
|
||||
#define _BITS_SETJMP_H 1
|
||||
|
||||
#if !defined _SETJMP_H && !defined _PTHREAD_H
|
||||
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
|
||||
#endif
|
||||
|
||||
/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
|
||||
We use an array of 'long int' instead, to make writing the
|
||||
assembler easier. Naturally, user code should not depend on
|
||||
either representation. */
|
||||
|
||||
/*
|
||||
* Integer registers:
|
||||
* $0 is the return value (va);
|
||||
* $1-$8, $22-$25, $28 are call-used (t0-t7, t8-t11, at);
|
||||
* $9-$14 we save here (s0-s5);
|
||||
* $15 is the FP and we save it here (fp or s6);
|
||||
* $16-$21 are input arguments (call-used) (a0-a5);
|
||||
* $26 is the return PC and we save it here (ra);
|
||||
* $27 is the procedure value (i.e., the address of __setjmp) (pv or t12);
|
||||
* $29 is the global pointer, which the caller will reconstruct
|
||||
* from the return address restored in $26 (gp);
|
||||
* $30 is the stack pointer and we save it here (sp);
|
||||
* $31 is always zero (zero).
|
||||
*
|
||||
* Floating-point registers:
|
||||
* $f0 is the floating return value;
|
||||
* $f1, $f10-$f15, $f22-$f30 are call-used;
|
||||
* $f2-$f9 we save here;
|
||||
* $f16-$21 are input args (call-used);
|
||||
* $f31 is always zero.
|
||||
*
|
||||
* Note that even on Alpha hardware that does not have an FPU (there
|
||||
* isn't such a thing currently) it is required to implement the FP
|
||||
* registers.
|
||||
*/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
typedef long int __jmp_buf[17];
|
||||
#endif
|
||||
|
||||
#endif /* bits/setjmp.h */
|
1
ports/sysdeps/alpha/bsd-_setjmp.S
Normal file
1
ports/sysdeps/alpha/bsd-_setjmp.S
Normal file
@ -0,0 +1 @@
|
||||
/* _setjmp is in setjmp.S */
|
1
ports/sysdeps/alpha/bsd-setjmp.S
Normal file
1
ports/sysdeps/alpha/bsd-setjmp.S
Normal file
@ -0,0 +1 @@
|
||||
/* setjmp is in setjmp.S */
|
110
ports/sysdeps/alpha/bzero.S
Normal file
110
ports/sysdeps/alpha/bzero.S
Normal file
@ -0,0 +1,110 @@
|
||||
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@tamu.edu)
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Fill a block of memory with zeros. Optimized for the Alpha architecture:
|
||||
|
||||
- memory accessed as aligned quadwords only
|
||||
- destination memory not read unless needed for good cache behaviour
|
||||
- basic blocks arranged to optimize branch prediction for full-quadword
|
||||
aligned memory blocks.
|
||||
- partial head and tail quadwords constructed with byte-mask instructions
|
||||
|
||||
This is generally scheduled for the EV5 (got to look out for my own
|
||||
interests :-), but with EV4 needs in mind. There *should* be no more
|
||||
stalls for the EV4 than there are for the EV5.
|
||||
*/
|
||||
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.set noat
|
||||
.set noreorder
|
||||
|
||||
.text
|
||||
.type __bzero, @function
|
||||
.globl __bzero
|
||||
.usepv __bzero, USEPV_PROF
|
||||
|
||||
cfi_startproc
|
||||
|
||||
/* On entry to this basic block:
|
||||
t3 == loop counter
|
||||
t4 == bytes in partial final word
|
||||
a0 == possibly misaligned destination pointer */
|
||||
|
||||
.align 3
|
||||
bzero_loop:
|
||||
beq t3, $tail #
|
||||
blbc t3, 0f # skip single store if count even
|
||||
|
||||
stq_u zero, 0(a0) # e0 : store one word
|
||||
subq t3, 1, t3 # .. e1 :
|
||||
addq a0, 8, a0 # e0 :
|
||||
beq t3, $tail # .. e1 :
|
||||
|
||||
0: stq_u zero, 0(a0) # e0 : store two words
|
||||
subq t3, 2, t3 # .. e1 :
|
||||
stq_u zero, 8(a0) # e0 :
|
||||
addq a0, 16, a0 # .. e1 :
|
||||
bne t3, 0b # e1 :
|
||||
|
||||
$tail: bne t4, 1f # is there a tail to do?
|
||||
ret # no
|
||||
|
||||
1: ldq_u t0, 0(a0) # yes, load original data
|
||||
mskqh t0, t4, t0 #
|
||||
stq_u t0, 0(a0) #
|
||||
ret #
|
||||
|
||||
__bzero:
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
#endif
|
||||
|
||||
mov a0, v0 # e0 : move return value in place
|
||||
beq a1, $done # .. e1 : early exit for zero-length store
|
||||
and a0, 7, t1 # e0 :
|
||||
addq a1, t1, a1 # e1 : add dest misalignment to count
|
||||
srl a1, 3, t3 # e0 : loop = count >> 3
|
||||
and a1, 7, t4 # .. e1 : find number of bytes in tail
|
||||
unop # :
|
||||
beq t1, bzero_loop # e1 : aligned head, jump right in
|
||||
|
||||
ldq_u t0, 0(a0) # e0 : load original data to mask into
|
||||
cmpult a1, 8, t2 # .. e1 : is this a sub-word set?
|
||||
bne t2, $oneq # e1 :
|
||||
|
||||
mskql t0, a0, t0 # e0 : we span words. finish this partial
|
||||
subq t3, 1, t3 # e0 :
|
||||
addq a0, 8, a0 # .. e1 :
|
||||
stq_u t0, -8(a0) # e0 :
|
||||
br bzero_loop # .. e1 :
|
||||
|
||||
.align 3
|
||||
$oneq:
|
||||
mskql t0, a0, t2 # e0 :
|
||||
mskqh t0, a1, t3 # e0 :
|
||||
or t2, t3, t0 # e1 :
|
||||
stq_u t0, 0(a0) # e0 :
|
||||
|
||||
$done: ret
|
||||
|
||||
cfi_endproc
|
||||
weak_alias (__bzero, bzero)
|
176
ports/sysdeps/alpha/configure
vendored
Normal file
176
ports/sysdeps/alpha/configure
vendored
Normal file
@ -0,0 +1,176 @@
|
||||
|
||||
# as_fn_set_status STATUS
|
||||
# -----------------------
|
||||
# Set $? to STATUS, without forking.
|
||||
as_fn_set_status ()
|
||||
{
|
||||
return $1
|
||||
} # as_fn_set_status
|
||||
|
||||
# as_fn_exit STATUS
|
||||
# -----------------
|
||||
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
|
||||
as_fn_exit ()
|
||||
{
|
||||
set +e
|
||||
as_fn_set_status $1
|
||||
exit $1
|
||||
} # as_fn_exit
|
||||
if expr a : '\(a\)' >/dev/null 2>&1 &&
|
||||
test "X`expr 00001 : '.*\(...\)'`" = X001; then
|
||||
as_expr=expr
|
||||
else
|
||||
as_expr=false
|
||||
fi
|
||||
|
||||
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
|
||||
as_basename=basename
|
||||
else
|
||||
as_basename=false
|
||||
fi
|
||||
|
||||
as_me=`$as_basename -- "$0" ||
|
||||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
|
||||
X"$0" : 'X\(//\)$' \| \
|
||||
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
$as_echo X/"$0" |
|
||||
sed '/^.*\/\([^/][^/]*\)\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\/\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\/\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'`
|
||||
|
||||
|
||||
as_lineno_1=$LINENO as_lineno_1a=$LINENO
|
||||
as_lineno_2=$LINENO as_lineno_2a=$LINENO
|
||||
eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
|
||||
test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
|
||||
# Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
|
||||
sed -n '
|
||||
p
|
||||
/[$]LINENO/=
|
||||
' <$as_myself |
|
||||
sed '
|
||||
s/[$]LINENO.*/&-/
|
||||
t lineno
|
||||
b
|
||||
:lineno
|
||||
N
|
||||
:loop
|
||||
s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
|
||||
t loop
|
||||
s/-\n.*//
|
||||
' >$as_me.lineno &&
|
||||
chmod +x "$as_me.lineno" ||
|
||||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
|
||||
|
||||
# Don't try to exec as it changes $[0], causing all sort of problems
|
||||
# (the dirname of $[0] is not the place where we might find the
|
||||
# original and so on. Autoconf is especially sensitive to this).
|
||||
. "./$as_me.lineno"
|
||||
# Exit status is that of the last command.
|
||||
exit
|
||||
}
|
||||
|
||||
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/alpha.
|
||||
|
||||
# Check for support of thread-local storage handling in assembler and linker.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Alpha TLS support" >&5
|
||||
$as_echo_n "checking for Alpha TLS support... " >&6; }
|
||||
if ${libc_cv_alpha_tls+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat > conftest.s <<\EOF
|
||||
.section ".tdata", "awT", @progbits
|
||||
.globl foo
|
||||
foo: .quad 1
|
||||
.section ".tbss", "awT", @nobits
|
||||
.globl bar
|
||||
bar: .skip 8
|
||||
.text
|
||||
baz:
|
||||
.set nomacro
|
||||
ldq $27, __tls_get_addr($29) !literal!1
|
||||
ldq $16, a($29) !tlsgd!1
|
||||
jsr $26, ($27), __tls_get_addr !lituse_tlsgd!1
|
||||
|
||||
jsr $26, ($27), __tls_get_addr !lituse_tlsldm!2
|
||||
ldq $27, __tls_get_addr($29) !literal!2
|
||||
ldq $16, b($29) !tlsldm!2
|
||||
|
||||
ldq $16, c($29) !tlsgd
|
||||
ldq $16, d($29) !tlsldm
|
||||
|
||||
ldq $16, e($29) !tlsgd!3
|
||||
ldq $16, f($29) !tlsldm!4
|
||||
|
||||
ldq $16, g($29) !gotdtprel
|
||||
ldah $16, h($31) !dtprelhi
|
||||
lda $16, i($16) !dtprello
|
||||
lda $16, j($31) !dtprel
|
||||
|
||||
ldq $16, k($29) !gottprel
|
||||
ldah $16, l($31) !tprelhi
|
||||
lda $16, m($16) !tprello
|
||||
lda $16, n($31) !tprel
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
|
||||
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; }; then
|
||||
libc_cv_alpha_tls=yes
|
||||
else
|
||||
libc_cv_alpha_tls=no
|
||||
fi
|
||||
rm -f conftest*
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_alpha_tls" >&5
|
||||
$as_echo "$libc_cv_alpha_tls" >&6; }
|
||||
if test $libc_cv_alpha_tls = no; then
|
||||
as_fn_error $? "the assembler must support TLS" "$LINENO" 5
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GP relative module local relocs" >&5
|
||||
$as_echo_n "checking for GP relative module local relocs... " >&6; }
|
||||
if ${libc_cv_alpha_hidden_gprel+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat > conftest.c <<\EOF
|
||||
static volatile int bar;
|
||||
int baz __attribute__((visibility("hidden")));
|
||||
int f(void) { return bar + baz; }
|
||||
EOF
|
||||
|
||||
libc_cv_alpha_hidden_gprel=no
|
||||
if { ac_try='${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&5'
|
||||
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; }; then
|
||||
if grep -q 'bar.*!gprel' conftest.s \
|
||||
&& grep -q 'baz.*!gprel' conftest.s \
|
||||
&& ! grep -q 'bar.*!literal' conftest.s \
|
||||
&& ! grep -q 'baz.*!literal' conftest.s; then
|
||||
libc_cv_alpha_hidden_gprel=yes
|
||||
fi
|
||||
fi
|
||||
rm -f conftest*
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_alpha_hidden_gprel" >&5
|
||||
$as_echo "$libc_cv_alpha_hidden_gprel" >&6; }
|
||||
if test $libc_cv_alpha_hidden_gprel = yes; then
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
fi
|
71
ports/sysdeps/alpha/configure.in
Normal file
71
ports/sysdeps/alpha/configure.in
Normal file
@ -0,0 +1,71 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/alpha.
|
||||
|
||||
# Check for support of thread-local storage handling in assembler and linker.
|
||||
AC_CACHE_CHECK(for Alpha TLS support, libc_cv_alpha_tls, [dnl
|
||||
cat > conftest.s <<\EOF
|
||||
.section ".tdata", "awT", @progbits
|
||||
.globl foo
|
||||
foo: .quad 1
|
||||
.section ".tbss", "awT", @nobits
|
||||
.globl bar
|
||||
bar: .skip 8
|
||||
.text
|
||||
baz:
|
||||
.set nomacro
|
||||
ldq $27, __tls_get_addr($29) !literal!1
|
||||
ldq $16, a($29) !tlsgd!1
|
||||
jsr $26, ($27), __tls_get_addr !lituse_tlsgd!1
|
||||
|
||||
jsr $26, ($27), __tls_get_addr !lituse_tlsldm!2
|
||||
ldq $27, __tls_get_addr($29) !literal!2
|
||||
ldq $16, b($29) !tlsldm!2
|
||||
|
||||
ldq $16, c($29) !tlsgd
|
||||
ldq $16, d($29) !tlsldm
|
||||
|
||||
ldq $16, e($29) !tlsgd!3
|
||||
ldq $16, f($29) !tlsldm!4
|
||||
|
||||
ldq $16, g($29) !gotdtprel
|
||||
ldah $16, h($31) !dtprelhi
|
||||
lda $16, i($16) !dtprello
|
||||
lda $16, j($31) !dtprel
|
||||
|
||||
ldq $16, k($29) !gottprel
|
||||
ldah $16, l($31) !tprelhi
|
||||
lda $16, m($16) !tprello
|
||||
lda $16, n($31) !tprel
|
||||
EOF
|
||||
dnl
|
||||
if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
|
||||
libc_cv_alpha_tls=yes
|
||||
else
|
||||
libc_cv_alpha_tls=no
|
||||
fi
|
||||
rm -f conftest*])
|
||||
if test $libc_cv_alpha_tls = no; then
|
||||
AC_MSG_ERROR([the assembler must support TLS])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK(for GP relative module local relocs, libc_cv_alpha_hidden_gprel, [dnl
|
||||
cat > conftest.c <<\EOF
|
||||
static volatile int bar;
|
||||
int baz __attribute__((visibility("hidden")));
|
||||
int f(void) { return bar + baz; }
|
||||
EOF
|
||||
dnl
|
||||
|
||||
libc_cv_alpha_hidden_gprel=no
|
||||
if AC_TRY_COMMAND(${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&AS_MESSAGE_LOG_FD); then
|
||||
if grep -q 'bar.*!gprel' conftest.s \
|
||||
&& grep -q 'baz.*!gprel' conftest.s \
|
||||
&& ! grep -q 'bar.*!literal' conftest.s \
|
||||
&& ! grep -q 'baz.*!literal' conftest.s; then
|
||||
libc_cv_alpha_hidden_gprel=yes
|
||||
fi
|
||||
fi
|
||||
rm -f conftest*])
|
||||
if test $libc_cv_alpha_hidden_gprel = yes; then
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
fi
|
99
ports/sysdeps/alpha/crti.S
Normal file
99
ports/sysdeps/alpha/crti.S
Normal file
@ -0,0 +1,99 @@
|
||||
/* Special .init and .fini section support for Alpha.
|
||||
Copyright (C) 2001, 2002, 2003, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* crti.S puts a function prologue at the beginning of the .init and
|
||||
.fini sections and defines global symbols for those addresses, so
|
||||
they can be called as functions. The symbols _init and _fini are
|
||||
magic and cause the linker to emit DT_INIT and DT_FINI.
|
||||
|
||||
This differs from what would be generated for ordinary code in that
|
||||
we save and restore the GP within the function. In order for linker
|
||||
relaxation to work, the value in the GP register on exit from a function
|
||||
must be valid for the function entry point. Normally, a function is
|
||||
contained within one object file and this is not an issue, provided
|
||||
that the function reloads the gp after making any function calls.
|
||||
However, _init and _fini are constructed from pieces of many object
|
||||
files, all of which may have different GP values. So we must reload
|
||||
the GP value from crti.o in crtn.o. */
|
||||
|
||||
#include <libc-symbols.h>
|
||||
#include <sysdep.h>
|
||||
|
||||
#ifndef PREINIT_FUNCTION
|
||||
# define PREINIT_FUNCTION __gmon_start__
|
||||
#endif
|
||||
|
||||
#ifndef PREINIT_FUNCTION_WEAK
|
||||
# define PREINIT_FUNCTION_WEAK 1
|
||||
#endif
|
||||
|
||||
#if PREINIT_FUNCTION_WEAK
|
||||
weak_extern (PREINIT_FUNCTION)
|
||||
#else
|
||||
.hidden PREINIT_FUNCTION
|
||||
#endif
|
||||
|
||||
.section .init, "ax", @progbits
|
||||
.globl _init
|
||||
.type _init, @function
|
||||
.usepv _init, std
|
||||
_init:
|
||||
ldgp $29, 0($27)
|
||||
subq $30, 16, $30
|
||||
#if PREINIT_FUNCTION_WEAK
|
||||
lda $27, PREINIT_FUNCTION
|
||||
#endif
|
||||
stq $26, 0($30)
|
||||
stq $29, 8($30)
|
||||
#if PREINIT_FUNCTION_WEAK
|
||||
beq $27, 1f
|
||||
jsr $26, ($27), PREINIT_FUNCTION
|
||||
ldq $29, 8($30)
|
||||
1:
|
||||
#else
|
||||
bsr $26, PREINIT_FUNCTION !samegp
|
||||
#endif
|
||||
.p2align 3
|
||||
|
||||
.section .fini, "ax", @progbits
|
||||
.globl _fini
|
||||
.type _fini,@function
|
||||
.usepv _fini,std
|
||||
_fini:
|
||||
ldgp $29, 0($27)
|
||||
subq $30, 16, $30
|
||||
stq $26, 0($30)
|
||||
stq $29, 8($30)
|
||||
.p2align 3
|
49
ports/sysdeps/alpha/crtn.S
Normal file
49
ports/sysdeps/alpha/crtn.S
Normal file
@ -0,0 +1,49 @@
|
||||
/* Special .init and .fini section support for Alpha.
|
||||
Copyright (C) 2001, 2002, 2003, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* crtn.S puts function epilogues in the .init and .fini sections
|
||||
corresponding to the prologues in crti.S. */
|
||||
|
||||
.section .init, "ax", @progbits
|
||||
ldq $26, 0($30)
|
||||
ldq $29, 8($30)
|
||||
addq $30, 16, $30
|
||||
ret
|
||||
|
||||
.section .fini, "ax", @progbits
|
||||
ldq $26, 0($30)
|
||||
ldq $29, 8($30)
|
||||
addq $30, 16, $30
|
||||
ret
|
87
ports/sysdeps/alpha/div.S
Normal file
87
ports/sysdeps/alpha/div.S
Normal file
@ -0,0 +1,87 @@
|
||||
/* Copyright (C) 1996, 1997, 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "div_libc.h"
|
||||
|
||||
#undef FRAME
|
||||
#ifdef __alpha_fix__
|
||||
#define FRAME 0
|
||||
#else
|
||||
#define FRAME 16
|
||||
#endif
|
||||
|
||||
.set noat
|
||||
|
||||
.align 4
|
||||
.globl div
|
||||
.ent div
|
||||
div:
|
||||
.frame sp, FRAME, ra
|
||||
#if FRAME > 0
|
||||
lda sp, -FRAME(sp)
|
||||
#endif
|
||||
#ifdef PROF
|
||||
.set macro
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set nomacro
|
||||
.prologue 1
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
beq $18, $divbyzero
|
||||
excb
|
||||
mf_fpcr $f10
|
||||
|
||||
_ITOFT2 $17, $f0, 0, $18, $f1, 8
|
||||
|
||||
cvtqt $f0, $f0
|
||||
cvtqt $f1, $f1
|
||||
divt/c $f0, $f1, $f0
|
||||
cvttq/c $f0, $f0
|
||||
excb
|
||||
mt_fpcr $f10
|
||||
_FTOIT $f0, $0, 0
|
||||
|
||||
mull $0, $18, $1
|
||||
subl $17, $1, $1
|
||||
|
||||
stl $0, 0(a0)
|
||||
stl $1, 4(a0)
|
||||
mov a0, v0
|
||||
|
||||
#if FRAME > 0
|
||||
lda sp, FRAME(sp)
|
||||
#endif
|
||||
ret
|
||||
|
||||
$divbyzero:
|
||||
mov a0, v0
|
||||
lda a0, GEN_INTDIV
|
||||
call_pal PAL_gentrap
|
||||
stl zero, 0(v0)
|
||||
stl zero, 4(v0)
|
||||
|
||||
#if FRAME > 0
|
||||
lda sp, FRAME(sp)
|
||||
#endif
|
||||
ret
|
||||
|
||||
.end div
|
163
ports/sysdeps/alpha/div_libc.h
Normal file
163
ports/sysdeps/alpha/div_libc.h
Normal file
@ -0,0 +1,163 @@
|
||||
/* Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Common bits for implementing software divide. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#ifdef __linux__
|
||||
# include <asm/gentrap.h>
|
||||
# include <asm/pal.h>
|
||||
#else
|
||||
# include <machine/pal.h>
|
||||
#endif
|
||||
|
||||
/* These are not normal C functions. Argument registers are t10 and t11;
|
||||
the result goes in t12; the return address is in t9. Only t12 and AT
|
||||
may be clobbered. */
|
||||
#define X t10
|
||||
#define Y t11
|
||||
#define RV t12
|
||||
#define RA t9
|
||||
|
||||
/* The secureplt format does not allow the division routines to be called
|
||||
via plt; there aren't enough registers free to be clobbered. Avoid
|
||||
setting the symbol type to STT_FUNC, so that the linker won't be tempted
|
||||
to create a plt entry. */
|
||||
#define funcnoplt notype
|
||||
|
||||
/* None of these functions should use implicit anything. */
|
||||
.set nomacro
|
||||
.set noat
|
||||
|
||||
/* Code fragment to invoke _mcount for profiling. This should be invoked
|
||||
directly after allocation of the stack frame. */
|
||||
.macro CALL_MCOUNT
|
||||
#ifdef PROF
|
||||
stq ra, 0(sp)
|
||||
stq pv, 8(sp)
|
||||
stq gp, 16(sp)
|
||||
cfi_rel_offset (ra, 0)
|
||||
cfi_rel_offset (pv, 8)
|
||||
cfi_rel_offset (gp, 16)
|
||||
br AT, 1f
|
||||
.set macro
|
||||
1: ldgp gp, 0(AT)
|
||||
mov RA, ra
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set nomacro
|
||||
ldq ra, 0(sp)
|
||||
ldq pv, 8(sp)
|
||||
ldq gp, 16(sp)
|
||||
cfi_restore (ra)
|
||||
cfi_restore (pv)
|
||||
cfi_restore (gp)
|
||||
/* Realign subsequent code with what we'd have without this
|
||||
macro at all. This means aligned with one arithmetic insn
|
||||
used within the bundle. */
|
||||
.align 4
|
||||
nop
|
||||
#endif
|
||||
.endm
|
||||
|
||||
/* In order to make the below work, all top-level divide routines must
|
||||
use the same frame size. */
|
||||
#define FRAME 64
|
||||
|
||||
/* Code fragment to generate an integer divide-by-zero fault. When
|
||||
building libc.so, we arrange for there to be one copy of this code
|
||||
placed late in the dso, such that all branches are forward. When
|
||||
building libc.a, we use multiple copies to avoid having an out of
|
||||
range branch. Users should jump to DIVBYZERO. */
|
||||
|
||||
.macro DO_DIVBYZERO
|
||||
#ifdef PIC
|
||||
#define DIVBYZERO __divbyzero
|
||||
.section .gnu.linkonce.t.divbyzero, "ax", @progbits
|
||||
.globl __divbyzero
|
||||
.type __divbyzero, @function
|
||||
.usepv __divbyzero, no
|
||||
.hidden __divbyzero
|
||||
#else
|
||||
#define DIVBYZERO $divbyzero
|
||||
#endif
|
||||
|
||||
.align 4
|
||||
DIVBYZERO:
|
||||
cfi_startproc
|
||||
cfi_return_column (RA)
|
||||
cfi_def_cfa_offset (FRAME)
|
||||
|
||||
mov a0, RV
|
||||
unop
|
||||
lda a0, GEN_INTDIV
|
||||
call_pal PAL_gentrap
|
||||
|
||||
mov RV, a0
|
||||
clr RV
|
||||
lda sp, FRAME(sp)
|
||||
cfi_def_cfa_offset (0)
|
||||
ret $31, (RA), 1
|
||||
|
||||
cfi_endproc
|
||||
.size DIVBYZERO, .-DIVBYZERO
|
||||
.endm
|
||||
|
||||
/* Like the ev6 instructions, but fall back to stack use on prior machines. */
|
||||
|
||||
.arch ev6
|
||||
|
||||
.macro _ITOFS gr, fr, slot
|
||||
#ifdef __alpha_fix__
|
||||
itofs \gr, \fr
|
||||
#else
|
||||
stl \gr, \slot(sp)
|
||||
lds \fr, \slot(sp)
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.macro _ITOFT gr, fr, slot
|
||||
#ifdef __alpha_fix__
|
||||
itoft \gr, \fr
|
||||
#else
|
||||
stq \gr, \slot(sp)
|
||||
ldt \fr, \slot(sp)
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.macro _FTOIT fr, gr, slot
|
||||
#ifdef __alpha_fix__
|
||||
ftoit \fr, \gr
|
||||
#else
|
||||
stt \fr, \slot(sp)
|
||||
ldq \gr, \slot(sp)
|
||||
#endif
|
||||
.endm
|
||||
|
||||
/* Similarly, but move two registers. Schedules better for pre-ev6. */
|
||||
|
||||
.macro _ITOFT2 gr1, fr1, slot1, gr2, fr2, slot2
|
||||
#ifdef __alpha_fix__
|
||||
itoft \gr1, \fr1
|
||||
itoft \gr2, \fr2
|
||||
#else
|
||||
stq \gr1, \slot1(sp)
|
||||
stq \gr2, \slot2(sp)
|
||||
ldt \fr1, \slot1(sp)
|
||||
ldt \fr2, \slot2(sp)
|
||||
#endif
|
||||
.endm
|
83
ports/sysdeps/alpha/divl.S
Normal file
83
ports/sysdeps/alpha/divl.S
Normal file
@ -0,0 +1,83 @@
|
||||
/* Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "div_libc.h"
|
||||
|
||||
/* 32-bit signed int divide. This is not a normal C function. Argument
|
||||
registers are t10 and t11, the result goes in t12. Only t12 and AT may
|
||||
be clobbered.
|
||||
|
||||
The FPU can handle all input values except zero. Whee!
|
||||
|
||||
The FPCR save/restore is due to the fact that the EV6 _will_ set FPCR_INE
|
||||
for cvttq/c even without /sui being set. It will not, however, properly
|
||||
raise the exception, so we don't have to worry about FPCR_INED being clear
|
||||
and so dying by SIGFPE. */
|
||||
|
||||
#ifndef EXTEND
|
||||
#define EXTEND(S,D) sextl S, D
|
||||
#endif
|
||||
|
||||
.text
|
||||
.align 4
|
||||
.globl __divl
|
||||
.type __divl, @funcnoplt
|
||||
.usepv __divl, no
|
||||
|
||||
cfi_startproc
|
||||
cfi_return_column (RA)
|
||||
__divl:
|
||||
lda sp, -FRAME(sp)
|
||||
cfi_def_cfa_offset (FRAME)
|
||||
CALL_MCOUNT
|
||||
stt $f0, 0(sp)
|
||||
excb
|
||||
beq Y, DIVBYZERO
|
||||
|
||||
stt $f1, 8(sp)
|
||||
stt $f2, 16(sp)
|
||||
cfi_rel_offset ($f0, 0)
|
||||
cfi_rel_offset ($f1, 8)
|
||||
cfi_rel_offset ($f2, 16)
|
||||
mf_fpcr $f2
|
||||
|
||||
EXTEND (X, RV)
|
||||
EXTEND (Y, AT)
|
||||
_ITOFT2 RV, $f0, 24, AT, $f1, 32
|
||||
cvtqt $f0, $f0
|
||||
cvtqt $f1, $f1
|
||||
divt/c $f0, $f1, $f0
|
||||
cvttq/c $f0, $f0
|
||||
excb
|
||||
mt_fpcr $f2
|
||||
_FTOIT $f0, RV, 24
|
||||
|
||||
ldt $f0, 0(sp)
|
||||
ldt $f1, 8(sp)
|
||||
ldt $f2, 16(sp)
|
||||
lda sp, FRAME(sp)
|
||||
cfi_restore ($f0)
|
||||
cfi_restore ($f1)
|
||||
cfi_restore ($f2)
|
||||
cfi_def_cfa_offset (0)
|
||||
sextl RV, RV
|
||||
ret $31, (RA), 1
|
||||
|
||||
cfi_endproc
|
||||
.size __divl, .-__divl
|
||||
|
||||
DO_DIVBYZERO
|
4
ports/sysdeps/alpha/divlu.S
Normal file
4
ports/sysdeps/alpha/divlu.S
Normal file
@ -0,0 +1,4 @@
|
||||
#define UNSIGNED
|
||||
#define EXTEND(S,D) zapnot S, 15, D
|
||||
#define __divl __divlu
|
||||
#include <divl.S>
|
273
ports/sysdeps/alpha/divq.S
Normal file
273
ports/sysdeps/alpha/divq.S
Normal file
@ -0,0 +1,273 @@
|
||||
/* Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "div_libc.h"
|
||||
|
||||
|
||||
/* 64-bit signed long divide. These are not normal C functions. Argument
|
||||
registers are t10 and t11, the result goes in t12. Only t12 and AT may
|
||||
be clobbered.
|
||||
|
||||
Theory of operation here is that we can use the FPU divider for virtually
|
||||
all operands that we see: all dividend values between -2**53 and 2**53-1
|
||||
can be computed directly. Note that divisor values need not be checked
|
||||
against that range because the rounded fp value will be close enough such
|
||||
that the quotient is < 1, which will properly be truncated to zero when we
|
||||
convert back to integer.
|
||||
|
||||
When the dividend is outside the range for which we can compute exact
|
||||
results, we use the fp quotent as an estimate from which we begin refining
|
||||
an exact integral value. This reduces the number of iterations in the
|
||||
shift-and-subtract loop significantly.
|
||||
|
||||
The FPCR save/restore is due to the fact that the EV6 _will_ set FPCR_INE
|
||||
for cvttq/c even without /sui being set. It will not, however, properly
|
||||
raise the exception, so we don't have to worry about FPCR_INED being clear
|
||||
and so dying by SIGFPE. */
|
||||
|
||||
.text
|
||||
.align 4
|
||||
.globl __divq
|
||||
.type __divq, @funcnoplt
|
||||
.usepv __divq, no
|
||||
|
||||
cfi_startproc
|
||||
cfi_return_column (RA)
|
||||
__divq:
|
||||
lda sp, -FRAME(sp)
|
||||
cfi_def_cfa_offset (FRAME)
|
||||
CALL_MCOUNT
|
||||
|
||||
/* Get the fp divide insn issued as quickly as possible. After
|
||||
that's done, we have at least 22 cycles until its results are
|
||||
ready -- all the time in the world to figure out how we're
|
||||
going to use the results. */
|
||||
stt $f0, 0(sp)
|
||||
excb
|
||||
beq Y, DIVBYZERO
|
||||
|
||||
stt $f1, 8(sp)
|
||||
stt $f3, 48(sp)
|
||||
cfi_rel_offset ($f0, 0)
|
||||
cfi_rel_offset ($f1, 8)
|
||||
cfi_rel_offset ($f3, 48)
|
||||
mf_fpcr $f3
|
||||
|
||||
_ITOFT2 X, $f0, 16, Y, $f1, 24
|
||||
cvtqt $f0, $f0
|
||||
cvtqt $f1, $f1
|
||||
divt/c $f0, $f1, $f0
|
||||
|
||||
/* Check to see if X fit in the double as an exact value. */
|
||||
sll X, (64-53), AT
|
||||
ldt $f1, 8(sp)
|
||||
sra AT, (64-53), AT
|
||||
cmpeq X, AT, AT
|
||||
beq AT, $x_big
|
||||
|
||||
/* If we get here, we're expecting exact results from the division.
|
||||
Do nothing else besides convert and clean up. */
|
||||
cvttq/c $f0, $f0
|
||||
excb
|
||||
mt_fpcr $f3
|
||||
_FTOIT $f0, RV, 16
|
||||
|
||||
ldt $f0, 0(sp)
|
||||
ldt $f3, 48(sp)
|
||||
cfi_restore ($f1)
|
||||
cfi_remember_state
|
||||
cfi_restore ($f0)
|
||||
cfi_restore ($f3)
|
||||
cfi_def_cfa_offset (0)
|
||||
lda sp, FRAME(sp)
|
||||
ret $31, (RA), 1
|
||||
|
||||
.align 4
|
||||
cfi_restore_state
|
||||
$x_big:
|
||||
/* If we get here, X is large enough that we don't expect exact
|
||||
results, and neither X nor Y got mis-translated for the fp
|
||||
division. Our task is to take the fp result, figure out how
|
||||
far it's off from the correct result and compute a fixup. */
|
||||
stq t0, 16(sp)
|
||||
stq t1, 24(sp)
|
||||
stq t2, 32(sp)
|
||||
stq t5, 40(sp)
|
||||
cfi_rel_offset (t0, 16)
|
||||
cfi_rel_offset (t1, 24)
|
||||
cfi_rel_offset (t2, 32)
|
||||
cfi_rel_offset (t5, 40)
|
||||
|
||||
#define Q RV /* quotient */
|
||||
#define R t0 /* remainder */
|
||||
#define SY t1 /* scaled Y */
|
||||
#define S t2 /* scalar */
|
||||
#define QY t3 /* Q*Y */
|
||||
|
||||
/* The fixup code below can only handle unsigned values. */
|
||||
or X, Y, AT
|
||||
mov $31, t5
|
||||
blt AT, $fix_sign_in
|
||||
$fix_sign_in_ret1:
|
||||
cvttq/c $f0, $f0
|
||||
|
||||
_FTOIT $f0, Q, 8
|
||||
.align 3
|
||||
$fix_sign_in_ret2:
|
||||
ldt $f0, 0(sp)
|
||||
stq t3, 0(sp)
|
||||
cfi_restore ($f0)
|
||||
cfi_rel_offset (t3, 0)
|
||||
|
||||
mulq Q, Y, QY
|
||||
excb
|
||||
stq t4, 8(sp)
|
||||
mt_fpcr $f3
|
||||
cfi_rel_offset (t4, 8)
|
||||
|
||||
subq QY, X, R
|
||||
mov Y, SY
|
||||
mov 1, S
|
||||
bgt R, $q_high
|
||||
|
||||
$q_high_ret:
|
||||
subq X, QY, R
|
||||
mov Y, SY
|
||||
mov 1, S
|
||||
bgt R, $q_low
|
||||
|
||||
$q_low_ret:
|
||||
ldq t0, 16(sp)
|
||||
ldq t1, 24(sp)
|
||||
ldq t2, 32(sp)
|
||||
bne t5, $fix_sign_out
|
||||
|
||||
$fix_sign_out_ret:
|
||||
ldq t3, 0(sp)
|
||||
ldq t4, 8(sp)
|
||||
ldq t5, 40(sp)
|
||||
ldt $f3, 48(sp)
|
||||
lda sp, FRAME(sp)
|
||||
cfi_remember_state
|
||||
cfi_restore (t0)
|
||||
cfi_restore (t1)
|
||||
cfi_restore (t2)
|
||||
cfi_restore (t3)
|
||||
cfi_restore (t4)
|
||||
cfi_restore (t5)
|
||||
cfi_restore ($f3)
|
||||
cfi_def_cfa_offset (0)
|
||||
ret $31, (RA), 1
|
||||
|
||||
.align 4
|
||||
cfi_restore_state
|
||||
/* The quotient that we computed was too large. We need to reduce
|
||||
it by S such that Y*S >= R. Obviously the closer we get to the
|
||||
correct value the better, but overshooting high is ok, as we'll
|
||||
fix that up later. */
|
||||
0:
|
||||
addq SY, SY, SY
|
||||
addq S, S, S
|
||||
$q_high:
|
||||
cmpult SY, R, AT
|
||||
bne AT, 0b
|
||||
|
||||
subq Q, S, Q
|
||||
unop
|
||||
subq QY, SY, QY
|
||||
br $q_high_ret
|
||||
|
||||
.align 4
|
||||
/* The quotient that we computed was too small. Divide Y by the
|
||||
current remainder (R) and add that to the existing quotient (Q).
|
||||
The expectation, of course, is that R is much smaller than X. */
|
||||
/* Begin with a shift-up loop. Compute S such that Y*S >= R. We
|
||||
already have a copy of Y in SY and the value 1 in S. */
|
||||
0:
|
||||
addq SY, SY, SY
|
||||
addq S, S, S
|
||||
$q_low:
|
||||
cmpult SY, R, AT
|
||||
bne AT, 0b
|
||||
|
||||
/* Shift-down and subtract loop. Each iteration compares our scaled
|
||||
Y (SY) with the remainder (R); if SY <= R then X is divisible by
|
||||
Y's scalar (S) so add it to the quotient (Q). */
|
||||
2: addq Q, S, t3
|
||||
srl S, 1, S
|
||||
cmpule SY, R, AT
|
||||
subq R, SY, t4
|
||||
|
||||
cmovne AT, t3, Q
|
||||
cmovne AT, t4, R
|
||||
srl SY, 1, SY
|
||||
bne S, 2b
|
||||
|
||||
br $q_low_ret
|
||||
|
||||
.align 4
|
||||
$fix_sign_in:
|
||||
/* If we got here, then X|Y is negative. Need to adjust everything
|
||||
such that we're doing unsigned division in the fixup loop. */
|
||||
/* T5 records the changes we had to make:
|
||||
bit 0: set if result should be negative.
|
||||
bit 2: set if X was negated.
|
||||
bit 3: set if Y was negated.
|
||||
*/
|
||||
xor X, Y, AT
|
||||
cmplt AT, 0, t5
|
||||
cmplt X, 0, AT
|
||||
negq X, t0
|
||||
|
||||
s4addq AT, t5, t5
|
||||
cmovne AT, t0, X
|
||||
cmplt Y, 0, AT
|
||||
negq Y, t0
|
||||
|
||||
s8addq AT, t5, t5
|
||||
cmovne AT, t0, Y
|
||||
unop
|
||||
blbc t5, $fix_sign_in_ret1
|
||||
|
||||
cvttq/c $f0, $f0
|
||||
_FTOIT $f0, Q, 8
|
||||
.align 3
|
||||
negq Q, Q
|
||||
br $fix_sign_in_ret2
|
||||
|
||||
.align 4
|
||||
$fix_sign_out:
|
||||
/* Now we get to undo what we did above. */
|
||||
/* ??? Is this really faster than just increasing the size of
|
||||
the stack frame and storing X and Y in memory? */
|
||||
and t5, 8, AT
|
||||
negq Y, t4
|
||||
cmovne AT, t4, Y
|
||||
|
||||
and t5, 4, AT
|
||||
negq X, t4
|
||||
cmovne AT, t4, X
|
||||
|
||||
negq RV, t4
|
||||
cmovlbs t5, t4, RV
|
||||
|
||||
br $fix_sign_out_ret
|
||||
|
||||
cfi_endproc
|
||||
.size __divq, .-__divq
|
||||
|
||||
DO_DIVBYZERO
|
256
ports/sysdeps/alpha/divqu.S
Normal file
256
ports/sysdeps/alpha/divqu.S
Normal file
@ -0,0 +1,256 @@
|
||||
/* Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "div_libc.h"
|
||||
|
||||
|
||||
/* 64-bit unsigned long divide. These are not normal C functions. Argument
|
||||
registers are t10 and t11, the result goes in t12. Only t12 and AT may be
|
||||
clobbered.
|
||||
|
||||
Theory of operation here is that we can use the FPU divider for virtually
|
||||
all operands that we see: all dividend values between -2**53 and 2**53-1
|
||||
can be computed directly. Note that divisor values need not be checked
|
||||
against that range because the rounded fp value will be close enough such
|
||||
that the quotient is < 1, which will properly be truncated to zero when we
|
||||
convert back to integer.
|
||||
|
||||
When the dividend is outside the range for which we can compute exact
|
||||
results, we use the fp quotent as an estimate from which we begin refining
|
||||
an exact integral value. This reduces the number of iterations in the
|
||||
shift-and-subtract loop significantly.
|
||||
|
||||
The FPCR save/restore is due to the fact that the EV6 _will_ set FPCR_INE
|
||||
for cvttq/c even without /sui being set. It will not, however, properly
|
||||
raise the exception, so we don't have to worry about FPCR_INED being clear
|
||||
and so dying by SIGFPE. */
|
||||
|
||||
.text
|
||||
.align 4
|
||||
.globl __divqu
|
||||
.type __divqu, @funcnoplt
|
||||
.usepv __divqu, no
|
||||
|
||||
cfi_startproc
|
||||
cfi_return_column (RA)
|
||||
__divqu:
|
||||
lda sp, -FRAME(sp)
|
||||
cfi_def_cfa_offset (FRAME)
|
||||
CALL_MCOUNT
|
||||
|
||||
/* Get the fp divide insn issued as quickly as possible. After
|
||||
that's done, we have at least 22 cycles until its results are
|
||||
ready -- all the time in the world to figure out how we're
|
||||
going to use the results. */
|
||||
stt $f0, 0(sp)
|
||||
excb
|
||||
beq Y, DIVBYZERO
|
||||
|
||||
stt $f1, 8(sp)
|
||||
stt $f3, 48(sp)
|
||||
cfi_rel_offset ($f0, 0)
|
||||
cfi_rel_offset ($f1, 8)
|
||||
cfi_rel_offset ($f3, 48)
|
||||
mf_fpcr $f3
|
||||
|
||||
_ITOFT2 X, $f0, 16, Y, $f1, 24
|
||||
cvtqt $f0, $f0
|
||||
cvtqt $f1, $f1
|
||||
blt X, $x_is_neg
|
||||
divt/c $f0, $f1, $f0
|
||||
|
||||
/* Check to see if Y was mis-converted as signed value. */
|
||||
ldt $f1, 8(sp)
|
||||
blt Y, $y_is_neg
|
||||
|
||||
/* Check to see if X fit in the double as an exact value. */
|
||||
srl X, 53, AT
|
||||
bne AT, $x_big
|
||||
|
||||
/* If we get here, we're expecting exact results from the division.
|
||||
Do nothing else besides convert and clean up. */
|
||||
cvttq/c $f0, $f0
|
||||
excb
|
||||
mt_fpcr $f3
|
||||
_FTOIT $f0, RV, 16
|
||||
|
||||
ldt $f0, 0(sp)
|
||||
ldt $f3, 48(sp)
|
||||
cfi_remember_state
|
||||
cfi_restore ($f0)
|
||||
cfi_restore ($f1)
|
||||
cfi_restore ($f3)
|
||||
cfi_def_cfa_offset (0)
|
||||
lda sp, FRAME(sp)
|
||||
ret $31, (RA), 1
|
||||
|
||||
.align 4
|
||||
cfi_restore_state
|
||||
$x_is_neg:
|
||||
/* If we get here, X is so big that bit 63 is set, which made the
|
||||
conversion come out negative. Fix it up lest we not even get
|
||||
a good estimate. */
|
||||
ldah AT, 0x5f80 /* 2**64 as float. */
|
||||
stt $f2, 24(sp)
|
||||
cfi_rel_offset ($f2, 24)
|
||||
_ITOFS AT, $f2, 16
|
||||
|
||||
.align 4
|
||||
addt $f0, $f2, $f0
|
||||
unop
|
||||
divt/c $f0, $f1, $f0
|
||||
unop
|
||||
|
||||
/* Ok, we've now the divide issued. Continue with other checks. */
|
||||
ldt $f1, 8(sp)
|
||||
unop
|
||||
ldt $f2, 24(sp)
|
||||
blt Y, $y_is_neg
|
||||
cfi_restore ($f1)
|
||||
cfi_restore ($f2)
|
||||
cfi_remember_state /* for y_is_neg */
|
||||
|
||||
.align 4
|
||||
$x_big:
|
||||
/* If we get here, X is large enough that we don't expect exact
|
||||
results, and neither X nor Y got mis-translated for the fp
|
||||
division. Our task is to take the fp result, figure out how
|
||||
far it's off from the correct result and compute a fixup. */
|
||||
stq t0, 16(sp)
|
||||
stq t1, 24(sp)
|
||||
stq t2, 32(sp)
|
||||
stq t3, 40(sp)
|
||||
cfi_rel_offset (t0, 16)
|
||||
cfi_rel_offset (t1, 24)
|
||||
cfi_rel_offset (t2, 32)
|
||||
cfi_rel_offset (t3, 40)
|
||||
|
||||
#define Q RV /* quotient */
|
||||
#define R t0 /* remainder */
|
||||
#define SY t1 /* scaled Y */
|
||||
#define S t2 /* scalar */
|
||||
#define QY t3 /* Q*Y */
|
||||
|
||||
cvttq/c $f0, $f0
|
||||
_FTOIT $f0, Q, 8
|
||||
mulq Q, Y, QY
|
||||
|
||||
.align 4
|
||||
stq t4, 8(sp)
|
||||
excb
|
||||
ldt $f0, 0(sp)
|
||||
mt_fpcr $f3
|
||||
cfi_rel_offset (t4, 8)
|
||||
cfi_restore ($f0)
|
||||
|
||||
subq QY, X, R
|
||||
mov Y, SY
|
||||
mov 1, S
|
||||
bgt R, $q_high
|
||||
|
||||
$q_high_ret:
|
||||
subq X, QY, R
|
||||
mov Y, SY
|
||||
mov 1, S
|
||||
bgt R, $q_low
|
||||
|
||||
$q_low_ret:
|
||||
ldq t4, 8(sp)
|
||||
ldq t0, 16(sp)
|
||||
ldq t1, 24(sp)
|
||||
ldq t2, 32(sp)
|
||||
|
||||
ldq t3, 40(sp)
|
||||
ldt $f3, 48(sp)
|
||||
lda sp, FRAME(sp)
|
||||
cfi_remember_state
|
||||
cfi_restore (t0)
|
||||
cfi_restore (t1)
|
||||
cfi_restore (t2)
|
||||
cfi_restore (t3)
|
||||
cfi_restore (t4)
|
||||
cfi_restore ($f3)
|
||||
cfi_def_cfa_offset (0)
|
||||
ret $31, (RA), 1
|
||||
|
||||
.align 4
|
||||
cfi_restore_state
|
||||
/* The quotient that we computed was too large. We need to reduce
|
||||
it by S such that Y*S >= R. Obviously the closer we get to the
|
||||
correct value the better, but overshooting high is ok, as we'll
|
||||
fix that up later. */
|
||||
0:
|
||||
addq SY, SY, SY
|
||||
addq S, S, S
|
||||
$q_high:
|
||||
cmpult SY, R, AT
|
||||
bne AT, 0b
|
||||
|
||||
subq Q, S, Q
|
||||
unop
|
||||
subq QY, SY, QY
|
||||
br $q_high_ret
|
||||
|
||||
.align 4
|
||||
/* The quotient that we computed was too small. Divide Y by the
|
||||
current remainder (R) and add that to the existing quotient (Q).
|
||||
The expectation, of course, is that R is much smaller than X. */
|
||||
/* Begin with a shift-up loop. Compute S such that Y*S >= R. We
|
||||
already have a copy of Y in SY and the value 1 in S. */
|
||||
0:
|
||||
addq SY, SY, SY
|
||||
addq S, S, S
|
||||
$q_low:
|
||||
cmpult SY, R, AT
|
||||
bne AT, 0b
|
||||
|
||||
/* Shift-down and subtract loop. Each iteration compares our scaled
|
||||
Y (SY) with the remainder (R); if SY <= R then X is divisible by
|
||||
Y's scalar (S) so add it to the quotient (Q). */
|
||||
2: addq Q, S, t3
|
||||
srl S, 1, S
|
||||
cmpule SY, R, AT
|
||||
subq R, SY, t4
|
||||
|
||||
cmovne AT, t3, Q
|
||||
cmovne AT, t4, R
|
||||
srl SY, 1, SY
|
||||
bne S, 2b
|
||||
|
||||
br $q_low_ret
|
||||
|
||||
.align 4
|
||||
cfi_restore_state
|
||||
$y_is_neg:
|
||||
/* If we get here, Y is so big that bit 63 is set. The results
|
||||
from the divide will be completely wrong. Fortunately, the
|
||||
quotient must be either 0 or 1, so just compute it directly. */
|
||||
cmpule Y, X, RV
|
||||
excb
|
||||
mt_fpcr $f3
|
||||
ldt $f0, 0(sp)
|
||||
ldt $f3, 48(sp)
|
||||
lda sp, FRAME(sp)
|
||||
cfi_restore ($f0)
|
||||
cfi_restore ($f3)
|
||||
cfi_def_cfa_offset (0)
|
||||
ret $31, (RA), 1
|
||||
|
||||
cfi_endproc
|
||||
.size __divqu, .-__divqu
|
||||
|
||||
DO_DIVBYZERO
|
3
ports/sysdeps/alpha/dl-dtprocnum.h
Normal file
3
ports/sysdeps/alpha/dl-dtprocnum.h
Normal file
@ -0,0 +1,3 @@
|
||||
/* Number of extra dynamic section entries for this architecture. By
|
||||
default there are none. */
|
||||
#define DT_THISPROCNUM DT_ALPHA_NUM
|
528
ports/sysdeps/alpha/dl-machine.h
Normal file
528
ports/sysdeps/alpha/dl-machine.h
Normal file
@ -0,0 +1,528 @@
|
||||
/* Machine-dependent ELF dynamic relocation inline functions. Alpha version.
|
||||
Copyright (C) 1996-2005, 2006, 2011 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This was written in the absence of an ABI -- don't expect
|
||||
it to remain unchanged. */
|
||||
|
||||
#ifndef dl_machine_h
|
||||
#define dl_machine_h 1
|
||||
|
||||
#define ELF_MACHINE_NAME "alpha"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
||||
/* Mask identifying addresses reserved for the user program,
|
||||
where the dynamic linker should not map anything. */
|
||||
#define ELF_MACHINE_USER_ADDRESS_MASK 0x120000000UL
|
||||
|
||||
/* Translate a processor specific dynamic tag to the index in l_info array. */
|
||||
#define DT_ALPHA(x) (DT_ALPHA_##x - DT_LOPROC + DT_NUM)
|
||||
|
||||
/* Return nonzero iff ELF header is compatible with the running host. */
|
||||
static inline int
|
||||
elf_machine_matches_host (const Elf64_Ehdr *ehdr)
|
||||
{
|
||||
return ehdr->e_machine == EM_ALPHA;
|
||||
}
|
||||
|
||||
/* Return the link-time address of _DYNAMIC. The multiple-got-capable
|
||||
linker no longer allocates the first .got entry for this. But not to
|
||||
worry, no special tricks are needed. */
|
||||
static inline Elf64_Addr
|
||||
elf_machine_dynamic (void)
|
||||
{
|
||||
#ifndef NO_AXP_MULTI_GOT_LD
|
||||
return (Elf64_Addr) &_DYNAMIC;
|
||||
#else
|
||||
register Elf64_Addr *gp __asm__ ("$29");
|
||||
return gp[-4096];
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Return the run-time load address of the shared object. */
|
||||
|
||||
static inline Elf64_Addr
|
||||
elf_machine_load_address (void)
|
||||
{
|
||||
/* This relies on the compiler using gp-relative addresses for static symbols. */
|
||||
static void *dot = ˙
|
||||
return (void *)&dot - dot;
|
||||
}
|
||||
|
||||
/* Set up the loaded object described by L so its unrelocated PLT
|
||||
entries will jump to the on-demand fixup code in dl-runtime.c. */
|
||||
|
||||
static inline int
|
||||
elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
|
||||
{
|
||||
extern char _dl_runtime_resolve_new[] attribute_hidden;
|
||||
extern char _dl_runtime_profile_new[] attribute_hidden;
|
||||
extern char _dl_runtime_resolve_old[] attribute_hidden;
|
||||
extern char _dl_runtime_profile_old[] attribute_hidden;
|
||||
|
||||
struct pltgot {
|
||||
char *resolve;
|
||||
struct link_map *link;
|
||||
};
|
||||
|
||||
struct pltgot *pg;
|
||||
long secureplt;
|
||||
char *resolve;
|
||||
|
||||
if (map->l_info[DT_JMPREL] == 0 || !lazy)
|
||||
return lazy;
|
||||
|
||||
/* Check to see if we're using the read-only plt form. */
|
||||
secureplt = map->l_info[DT_ALPHA(PLTRO)] != 0;
|
||||
|
||||
/* If the binary uses the read-only secure plt format, PG points to
|
||||
the .got.plt section, which is the right place for ld.so to place
|
||||
its hooks. Otherwise, PG is currently pointing at the start of
|
||||
the plt; the hooks go at offset 16. */
|
||||
pg = (struct pltgot *) D_PTR (map, l_info[DT_PLTGOT]);
|
||||
pg += !secureplt;
|
||||
|
||||
/* This function will be called to perform the relocation. They're
|
||||
not declared as functions to convince the compiler to use gp
|
||||
relative relocations for them. */
|
||||
if (secureplt)
|
||||
resolve = _dl_runtime_resolve_new;
|
||||
else
|
||||
resolve = _dl_runtime_resolve_old;
|
||||
|
||||
if (__builtin_expect (profile, 0))
|
||||
{
|
||||
if (secureplt)
|
||||
resolve = _dl_runtime_profile_new;
|
||||
else
|
||||
resolve = _dl_runtime_profile_old;
|
||||
|
||||
if (GLRO(dl_profile) && _dl_name_match_p (GLRO(dl_profile), map))
|
||||
{
|
||||
/* This is the object we are looking for. Say that we really
|
||||
want profiling and the timers are started. */
|
||||
GL(dl_profile_map) = map;
|
||||
}
|
||||
}
|
||||
|
||||
pg->resolve = resolve;
|
||||
pg->link = map;
|
||||
|
||||
return lazy;
|
||||
}
|
||||
|
||||
/* Initial entry point code for the dynamic linker.
|
||||
The C function `_dl_start' is the real entry point;
|
||||
its return value is the user program's entry point. */
|
||||
|
||||
#define RTLD_START asm ("\
|
||||
.section .text \n\
|
||||
.set at \n\
|
||||
.globl _start \n\
|
||||
.ent _start \n\
|
||||
_start: \n\
|
||||
.frame $31,0,$31,0 \n\
|
||||
br $gp, 0f \n\
|
||||
0: ldgp $gp, 0($gp) \n\
|
||||
.prologue 0 \n\
|
||||
/* Pass pointer to argument block to _dl_start. */ \n\
|
||||
mov $sp, $16 \n\
|
||||
bsr $26, _dl_start !samegp \n\
|
||||
.end _start \n\
|
||||
/* FALLTHRU */ \n\
|
||||
.globl _dl_start_user \n\
|
||||
.ent _dl_start_user \n\
|
||||
_dl_start_user: \n\
|
||||
.frame $31,0,$31,0 \n\
|
||||
.prologue 0 \n\
|
||||
/* Save the user entry point address in s0. */ \n\
|
||||
mov $0, $9 \n\
|
||||
/* See if we were run as a command with the executable \n\
|
||||
file name as an extra leading argument. */ \n\
|
||||
ldah $1, _dl_skip_args($gp) !gprelhigh \n\
|
||||
ldl $1, _dl_skip_args($1) !gprellow \n\
|
||||
bne $1, $fixup_stack \n\
|
||||
$fixup_stack_ret: \n\
|
||||
/* The special initializer gets called with the stack \n\
|
||||
just as the application's entry point will see it; \n\
|
||||
it can switch stacks if it moves these contents \n\
|
||||
over. */ \n\
|
||||
" RTLD_START_SPECIAL_INIT " \n\
|
||||
/* Call _dl_init(_dl_loaded, argc, argv, envp) to run \n\
|
||||
initializers. */ \n\
|
||||
ldah $16, _rtld_local($gp) !gprelhigh \n\
|
||||
ldq $16, _rtld_local($16) !gprellow \n\
|
||||
ldq $17, 0($sp) \n\
|
||||
lda $18, 8($sp) \n\
|
||||
s8addq $17, 8, $19 \n\
|
||||
addq $19, $18, $19 \n\
|
||||
bsr $26, _dl_init_internal !samegp \n\
|
||||
/* Pass our finalizer function to the user in $0. */ \n\
|
||||
ldah $0, _dl_fini($gp) !gprelhigh \n\
|
||||
lda $0, _dl_fini($0) !gprellow \n\
|
||||
/* Jump to the user's entry point. */ \n\
|
||||
mov $9, $27 \n\
|
||||
jmp ($9) \n\
|
||||
$fixup_stack: \n\
|
||||
/* Adjust the stack pointer to skip _dl_skip_args words.\n\
|
||||
This involves copying everything down, since the \n\
|
||||
stack pointer must always be 16-byte aligned. */ \n\
|
||||
ldah $7, _dl_argv_internal($gp) !gprelhigh \n\
|
||||
ldq $2, 0($sp) \n\
|
||||
ldq $5, _dl_argv_internal($7) !gprellow \n\
|
||||
subq $31, $1, $6 \n\
|
||||
subq $2, $1, $2 \n\
|
||||
s8addq $6, $5, $5 \n\
|
||||
mov $sp, $4 \n\
|
||||
s8addq $1, $sp, $3 \n\
|
||||
stq $2, 0($sp) \n\
|
||||
stq $5, _dl_argv_internal($7) !gprellow \n\
|
||||
/* Copy down argv. */ \n\
|
||||
0: ldq $5, 8($3) \n\
|
||||
addq $4, 8, $4 \n\
|
||||
addq $3, 8, $3 \n\
|
||||
stq $5, 0($4) \n\
|
||||
bne $5, 0b \n\
|
||||
/* Copy down envp. */ \n\
|
||||
1: ldq $5, 8($3) \n\
|
||||
addq $4, 8, $4 \n\
|
||||
addq $3, 8, $3 \n\
|
||||
stq $5, 0($4) \n\
|
||||
bne $5, 1b \n\
|
||||
/* Copy down auxiliary table. */ \n\
|
||||
2: ldq $5, 8($3) \n\
|
||||
ldq $6, 16($3) \n\
|
||||
addq $4, 16, $4 \n\
|
||||
addq $3, 16, $3 \n\
|
||||
stq $5, -8($4) \n\
|
||||
stq $6, 0($4) \n\
|
||||
bne $5, 2b \n\
|
||||
br $fixup_stack_ret \n\
|
||||
.end _dl_start_user \n\
|
||||
.set noat \n\
|
||||
.previous");
|
||||
|
||||
#ifndef RTLD_START_SPECIAL_INIT
|
||||
#define RTLD_START_SPECIAL_INIT /* nothing */
|
||||
#endif
|
||||
|
||||
/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry
|
||||
or TLS variables, so undefined references should not be allowed
|
||||
to define the value.
|
||||
|
||||
ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve
|
||||
to one of the main executable's symbols, as for a COPY reloc.
|
||||
This is unused on Alpha. */
|
||||
|
||||
# define elf_machine_type_class(type) \
|
||||
(((type) == R_ALPHA_JMP_SLOT \
|
||||
|| (type) == R_ALPHA_DTPMOD64 \
|
||||
|| (type) == R_ALPHA_DTPREL64 \
|
||||
|| (type) == R_ALPHA_TPREL64) * ELF_RTYPE_CLASS_PLT)
|
||||
|
||||
/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
|
||||
#define ELF_MACHINE_JMP_SLOT R_ALPHA_JMP_SLOT
|
||||
|
||||
/* The alpha never uses Elf64_Rel relocations. */
|
||||
#define ELF_MACHINE_NO_REL 1
|
||||
|
||||
/* We define an initialization functions. This is called very early in
|
||||
* _dl_sysdep_start. */
|
||||
#define DL_PLATFORM_INIT dl_platform_init ()
|
||||
|
||||
static inline void __attribute__ ((unused))
|
||||
dl_platform_init (void)
|
||||
{
|
||||
if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0')
|
||||
/* Avoid an empty string which would disturb us. */
|
||||
GLRO(dl_platform) = NULL;
|
||||
}
|
||||
|
||||
/* Fix up the instructions of a PLT entry to invoke the function
|
||||
rather than the dynamic linker. */
|
||||
static inline Elf64_Addr
|
||||
elf_machine_fixup_plt (struct link_map *map, lookup_t t,
|
||||
const Elf64_Rela *reloc,
|
||||
Elf64_Addr *got_addr, Elf64_Addr value)
|
||||
{
|
||||
const Elf64_Rela *rela_plt;
|
||||
Elf64_Word *plte;
|
||||
long int edisp;
|
||||
|
||||
/* Store the value we are going to load. */
|
||||
*got_addr = value;
|
||||
|
||||
/* If this binary uses the read-only secure plt format, we're done. */
|
||||
if (map->l_info[DT_ALPHA(PLTRO)])
|
||||
return value;
|
||||
|
||||
/* Otherwise we have to modify the plt entry in place to do the branch. */
|
||||
|
||||
/* Recover the PLT entry address by calculating reloc's index into the
|
||||
.rela.plt, and finding that entry in the .plt. */
|
||||
rela_plt = (const Elf64_Rela *) D_PTR (map, l_info[DT_JMPREL]);
|
||||
plte = (Elf64_Word *) (D_PTR (map, l_info[DT_PLTGOT]) + 32);
|
||||
plte += 3 * (reloc - rela_plt);
|
||||
|
||||
/* Find the displacement from the plt entry to the function. */
|
||||
edisp = (long int) (value - (Elf64_Addr)&plte[3]) / 4;
|
||||
|
||||
if (edisp >= -0x100000 && edisp < 0x100000)
|
||||
{
|
||||
/* If we are in range, use br to perfect branch prediction and
|
||||
elide the dependency on the address load. This case happens,
|
||||
e.g., when a shared library call is resolved to the same library. */
|
||||
|
||||
int hi, lo;
|
||||
hi = value - (Elf64_Addr)&plte[0];
|
||||
lo = (short int) hi;
|
||||
hi = (hi - lo) >> 16;
|
||||
|
||||
/* Emit "lda $27,lo($27)" */
|
||||
plte[1] = 0x237b0000 | (lo & 0xffff);
|
||||
|
||||
/* Emit "br $31,function" */
|
||||
plte[2] = 0xc3e00000 | (edisp & 0x1fffff);
|
||||
|
||||
/* Think about thread-safety -- the previous instructions must be
|
||||
committed to memory before the first is overwritten. */
|
||||
__asm__ __volatile__("wmb" : : : "memory");
|
||||
|
||||
/* Emit "ldah $27,hi($27)" */
|
||||
plte[0] = 0x277b0000 | (hi & 0xffff);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Don't bother with the hint since we already know the hint is
|
||||
wrong. Eliding it prevents the wrong page from getting pulled
|
||||
into the cache. */
|
||||
|
||||
int hi, lo;
|
||||
hi = (Elf64_Addr)got_addr - (Elf64_Addr)&plte[0];
|
||||
lo = (short)hi;
|
||||
hi = (hi - lo) >> 16;
|
||||
|
||||
/* Emit "ldq $27,lo($27)" */
|
||||
plte[1] = 0xa77b0000 | (lo & 0xffff);
|
||||
|
||||
/* Emit "jmp $31,($27)" */
|
||||
plte[2] = 0x6bfb0000;
|
||||
|
||||
/* Think about thread-safety -- the previous instructions must be
|
||||
committed to memory before the first is overwritten. */
|
||||
__asm__ __volatile__("wmb" : : : "memory");
|
||||
|
||||
/* Emit "ldah $27,hi($27)" */
|
||||
plte[0] = 0x277b0000 | (hi & 0xffff);
|
||||
}
|
||||
|
||||
/* At this point, if we've been doing runtime resolution, Icache is dirty.
|
||||
This will be taken care of in _dl_runtime_resolve. If instead we are
|
||||
doing this as part of non-lazy startup relocation, that bit of code
|
||||
hasn't made it into Icache yet, so there's nothing to clean up. */
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
/* Return the final value of a plt relocation. */
|
||||
static inline Elf64_Addr
|
||||
elf_machine_plt_value (struct link_map *map, const Elf64_Rela *reloc,
|
||||
Elf64_Addr value)
|
||||
{
|
||||
return value + reloc->r_addend;
|
||||
}
|
||||
|
||||
/* Names of the architecture-specific auditing callback functions. */
|
||||
#define ARCH_LA_PLTENTER alpha_gnu_pltenter
|
||||
#define ARCH_LA_PLTEXIT alpha_gnu_pltexit
|
||||
|
||||
#endif /* !dl_machine_h */
|
||||
|
||||
#ifdef RESOLVE_MAP
|
||||
|
||||
/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
|
||||
MAP is the object containing the reloc. */
|
||||
auto inline void
|
||||
__attribute__ ((always_inline))
|
||||
elf_machine_rela (struct link_map *map,
|
||||
const Elf64_Rela *reloc,
|
||||
const Elf64_Sym *sym,
|
||||
const struct r_found_version *version,
|
||||
void *const reloc_addr_arg,
|
||||
int skip_ifunc)
|
||||
{
|
||||
Elf64_Addr *const reloc_addr = reloc_addr_arg;
|
||||
unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info);
|
||||
|
||||
#if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC && !defined SHARED
|
||||
/* This is defined in rtld.c, but nowhere in the static libc.a; make the
|
||||
reference weak so static programs can still link. This declaration
|
||||
cannot be done when compiling rtld.c (i.e. #ifdef RTLD_BOOTSTRAP)
|
||||
because rtld.c contains the common defn for _dl_rtld_map, which is
|
||||
incompatible with a weak decl in the same file. */
|
||||
weak_extern (_dl_rtld_map);
|
||||
#endif
|
||||
|
||||
/* We cannot use a switch here because we cannot locate the switch
|
||||
jump table until we've self-relocated. */
|
||||
|
||||
#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
|
||||
if (__builtin_expect (r_type == R_ALPHA_RELATIVE, 0))
|
||||
{
|
||||
# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
|
||||
/* Already done in dynamic linker. */
|
||||
if (map != &GL(dl_rtld_map))
|
||||
# endif
|
||||
{
|
||||
/* XXX Make some timings. Maybe it's preferable to test for
|
||||
unaligned access and only do it the complex way if necessary. */
|
||||
Elf64_Addr reloc_addr_val;
|
||||
|
||||
/* Load value without causing unaligned trap. */
|
||||
memcpy (&reloc_addr_val, reloc_addr_arg, 8);
|
||||
reloc_addr_val += map->l_addr;
|
||||
|
||||
/* Store value without causing unaligned trap. */
|
||||
memcpy (reloc_addr_arg, &reloc_addr_val, 8);
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (__builtin_expect (r_type == R_ALPHA_NONE, 0))
|
||||
return;
|
||||
else
|
||||
{
|
||||
struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
|
||||
Elf64_Addr sym_value;
|
||||
Elf64_Addr sym_raw_value;
|
||||
|
||||
sym_raw_value = sym_value = reloc->r_addend;
|
||||
if (sym_map)
|
||||
{
|
||||
sym_raw_value += sym->st_value;
|
||||
sym_value = sym_raw_value + sym_map->l_addr;
|
||||
}
|
||||
|
||||
if (r_type == R_ALPHA_GLOB_DAT)
|
||||
*reloc_addr = sym_value;
|
||||
#ifdef RESOLVE_CONFLICT_FIND_MAP
|
||||
/* In .gnu.conflict section, R_ALPHA_JMP_SLOT relocations have
|
||||
R_ALPHA_JMP_SLOT in lower 8 bits and the remaining 24 bits
|
||||
are .rela.plt index. */
|
||||
else if ((r_type & 0xff) == R_ALPHA_JMP_SLOT)
|
||||
{
|
||||
/* elf_machine_fixup_plt needs the map reloc_addr points into,
|
||||
while in _dl_resolve_conflicts map is _dl_loaded. */
|
||||
RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
|
||||
reloc = ((const Elf64_Rela *) D_PTR (map, l_info[DT_JMPREL]))
|
||||
+ (r_type >> 8);
|
||||
elf_machine_fixup_plt (map, 0, reloc, reloc_addr, sym_value);
|
||||
}
|
||||
#else
|
||||
else if (r_type == R_ALPHA_JMP_SLOT)
|
||||
elf_machine_fixup_plt (map, 0, reloc, reloc_addr, sym_value);
|
||||
#endif
|
||||
#ifndef RTLD_BOOTSTRAP
|
||||
else if (r_type == R_ALPHA_REFQUAD)
|
||||
{
|
||||
/* Store value without causing unaligned trap. */
|
||||
memcpy (reloc_addr_arg, &sym_value, 8);
|
||||
}
|
||||
#endif
|
||||
else if (r_type == R_ALPHA_DTPMOD64)
|
||||
{
|
||||
# ifdef RTLD_BOOTSTRAP
|
||||
/* During startup the dynamic linker is always index 1. */
|
||||
*reloc_addr = 1;
|
||||
# else
|
||||
/* Get the information from the link map returned by the
|
||||
resolv function. */
|
||||
if (sym_map != NULL)
|
||||
*reloc_addr = sym_map->l_tls_modid;
|
||||
# endif
|
||||
}
|
||||
else if (r_type == R_ALPHA_DTPREL64)
|
||||
{
|
||||
# ifndef RTLD_BOOTSTRAP
|
||||
/* During relocation all TLS symbols are defined and used.
|
||||
Therefore the offset is already correct. */
|
||||
*reloc_addr = sym_raw_value;
|
||||
# endif
|
||||
}
|
||||
else if (r_type == R_ALPHA_TPREL64)
|
||||
{
|
||||
# ifdef RTLD_BOOTSTRAP
|
||||
*reloc_addr = sym_raw_value + map->l_tls_offset;
|
||||
# else
|
||||
if (sym_map)
|
||||
{
|
||||
CHECK_STATIC_TLS (map, sym_map);
|
||||
*reloc_addr = sym_raw_value + sym_map->l_tls_offset;
|
||||
}
|
||||
# endif
|
||||
}
|
||||
else
|
||||
_dl_reloc_bad_type (map, r_type, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Let do-rel.h know that on Alpha if l_addr is 0, all RELATIVE relocs
|
||||
can be skipped. */
|
||||
#define ELF_MACHINE_REL_RELATIVE 1
|
||||
|
||||
auto inline void
|
||||
__attribute__ ((always_inline))
|
||||
elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
|
||||
void *const reloc_addr_arg)
|
||||
{
|
||||
/* XXX Make some timings. Maybe it's preferable to test for
|
||||
unaligned access and only do it the complex way if necessary. */
|
||||
Elf64_Addr reloc_addr_val;
|
||||
|
||||
/* Load value without causing unaligned trap. */
|
||||
memcpy (&reloc_addr_val, reloc_addr_arg, 8);
|
||||
reloc_addr_val += l_addr;
|
||||
|
||||
/* Store value without causing unaligned trap. */
|
||||
memcpy (reloc_addr_arg, &reloc_addr_val, 8);
|
||||
}
|
||||
|
||||
auto inline void
|
||||
__attribute__ ((always_inline))
|
||||
elf_machine_lazy_rel (struct link_map *map,
|
||||
Elf64_Addr l_addr, const Elf64_Rela *reloc,
|
||||
int skip_ifunc)
|
||||
{
|
||||
Elf64_Addr * const reloc_addr = (void *)(l_addr + reloc->r_offset);
|
||||
unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info);
|
||||
|
||||
if (r_type == R_ALPHA_JMP_SLOT)
|
||||
{
|
||||
/* Perform a RELATIVE reloc on the .got entry that transfers
|
||||
to the .plt. */
|
||||
*reloc_addr += l_addr;
|
||||
}
|
||||
else if (r_type == R_ALPHA_NONE)
|
||||
return;
|
||||
else
|
||||
_dl_reloc_bad_type (map, r_type, 1);
|
||||
}
|
||||
|
||||
#endif /* RESOLVE_MAP */
|
63
ports/sysdeps/alpha/dl-procinfo.c
Normal file
63
ports/sysdeps/alpha/dl-procinfo.c
Normal file
@ -0,0 +1,63 @@
|
||||
/* Data for Alpha version of processor capability information.
|
||||
Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Aurelien Jarno <aurelien@aurel32.net>, 2008.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This information must be kept in sync with the _DL_PLATFORM_COUNT
|
||||
definitions in procinfo.h.
|
||||
|
||||
If anything should be added here check whether the size of each string
|
||||
is still ok with the given array size.
|
||||
|
||||
All the #ifdefs in the definitions are quite irritating but
|
||||
necessary if we want to avoid duplicating the information. There
|
||||
are three different modes:
|
||||
|
||||
- PROCINFO_DECL is defined. This means we are only interested in
|
||||
declarations.
|
||||
|
||||
- PROCINFO_DECL is not defined:
|
||||
|
||||
+ if SHARED is defined the file is included in an array
|
||||
initializer. The .element = { ... } syntax is needed.
|
||||
|
||||
+ if SHARED is not defined a normal array initialization is
|
||||
needed.
|
||||
*/
|
||||
|
||||
#ifndef PROCINFO_CLASS
|
||||
#define PROCINFO_CLASS
|
||||
#endif
|
||||
|
||||
#if !defined PROCINFO_DECL && defined SHARED
|
||||
._dl_alpha_platforms
|
||||
#else
|
||||
PROCINFO_CLASS const char _dl_alpha_platforms[5][5]
|
||||
#endif
|
||||
#ifndef PROCINFO_DECL
|
||||
= {
|
||||
"ev4", "ev5", "ev56", "ev6", "ev67"
|
||||
}
|
||||
#endif
|
||||
#if !defined SHARED || defined PROCINFO_DECL
|
||||
;
|
||||
#else
|
||||
,
|
||||
#endif
|
||||
|
||||
#undef PROCINFO_DECL
|
||||
#undef PROCINFO_CLASS
|
67
ports/sysdeps/alpha/dl-procinfo.h
Normal file
67
ports/sysdeps/alpha/dl-procinfo.h
Normal file
@ -0,0 +1,67 @@
|
||||
/* Alpha version of processor capability information handling macros.
|
||||
Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Aurelien Jarno <aurelien@aurel32.net>, 2008.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _DL_PROCINFO_H
|
||||
#define _DL_PROCINFO_H 1
|
||||
|
||||
#include <ldsodefs.h>
|
||||
|
||||
|
||||
/* Mask to filter out platforms. */
|
||||
#define _DL_HWCAP_PLATFORM (-1ULL)
|
||||
|
||||
#define _DL_PLATFORMS_COUNT 5
|
||||
|
||||
static inline const char *
|
||||
__attribute__ ((unused))
|
||||
_dl_platform_string (int idx)
|
||||
{
|
||||
return GLRO(dl_alpha_platforms)[idx];
|
||||
};
|
||||
|
||||
static inline int
|
||||
__attribute__ ((unused, always_inline))
|
||||
_dl_string_platform (const char *str)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (str != NULL)
|
||||
for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
|
||||
{
|
||||
if (strcmp (str, _dl_platform_string (i)) == 0)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
|
||||
/* We cannot provide a general printing function. */
|
||||
#define _dl_procinfo(word) -1
|
||||
|
||||
/* There are no hardware capabilities defined. */
|
||||
#define _dl_hwcap_string(idx) ""
|
||||
|
||||
/* By default there is no important hardware capability. */
|
||||
#define HWCAP_IMPORTANT (0)
|
||||
|
||||
/* We don't have any hardware capabilities. */
|
||||
#define _DL_HWCAP_COUNT 0
|
||||
|
||||
#define _dl_string_hwcap(str) (-1)
|
||||
|
||||
#endif /* dl-procinfo.h */
|
23
ports/sysdeps/alpha/dl-sysdep.h
Normal file
23
ports/sysdeps/alpha/dl-sysdep.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* System-specific settings for dynamic linker code. Alpha version.
|
||||
Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include_next <dl-sysdep.h>
|
||||
|
||||
/* _dl_argv cannot be attribute_relro, because _dl_start_user
|
||||
might write into it after _dl_start returns. */
|
||||
#define DL_ARGV_NOT_RELRO 1
|
30
ports/sysdeps/alpha/dl-tls.h
Normal file
30
ports/sysdeps/alpha/dl-tls.h
Normal file
@ -0,0 +1,30 @@
|
||||
/* Thread-local storage handling in the ELF dynamic linker. Alpha version.
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
|
||||
/* Type used for the representation of TLS information in the GOT. */
|
||||
typedef struct
|
||||
{
|
||||
unsigned long int ti_module;
|
||||
unsigned long int ti_offset;
|
||||
} tls_index;
|
||||
|
||||
extern void *__tls_get_addr (tls_index *ti);
|
||||
|
||||
/* Value used for dtv entries for which the allocation is delayed. */
|
||||
#define TLS_DTV_UNALLOCATED ((void *) -1l)
|
540
ports/sysdeps/alpha/dl-trampoline.S
Normal file
540
ports/sysdeps/alpha/dl-trampoline.S
Normal file
@ -0,0 +1,540 @@
|
||||
/* PLT trampolines. Alpha version.
|
||||
Copyright (C) 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.set noat
|
||||
|
||||
.macro savei regno, offset
|
||||
stq $\regno, \offset($30)
|
||||
cfi_rel_offset(\regno, \offset)
|
||||
.endm
|
||||
|
||||
.macro savef regno, offset
|
||||
stt $f\regno, \offset($30)
|
||||
cfi_rel_offset(\regno+32, \offset)
|
||||
.endm
|
||||
|
||||
.align 4
|
||||
.globl _dl_runtime_resolve_new
|
||||
.ent _dl_runtime_resolve_new
|
||||
|
||||
#undef FRAMESIZE
|
||||
#define FRAMESIZE 14*8
|
||||
|
||||
_dl_runtime_resolve_new:
|
||||
.frame $30, FRAMESIZE, $26, 0
|
||||
.mask 0x4000000, 0
|
||||
|
||||
ldah $29, 0($27) !gpdisp!1
|
||||
lda $30, -FRAMESIZE($30)
|
||||
stq $26, 0*8($30)
|
||||
stq $16, 2*8($30)
|
||||
|
||||
stq $17, 3*8($30)
|
||||
lda $29, 0($29) !gpdisp!1
|
||||
stq $18, 4*8($30)
|
||||
mov $28, $16 /* link_map from .got.plt */
|
||||
|
||||
stq $19, 5*8($30)
|
||||
mov $25, $17 /* offset of reloc entry */
|
||||
stq $20, 6*8($30)
|
||||
mov $26, $18 /* return address */
|
||||
|
||||
stq $21, 7*8($30)
|
||||
stt $f16, 8*8($30)
|
||||
stt $f17, 9*8($30)
|
||||
stt $f18, 10*8($30)
|
||||
|
||||
stt $f19, 11*8($30)
|
||||
stt $f20, 12*8($30)
|
||||
stt $f21, 13*8($30)
|
||||
.prologue 2
|
||||
|
||||
bsr $26, _dl_fixup !samegp
|
||||
mov $0, $27
|
||||
|
||||
ldq $26, 0*8($30)
|
||||
ldq $16, 2*8($30)
|
||||
ldq $17, 3*8($30)
|
||||
ldq $18, 4*8($30)
|
||||
ldq $19, 5*8($30)
|
||||
ldq $20, 6*8($30)
|
||||
ldq $21, 7*8($30)
|
||||
ldt $f16, 8*8($30)
|
||||
ldt $f17, 9*8($30)
|
||||
ldt $f18, 10*8($30)
|
||||
ldt $f19, 11*8($30)
|
||||
ldt $f20, 12*8($30)
|
||||
ldt $f21, 13*8($30)
|
||||
lda $30, FRAMESIZE($30)
|
||||
jmp $31, ($27), 0
|
||||
.end _dl_runtime_resolve_new
|
||||
|
||||
.globl _dl_runtime_profile_new
|
||||
.type _dl_runtime_profile_new, @function
|
||||
|
||||
#undef FRAMESIZE
|
||||
#define FRAMESIZE 20*8
|
||||
|
||||
/* We save the registers in a different order than desired by
|
||||
.mask/.fmask, so we have to use explicit cfi directives. */
|
||||
cfi_startproc
|
||||
|
||||
_dl_runtime_profile_new:
|
||||
ldah $29, 0($27) !gpdisp!2
|
||||
lda $30, -FRAMESIZE($30)
|
||||
savei 26, 0*8
|
||||
stq $16, 2*8($30)
|
||||
|
||||
stq $17, 3*8($30)
|
||||
lda $29, 0($29) !gpdisp!2
|
||||
stq $18, 4*8($30)
|
||||
lda $1, FRAMESIZE($30) /* incoming sp value */
|
||||
|
||||
stq $1, 1*8($30)
|
||||
stq $19, 5*8($30)
|
||||
stq $20, 6*8($30)
|
||||
mov $28, $16 /* link_map from .got.plt */
|
||||
|
||||
stq $21, 7*8($30)
|
||||
mov $25, $17 /* offset of reloc entry */
|
||||
stt $f16, 8*8($30)
|
||||
mov $26, $18 /* return address */
|
||||
|
||||
stt $f17, 9*8($30)
|
||||
mov $30, $19 /* La_alpha_regs address */
|
||||
stt $f18, 10*8($30)
|
||||
lda $20, 14*8($30) /* framesize address */
|
||||
|
||||
stt $f19, 11*8($30)
|
||||
stt $f20, 12*8($30)
|
||||
stt $f21, 13*8($30)
|
||||
stq $28, 16*8($30)
|
||||
stq $25, 17*8($30)
|
||||
|
||||
bsr $26, _dl_profile_fixup !samegp
|
||||
mov $0, $27
|
||||
|
||||
/* Discover if we're wrapping this call. */
|
||||
ldq $18, 14*8($30)
|
||||
bge $18, 1f
|
||||
|
||||
ldq $26, 0*8($30)
|
||||
ldq $16, 2*8($30)
|
||||
ldq $17, 3*8($30)
|
||||
ldq $18, 4*8($30)
|
||||
ldq $19, 5*8($30)
|
||||
ldq $20, 6*8($30)
|
||||
ldq $21, 7*8($30)
|
||||
ldt $f16, 8*8($30)
|
||||
ldt $f17, 9*8($30)
|
||||
ldt $f18, 10*8($30)
|
||||
ldt $f19, 11*8($30)
|
||||
ldt $f20, 12*8($30)
|
||||
ldt $f21, 13*8($30)
|
||||
lda $30, FRAMESIZE($30)
|
||||
jmp $31, ($27), 0
|
||||
|
||||
1:
|
||||
/* Create a frame pointer and allocate a new argument frame. */
|
||||
savei 15, 15*8
|
||||
mov $30, $15
|
||||
cfi_def_cfa_register (15)
|
||||
addq $18, 15, $18
|
||||
bic $18, 15, $18
|
||||
subq $30, $18, $30
|
||||
|
||||
/* Save the call destination around memcpy. */
|
||||
stq $0, 14*8($30)
|
||||
|
||||
/* Copy the stack arguments into place. */
|
||||
lda $16, 0($30)
|
||||
lda $17, FRAMESIZE($15)
|
||||
jsr $26, memcpy
|
||||
ldgp $29, 0($26)
|
||||
|
||||
/* Reload the argument registers. */
|
||||
ldq $27, 14*8($30)
|
||||
ldq $16, 2*8($15)
|
||||
ldq $17, 3*8($15)
|
||||
ldq $18, 4*8($15)
|
||||
ldq $19, 5*8($15)
|
||||
ldq $20, 6*8($15)
|
||||
ldq $21, 7*8($15)
|
||||
ldt $f16, 8*8($15)
|
||||
ldt $f17, 9*8($15)
|
||||
ldt $f18, 10*8($15)
|
||||
ldt $f19, 11*8($15)
|
||||
ldt $f20, 12*8($15)
|
||||
ldt $f21, 13*8($15)
|
||||
|
||||
jsr $26, ($27), 0
|
||||
ldgp $29, 0($26)
|
||||
|
||||
/* Set up for call to _dl_call_pltexit. */
|
||||
ldq $16, 16*8($15)
|
||||
ldq $17, 17*8($15)
|
||||
stq $0, 16*8($15)
|
||||
lda $18, 0($15)
|
||||
stq $1, 17*8($15)
|
||||
lda $19, 16*8($15)
|
||||
stt $f0, 18*8($15)
|
||||
stt $f1, 19*8($15)
|
||||
bsr $26, _dl_call_pltexit !samegp
|
||||
|
||||
mov $15, $30
|
||||
cfi_def_cfa_register (30)
|
||||
ldq $26, 0($30)
|
||||
ldq $15, 15*8($30)
|
||||
lda $30, FRAMESIZE($30)
|
||||
ret
|
||||
|
||||
cfi_endproc
|
||||
.size _dl_runtime_profile_new, .-_dl_runtime_profile_new
|
||||
|
||||
.align 4
|
||||
.globl _dl_runtime_resolve_old
|
||||
.ent _dl_runtime_resolve_old
|
||||
|
||||
#undef FRAMESIZE
|
||||
#define FRAMESIZE 44*8
|
||||
|
||||
_dl_runtime_resolve_old:
|
||||
lda $30, -FRAMESIZE($30)
|
||||
.frame $30, FRAMESIZE, $26
|
||||
/* Preserve all registers that C normally doesn't. */
|
||||
stq $26, 0*8($30)
|
||||
stq $0, 1*8($30)
|
||||
stq $1, 2*8($30)
|
||||
stq $2, 3*8($30)
|
||||
stq $3, 4*8($30)
|
||||
stq $4, 5*8($30)
|
||||
stq $5, 6*8($30)
|
||||
stq $6, 7*8($30)
|
||||
stq $7, 8*8($30)
|
||||
stq $8, 9*8($30)
|
||||
stq $16, 10*8($30)
|
||||
stq $17, 11*8($30)
|
||||
stq $18, 12*8($30)
|
||||
stq $19, 13*8($30)
|
||||
stq $20, 14*8($30)
|
||||
stq $21, 15*8($30)
|
||||
stq $22, 16*8($30)
|
||||
stq $23, 17*8($30)
|
||||
stq $24, 18*8($30)
|
||||
stq $25, 19*8($30)
|
||||
stq $29, 20*8($30)
|
||||
stt $f0, 21*8($30)
|
||||
stt $f1, 22*8($30)
|
||||
stt $f10, 23*8($30)
|
||||
stt $f11, 24*8($30)
|
||||
stt $f12, 25*8($30)
|
||||
stt $f13, 26*8($30)
|
||||
stt $f14, 27*8($30)
|
||||
stt $f15, 28*8($30)
|
||||
stt $f16, 29*8($30)
|
||||
stt $f17, 30*8($30)
|
||||
stt $f18, 31*8($30)
|
||||
stt $f19, 32*8($30)
|
||||
stt $f20, 33*8($30)
|
||||
stt $f21, 34*8($30)
|
||||
stt $f22, 35*8($30)
|
||||
stt $f23, 36*8($30)
|
||||
stt $f24, 37*8($30)
|
||||
stt $f25, 38*8($30)
|
||||
stt $f26, 39*8($30)
|
||||
stt $f27, 40*8($30)
|
||||
stt $f28, 41*8($30)
|
||||
stt $f29, 42*8($30)
|
||||
stt $f30, 43*8($30)
|
||||
.mask 0x27ff01ff, -FRAMESIZE
|
||||
.fmask 0xfffffc03, -FRAMESIZE+21*8
|
||||
/* Set up our GP. */
|
||||
br $29, .+4
|
||||
ldgp $29, 0($29)
|
||||
.prologue 0
|
||||
/* Set up the arguments for _dl_fixup:
|
||||
$16 = link_map out of plt0
|
||||
$17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24
|
||||
$18 = return address
|
||||
*/
|
||||
subq $28, $27, $17
|
||||
ldq $16, 8($27)
|
||||
subq $17, 20, $17
|
||||
mov $26, $18
|
||||
addq $17, $17, $17
|
||||
bsr $26, _dl_fixup !samegp
|
||||
|
||||
/* Move the destination address into position. */
|
||||
mov $0, $27
|
||||
/* Restore program registers. */
|
||||
ldq $26, 0*8($30)
|
||||
ldq $0, 1*8($30)
|
||||
ldq $1, 2*8($30)
|
||||
ldq $2, 3*8($30)
|
||||
ldq $3, 4*8($30)
|
||||
ldq $4, 5*8($30)
|
||||
ldq $5, 6*8($30)
|
||||
ldq $6, 7*8($30)
|
||||
ldq $7, 8*8($30)
|
||||
ldq $8, 9*8($30)
|
||||
ldq $16, 10*8($30)
|
||||
ldq $17, 11*8($30)
|
||||
ldq $18, 12*8($30)
|
||||
ldq $19, 13*8($30)
|
||||
ldq $20, 14*8($30)
|
||||
ldq $21, 15*8($30)
|
||||
ldq $22, 16*8($30)
|
||||
ldq $23, 17*8($30)
|
||||
ldq $24, 18*8($30)
|
||||
ldq $25, 19*8($30)
|
||||
ldq $29, 20*8($30)
|
||||
ldt $f0, 21*8($30)
|
||||
ldt $f1, 22*8($30)
|
||||
ldt $f10, 23*8($30)
|
||||
ldt $f11, 24*8($30)
|
||||
ldt $f12, 25*8($30)
|
||||
ldt $f13, 26*8($30)
|
||||
ldt $f14, 27*8($30)
|
||||
ldt $f15, 28*8($30)
|
||||
ldt $f16, 29*8($30)
|
||||
ldt $f17, 30*8($30)
|
||||
ldt $f18, 31*8($30)
|
||||
ldt $f19, 32*8($30)
|
||||
ldt $f20, 33*8($30)
|
||||
ldt $f21, 34*8($30)
|
||||
ldt $f22, 35*8($30)
|
||||
ldt $f23, 36*8($30)
|
||||
ldt $f24, 37*8($30)
|
||||
ldt $f25, 38*8($30)
|
||||
ldt $f26, 39*8($30)
|
||||
ldt $f27, 40*8($30)
|
||||
ldt $f28, 41*8($30)
|
||||
ldt $f29, 42*8($30)
|
||||
ldt $f30, 43*8($30)
|
||||
/* Flush the Icache after having modified the .plt code. */
|
||||
imb
|
||||
/* Clean up and turn control to the destination */
|
||||
lda $30, FRAMESIZE($30)
|
||||
jmp $31, ($27)
|
||||
|
||||
.end _dl_runtime_resolve_old
|
||||
|
||||
.globl _dl_runtime_profile_old
|
||||
.usepv _dl_runtime_profile_old, no
|
||||
.type _dl_runtime_profile_old, @function
|
||||
|
||||
/* We save the registers in a different order than desired by
|
||||
.mask/.fmask, so we have to use explicit cfi directives. */
|
||||
cfi_startproc
|
||||
|
||||
#undef FRAMESIZE
|
||||
#define FRAMESIZE 50*8
|
||||
|
||||
.align 4
|
||||
_dl_runtime_profile_old:
|
||||
lda $30, -FRAMESIZE($30)
|
||||
cfi_adjust_cfa_offset (FRAMESIZE)
|
||||
|
||||
/* Preserve all argument registers. This also constructs the
|
||||
La_alpha_regs structure. */
|
||||
savei 26, 0*8
|
||||
savei 16, 2*8
|
||||
savei 17, 3*8
|
||||
savei 18, 4*8
|
||||
savei 19, 5*8
|
||||
savei 20, 6*8
|
||||
savei 21, 7*8
|
||||
lda $16, FRAMESIZE($30)
|
||||
savef 16, 8*8
|
||||
savef 17, 9*8
|
||||
savef 18, 10*8
|
||||
savef 19, 11*8
|
||||
savef 20, 12*8
|
||||
savef 21, 13*8
|
||||
stq $16, 1*8($30)
|
||||
|
||||
/* Preserve all registers that C normally doesn't. */
|
||||
savei 0, 14*8
|
||||
savei 1, 15*8
|
||||
savei 2, 16*8
|
||||
savei 3, 17*8
|
||||
savei 4, 18*8
|
||||
savei 5, 19*8
|
||||
savei 6, 20*8
|
||||
savei 7, 21*8
|
||||
savei 8, 22*8
|
||||
savei 22, 23*8
|
||||
savei 23, 24*8
|
||||
savei 24, 25*8
|
||||
savei 25, 26*8
|
||||
savei 29, 27*8
|
||||
savef 0, 28*8
|
||||
savef 1, 29*8
|
||||
savef 10, 30*8
|
||||
savef 11, 31*8
|
||||
savef 12, 32*8
|
||||
savef 13, 33*8
|
||||
savef 14, 34*8
|
||||
savef 15, 35*8
|
||||
savef 22, 36*8
|
||||
savef 23, 37*8
|
||||
savef 24, 38*8
|
||||
savef 25, 39*8
|
||||
savef 26, 40*8
|
||||
savef 27, 41*8
|
||||
savef 28, 42*8
|
||||
savef 29, 43*8
|
||||
savef 30, 44*8
|
||||
|
||||
/* Set up our GP. */
|
||||
br $29, .+4
|
||||
ldgp $29, 0($29)
|
||||
|
||||
/* Set up the arguments for _dl_profile_fixup:
|
||||
$16 = link_map out of plt0
|
||||
$17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24
|
||||
$18 = return address
|
||||
$19 = La_alpha_regs address
|
||||
$20 = framesize address
|
||||
*/
|
||||
subq $28, $27, $17
|
||||
ldq $16, 8($27)
|
||||
subq $17, 20, $17
|
||||
mov $26, $18
|
||||
addq $17, $17, $17
|
||||
lda $19, 0($30)
|
||||
lda $20, 45*8($30)
|
||||
stq $16, 48*8($30)
|
||||
stq $17, 49*8($30)
|
||||
|
||||
bsr $26, _dl_profile_fixup !samegp
|
||||
|
||||
/* Discover if we're wrapping this call. */
|
||||
ldq $18, 45*8($30)
|
||||
bge $18, 1f
|
||||
|
||||
/* Move the destination address into position. */
|
||||
mov $0, $27
|
||||
/* Restore program registers. */
|
||||
ldq $26, 0*8($30)
|
||||
ldq $16, 2*8($30)
|
||||
ldq $17, 3*8($30)
|
||||
ldq $18, 4*8($30)
|
||||
ldq $19, 5*8($30)
|
||||
ldq $20, 6*8($30)
|
||||
ldq $21, 7*8($30)
|
||||
ldt $f16, 8*8($30)
|
||||
ldt $f17, 9*8($30)
|
||||
ldt $f18, 10*8($30)
|
||||
ldt $f19, 11*8($30)
|
||||
ldt $f20, 12*8($30)
|
||||
ldt $f21, 13*8($30)
|
||||
ldq $0, 14*8($30)
|
||||
ldq $1, 15*8($30)
|
||||
ldq $2, 16*8($30)
|
||||
ldq $3, 17*8($30)
|
||||
ldq $4, 18*8($30)
|
||||
ldq $5, 19*8($30)
|
||||
ldq $6, 20*8($30)
|
||||
ldq $7, 21*8($30)
|
||||
ldq $8, 22*8($30)
|
||||
ldq $22, 23*8($30)
|
||||
ldq $23, 24*8($30)
|
||||
ldq $24, 25*8($30)
|
||||
ldq $25, 26*8($30)
|
||||
ldq $29, 27*8($30)
|
||||
ldt $f0, 28*8($30)
|
||||
ldt $f1, 29*8($30)
|
||||
ldt $f10, 30*8($30)
|
||||
ldt $f11, 31*8($30)
|
||||
ldt $f12, 32*8($30)
|
||||
ldt $f13, 33*8($30)
|
||||
ldt $f14, 34*8($30)
|
||||
ldt $f15, 35*8($30)
|
||||
ldt $f22, 36*8($30)
|
||||
ldt $f23, 37*8($30)
|
||||
ldt $f24, 38*8($30)
|
||||
ldt $f25, 39*8($30)
|
||||
ldt $f26, 40*8($30)
|
||||
ldt $f27, 41*8($30)
|
||||
ldt $f28, 42*8($30)
|
||||
ldt $f29, 43*8($30)
|
||||
ldt $f30, 44*8($30)
|
||||
|
||||
/* Clean up and turn control to the destination. */
|
||||
lda $30, FRAMESIZE($30)
|
||||
jmp $31, ($27)
|
||||
|
||||
1:
|
||||
/* Create a frame pointer and allocate a new argument frame. */
|
||||
savei 15, 45*8
|
||||
mov $30, $15
|
||||
cfi_def_cfa_register (15)
|
||||
addq $18, 15, $18
|
||||
bic $18, 15, $18
|
||||
subq $30, $18, $30
|
||||
|
||||
/* Save the call destination around memcpy. */
|
||||
stq $0, 46*8($30)
|
||||
|
||||
/* Copy the stack arguments into place. */
|
||||
lda $16, 0($30)
|
||||
lda $17, FRAMESIZE($15)
|
||||
jsr $26, memcpy
|
||||
ldgp $29, 0($26)
|
||||
|
||||
/* Reload the argument registers. */
|
||||
ldq $27, 46*8($30)
|
||||
ldq $16, 2*8($15)
|
||||
ldq $17, 3*8($15)
|
||||
ldq $18, 4*8($15)
|
||||
ldq $19, 5*8($15)
|
||||
ldq $20, 6*8($15)
|
||||
ldq $21, 7*8($15)
|
||||
ldt $f16, 8*8($15)
|
||||
ldt $f17, 9*8($15)
|
||||
ldt $f18, 10*8($15)
|
||||
ldt $f19, 11*8($15)
|
||||
ldt $f20, 12*8($15)
|
||||
ldt $f21, 13*8($15)
|
||||
|
||||
jsr $26, ($27), 0
|
||||
ldgp $29, 0($26)
|
||||
|
||||
/* Set up for call to _dl_call_pltexit. */
|
||||
ldq $16, 48*8($15)
|
||||
ldq $17, 49*8($15)
|
||||
stq $0, 46*8($15)
|
||||
lda $18, 0($15)
|
||||
stq $1, 47*8($15)
|
||||
lda $19, 46*8($15)
|
||||
stt $f0, 48*8($15)
|
||||
stt $f1, 49*8($15)
|
||||
bsr $26, _dl_call_pltexit !samegp
|
||||
|
||||
mov $15, $30
|
||||
cfi_def_cfa_register (30)
|
||||
ldq $26, 0($30)
|
||||
ldq $15, 45*8($30)
|
||||
lda $30, FRAMESIZE($30)
|
||||
ret
|
||||
|
||||
cfi_endproc
|
||||
.size _dl_runtime_profile_old, .-_dl_runtime_profile_old
|
90
ports/sysdeps/alpha/ffs.S
Normal file
90
ports/sysdeps/alpha/ffs.S
Normal file
@ -0,0 +1,90 @@
|
||||
/* Copyright (C) 1996, 1997, 1998, 2004 Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger (davidm@cs.arizona.edu).
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Finds the first bit set in an integer. Optimized for the Alpha
|
||||
architecture. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
|
||||
ENTRY(__ffs)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
zap $16, 0xF0, $16
|
||||
br $ffsl..ng
|
||||
#else
|
||||
.prologue 0
|
||||
zap $16, 0xF0, $16
|
||||
# FALLTHRU
|
||||
#endif
|
||||
END(__ffs)
|
||||
|
||||
.align 4
|
||||
ENTRY(ffsl)
|
||||
#ifdef PROF
|
||||
ldgp gp, 0(pv)
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.prologue 1
|
||||
$ffsl..ng:
|
||||
#else
|
||||
.prologue 0
|
||||
#endif
|
||||
not $16, $1 # e0 :
|
||||
ldi $2, -1 # .. e1 :
|
||||
cmpbge $1, $2, $3 # e0 : bit N == 1 for byte N == 0
|
||||
clr $0 # .. e1 :
|
||||
addq $3, 1, $4 # e0 :
|
||||
bic $4, $3, $3 # e1 : bit N == 1 for first byte N != 0
|
||||
and $3, 0xF0, $4 # e0 :
|
||||
and $3, 0xCC, $5 # .. e1 :
|
||||
and $3, 0xAA, $6 # e0 :
|
||||
cmovne $4, 4, $0 # .. e1 :
|
||||
cmovne $5, 2, $5 # e0 :
|
||||
cmovne $6, 1, $6 # .. e1 :
|
||||
addl $0, $5, $0 # e0 :
|
||||
addl $0, $6, $0 # e1 : $0 == N
|
||||
extbl $16, $0, $1 # e0 : $1 == byte N
|
||||
ldi $2, 1 # .. e1 :
|
||||
negq $1, $3 # e0 :
|
||||
and $3, $1, $3 # e1 : bit N == least bit set of byte N
|
||||
and $3, 0xF0, $4 # e0 :
|
||||
and $3, 0xCC, $5 # .. e1 :
|
||||
and $3, 0xAA, $6 # e0 :
|
||||
cmovne $4, 5, $2 # .. e1 :
|
||||
cmovne $5, 2, $5 # e0 :
|
||||
cmovne $6, 1, $6 # .. e1 :
|
||||
s8addl $0, $2, $0 # e0 : mult byte ofs by 8 and sum
|
||||
addl $5, $6, $5 # .. e1 :
|
||||
addl $0, $5, $0 # e0 :
|
||||
nop # .. e1 :
|
||||
cmoveq $16, 0, $0 # e0 : trap input == 0 case.
|
||||
ret # .. e1 : 18
|
||||
|
||||
END(ffsl)
|
||||
|
||||
weak_alias (__ffs, ffs)
|
||||
libc_hidden_builtin_def (ffs)
|
||||
weak_extern (ffsl)
|
||||
weak_alias (ffsl, ffsll)
|
1
ports/sysdeps/alpha/ffsll.S
Normal file
1
ports/sysdeps/alpha/ffsll.S
Normal file
@ -0,0 +1 @@
|
||||
/* This function is defined in ffs.S. */
|
23
ports/sysdeps/alpha/fpu/Versions
Normal file
23
ports/sysdeps/alpha/fpu/Versions
Normal file
@ -0,0 +1,23 @@
|
||||
libc {
|
||||
GLIBC_2.0 {
|
||||
# functions used in other libraries
|
||||
__ieee_get_fp_control; __ieee_set_fp_control;
|
||||
}
|
||||
}
|
||||
libm {
|
||||
GLIBC_2.3.4 {
|
||||
# functions implementing old complex float abi
|
||||
__c1_cabsf; __c1_cacosf; __c1_cacoshf; __c1_cargf; __c1_casinf;
|
||||
__c1_casinhf; __c1_catanf; __c1_catanhf; __c1_ccosf; __c1_ccoshf;
|
||||
__c1_cexpf; __c1_cimagf; __c1_clog10f; __c1_clogf; __c1_conjf;
|
||||
__c1_cpowf; __c1_cprojf; __c1_crealf; __c1_csinf; __c1_csinhf;
|
||||
__c1_csqrtf; __c1_ctanf; __c1_ctanhf;
|
||||
|
||||
# functions implementing new complex float abi
|
||||
cabsf; cacosf; cacoshf; cargf; casinf;
|
||||
casinhf; catanf; catanhf; ccosf; ccoshf;
|
||||
cexpf; cimagf; clog10f; clogf; conjf;
|
||||
cpowf; cprojf; crealf; csinf; csinhf;
|
||||
csqrtf; ctanf; ctanhf;
|
||||
}
|
||||
}
|
122
ports/sysdeps/alpha/fpu/bits/fenv.h
Normal file
122
ports/sysdeps/alpha/fpu/bits/fenv.h
Normal file
@ -0,0 +1,122 @@
|
||||
/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _FENV_H
|
||||
# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
/* Define the bits representing the exception.
|
||||
|
||||
Note that these are the bit positions as defined by the OSF/1
|
||||
ieee_{get,set}_control_word interface and not by the hardware fpcr.
|
||||
|
||||
See the Alpha Architecture Handbook section 4.7.7.3 for details,
|
||||
but in summary, trap shadows mean the hardware register can acquire
|
||||
extra exception bits so for proper IEEE support the tracking has to
|
||||
be done in software -- in this case with kernel support.
|
||||
|
||||
As to why the system call interface isn't in the same format as
|
||||
the hardware register, only those crazy folks at DEC can tell you. */
|
||||
|
||||
enum
|
||||
{
|
||||
#ifdef __USE_GNU
|
||||
FE_DENORMAL = 1UL << 22,
|
||||
#define FE_DENORMAL FE_DENORMAL
|
||||
#endif
|
||||
|
||||
FE_INEXACT = 1UL << 21,
|
||||
#define FE_INEXACT FE_INEXACT
|
||||
|
||||
FE_UNDERFLOW = 1UL << 20,
|
||||
#define FE_UNDERFLOW FE_UNDERFLOW
|
||||
|
||||
FE_OVERFLOW = 1UL << 19,
|
||||
#define FE_OVERFLOW FE_OVERFLOW
|
||||
|
||||
FE_DIVBYZERO = 1UL << 18,
|
||||
#define FE_DIVBYZERO FE_DIVBYZERO
|
||||
|
||||
FE_INVALID = 1UL << 17,
|
||||
#define FE_INVALID FE_INVALID
|
||||
|
||||
FE_ALL_EXCEPT = 0x3f << 17
|
||||
#define FE_ALL_EXCEPT FE_ALL_EXCEPT
|
||||
};
|
||||
|
||||
/* Alpha chips support all four defined rouding modes.
|
||||
|
||||
Note that code must be compiled to use dynamic rounding (/d) instructions
|
||||
to see these changes. For gcc this is -mfp-rounding-mode=d; for DEC cc
|
||||
this is -fprm d. The default for both is static rounding to nearest.
|
||||
|
||||
These are shifted down 58 bits from the hardware fpcr because the
|
||||
functions are declared to take integers. */
|
||||
|
||||
enum
|
||||
{
|
||||
FE_TOWARDZERO = 0,
|
||||
#define FE_TOWARDZERO FE_TOWARDZERO
|
||||
|
||||
FE_DOWNWARD = 1,
|
||||
#define FE_DOWNWARD FE_DOWNWARD
|
||||
|
||||
FE_TONEAREST = 2,
|
||||
#define FE_TONEAREST FE_TONEAREST
|
||||
|
||||
FE_UPWARD = 3,
|
||||
#define FE_UPWARD FE_UPWARD
|
||||
};
|
||||
|
||||
#ifdef __USE_GNU
|
||||
/* On later hardware, and later kernels for earlier hardware, we can forcibly
|
||||
underflow denormal inputs and outputs. This can speed up certain programs
|
||||
significantly, usually without affecting accuracy. */
|
||||
enum
|
||||
{
|
||||
FE_MAP_DMZ = 1UL << 12, /* Map denorm inputs to zero */
|
||||
#define FE_MAP_DMZ FE_MAP_DMZ
|
||||
|
||||
FE_MAP_UMZ = 1UL << 13, /* Map underflowed outputs to zero */
|
||||
#define FE_MAP_UMZ FE_MAP_UMZ
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Type representing exception flags. */
|
||||
typedef unsigned long int fexcept_t;
|
||||
|
||||
/* Type representing floating-point environment. */
|
||||
typedef unsigned long int fenv_t;
|
||||
|
||||
/* If the default argument is used we use this value. Note that due to
|
||||
architecture-specified page mappings, no user-space pointer will ever
|
||||
have its two high bits set. Co-opt one. */
|
||||
#define FE_DFL_ENV ((const fenv_t *) 0x8800000000000000UL)
|
||||
|
||||
#ifdef __USE_GNU
|
||||
/* Floating-point environment where none of the exceptions are masked. */
|
||||
# define FE_NOMASK_ENV ((const fenv_t *) 0x880000000000003eUL)
|
||||
|
||||
/* Floating-point environment with (processor-dependent) non-IEEE floating
|
||||
point. In this case, mapping denormals to zero. */
|
||||
# define FE_NONIEEE_ENV ((const fenv_t *) 0x8800000000003000UL)
|
||||
#endif
|
||||
|
||||
/* The system calls to talk to the kernel's FP code. */
|
||||
extern unsigned long int __ieee_get_fp_control (void) __THROW;
|
||||
extern void __ieee_set_fp_control (unsigned long int __value) __THROW;
|
149
ports/sysdeps/alpha/fpu/bits/mathinline.h
Normal file
149
ports/sysdeps/alpha/fpu/bits/mathinline.h
Normal file
@ -0,0 +1,149 @@
|
||||
/* Inline math functions for Alpha.
|
||||
Copyright (C) 1996, 1997, 1999-2001, 2004, 2007
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David Mosberger-Tang.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _MATH_H
|
||||
# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef __extern_inline
|
||||
# define __MATH_INLINE __inline
|
||||
#else
|
||||
# define __MATH_INLINE __extern_inline
|
||||
#endif
|
||||
|
||||
#if defined __USE_ISOC99 && defined __GNUC__ && !__GNUC_PREREQ(3,0)
|
||||
# undef isgreater
|
||||
# undef isgreaterequal
|
||||
# undef isless
|
||||
# undef islessequal
|
||||
# undef islessgreater
|
||||
# undef isunordered
|
||||
# define isunordered(u, v) \
|
||||
(__extension__ \
|
||||
({ double __r, __u = (u), __v = (v); \
|
||||
__asm ("cmptun/su %1,%2,%0\n\ttrapb" \
|
||||
: "=&f" (__r) : "f" (__u), "f"(__v)); \
|
||||
__r != 0; }))
|
||||
#endif /* ISO C99 */
|
||||
|
||||
#if (!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) \
|
||||
&& defined __OPTIMIZE__
|
||||
|
||||
#if !__GNUC_PREREQ (4, 0)
|
||||
# define __inline_copysign(NAME, TYPE) \
|
||||
__MATH_INLINE TYPE \
|
||||
__NTH (NAME (TYPE __x, TYPE __y)) \
|
||||
{ \
|
||||
TYPE __z; \
|
||||
__asm ("cpys %1, %2, %0" : "=f" (__z) : "f" (__y), "f" (__x)); \
|
||||
return __z; \
|
||||
}
|
||||
|
||||
__inline_copysign (__copysignf, float)
|
||||
__inline_copysign (copysignf, float)
|
||||
__inline_copysign (__copysign, double)
|
||||
__inline_copysign (copysign, double)
|
||||
|
||||
# undef __inline_copysign
|
||||
#endif
|
||||
|
||||
|
||||
#if !__GNUC_PREREQ (2, 8)
|
||||
# define __inline_fabs(NAME, TYPE) \
|
||||
__MATH_INLINE TYPE \
|
||||
__NTH (NAME (TYPE __x)) \
|
||||
{ \
|
||||
TYPE __z; \
|
||||
__asm ("cpys $f31, %1, %0" : "=f" (__z) : "f" (__x)); \
|
||||
return __z; \
|
||||
}
|
||||
|
||||
__inline_fabs (__fabsf, float)
|
||||
__inline_fabs (fabsf, float)
|
||||
__inline_fabs (__fabs, double)
|
||||
__inline_fabs (fabs, double)
|
||||
|
||||
# undef __inline_fabs
|
||||
#endif
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
/* Test for negative number. Used in the signbit() macro. */
|
||||
__MATH_INLINE int
|
||||
__NTH (__signbitf (float __x))
|
||||
{
|
||||
#if !__GNUC_PREREQ (4, 0)
|
||||
__extension__ union { float __f; int __i; } __u = { __f: __x };
|
||||
return __u.__i < 0;
|
||||
#else
|
||||
return __builtin_signbitf (__x);
|
||||
#endif
|
||||
}
|
||||
|
||||
__MATH_INLINE int
|
||||
__NTH (__signbit (double __x))
|
||||
{
|
||||
#if !__GNUC_PREREQ (4, 0)
|
||||
__extension__ union { double __d; long __i; } __u = { __d: __x };
|
||||
return __u.__i < 0;
|
||||
#else
|
||||
return __builtin_signbit (__x);
|
||||
#endif
|
||||
}
|
||||
|
||||
__MATH_INLINE int
|
||||
__NTH (__signbitl (long double __x))
|
||||
{
|
||||
#if !__GNUC_PREREQ (4, 0)
|
||||
__extension__ union {
|
||||
long double __d;
|
||||
long __i[sizeof(long double)/sizeof(long)];
|
||||
} __u = { __d: __x };
|
||||
return __u.__i[sizeof(long double)/sizeof(long) - 1] < 0;
|
||||
#else
|
||||
return __builtin_signbitl (__x);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Test for NaN. Used in the isnan() macro. */
|
||||
|
||||
__MATH_INLINE int
|
||||
__NTH (__isnanf (float __x))
|
||||
{
|
||||
return isunordered (__x, __x);
|
||||
}
|
||||
|
||||
__MATH_INLINE int
|
||||
__NTH (__isnan (double __x))
|
||||
{
|
||||
return isunordered (__x, __x);
|
||||
}
|
||||
|
||||
#ifndef __NO_LONG_DOUBLE_MATH
|
||||
__MATH_INLINE int
|
||||
__NTH (__isnanl (long double __x))
|
||||
{
|
||||
return isunordered (__x, __x);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* C99 */
|
||||
|
||||
#endif /* __NO_MATH_INLINES */
|
41
ports/sysdeps/alpha/fpu/cabsf.c
Normal file
41
ports/sysdeps/alpha/fpu/cabsf.c
Normal file
@ -0,0 +1,41 @@
|
||||
/* Return the complex absolute value of float complex value.
|
||||
Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define __cabsf __cabsf_not_defined
|
||||
#define cabsf cabsf_not_defined
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
#include "cfloat-compat.h"
|
||||
|
||||
#undef __cabsf
|
||||
#undef cabsf
|
||||
|
||||
float
|
||||
__c1_cabsf (c1_cfloat_decl (z))
|
||||
{
|
||||
return __hypotf (c1_cfloat_real (z), c1_cfloat_imag (z));
|
||||
}
|
||||
|
||||
float
|
||||
__c2_cabsf (c2_cfloat_decl (z))
|
||||
{
|
||||
return __hypotf (c2_cfloat_real (z), c2_cfloat_imag (z));
|
||||
}
|
||||
|
||||
cfloat_versions (cabsf);
|
41
ports/sysdeps/alpha/fpu/cargf.c
Normal file
41
ports/sysdeps/alpha/fpu/cargf.c
Normal file
@ -0,0 +1,41 @@
|
||||
/* Compute argument of complex float value.
|
||||
Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define __cargf __cargf_not_defined
|
||||
#define cargf cargf_not_defined
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
#include "cfloat-compat.h"
|
||||
|
||||
#undef __cargf
|
||||
#undef cargf
|
||||
|
||||
float
|
||||
__c1_cargf (c1_cfloat_decl (x))
|
||||
{
|
||||
return __atan2f (c1_cfloat_imag (x), c1_cfloat_real (x));
|
||||
}
|
||||
|
||||
float
|
||||
__c2_cargf (c2_cfloat_decl (x))
|
||||
{
|
||||
return __atan2f (c2_cfloat_imag (x), c2_cfloat_real (x));
|
||||
}
|
||||
|
||||
cfloat_versions (cargf);
|
58
ports/sysdeps/alpha/fpu/cfloat-compat.h
Normal file
58
ports/sysdeps/alpha/fpu/cfloat-compat.h
Normal file
@ -0,0 +1,58 @@
|
||||
/* Compatibility macros for old and new Alpha complex float ABI.
|
||||
Copyright (C) 2004-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* The behaviour of complex float changed between GCC 3.3 and 3.4.
|
||||
|
||||
In 3.3 and before (below, complex version 1, or "c1"), complex float
|
||||
values were packed into one floating point register.
|
||||
|
||||
In 3.4 and later (below, complex version 2, or "c2"), GCC changed to
|
||||
follow the official Tru64 ABI, which passes the components of a complex
|
||||
as separate parameters. */
|
||||
|
||||
typedef union { double d; _Complex float cf; } c1_compat;
|
||||
# define c1_cfloat_decl(x) double x
|
||||
# define c1_cfloat_real(x) __real__ c1_cfloat_value (x)
|
||||
# define c1_cfloat_imag(x) __imag__ c1_cfloat_value (x)
|
||||
# define c1_cfloat_value(x) (((c1_compat *)(void *)&x)->cf)
|
||||
# define c1_cfloat_rettype double
|
||||
# define c1_cfloat_return(x) ({ c1_compat _; _.cf = (x); _.d; })
|
||||
|
||||
# define c2_cfloat_decl(x) _Complex float x
|
||||
# define c2_cfloat_real(x) __real__ x
|
||||
# define c2_cfloat_imag(x) __imag__ x
|
||||
# define c2_cfloat_value(x) x
|
||||
# define c2_cfloat_rettype _Complex float
|
||||
# define c2_cfloat_return(x) x
|
||||
|
||||
/* Get the proper symbol versions defined for each function. */
|
||||
|
||||
#include <shlib-compat.h>
|
||||
|
||||
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_3_4)
|
||||
#define cfloat_versions_compat(func) \
|
||||
compat_symbol (libm, __c1_##func, func, GLIBC_2_1)
|
||||
#else
|
||||
#define cfloat_versions_compat(func)
|
||||
#endif
|
||||
|
||||
#define cfloat_versions(func) \
|
||||
cfloat_versions_compat(func); \
|
||||
versioned_symbol (libm, __c2_##func, func, GLIBC_2_3_4); \
|
||||
extern typeof(__c2_##func) __##func attribute_hidden; \
|
||||
strong_alias (__c2_##func, __##func)
|
40
ports/sysdeps/alpha/fpu/cimagf.c
Normal file
40
ports/sysdeps/alpha/fpu/cimagf.c
Normal file
@ -0,0 +1,40 @@
|
||||
/* Return imaginary part of complex float value.
|
||||
Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define __cimagf __cimagf_not_defined
|
||||
#define cimagf cimagf_not_defined
|
||||
|
||||
#include <complex.h>
|
||||
#include "cfloat-compat.h"
|
||||
|
||||
#undef __cimagf
|
||||
#undef cimagf
|
||||
|
||||
float
|
||||
__c1_cimagf (c1_cfloat_decl (z))
|
||||
{
|
||||
return c1_cfloat_imag (z);
|
||||
}
|
||||
|
||||
float
|
||||
__c2_cimagf (c2_cfloat_decl (z))
|
||||
{
|
||||
return c2_cfloat_imag (z);
|
||||
}
|
||||
|
||||
cfloat_versions (cimagf);
|
42
ports/sysdeps/alpha/fpu/conjf.c
Normal file
42
ports/sysdeps/alpha/fpu/conjf.c
Normal file
@ -0,0 +1,42 @@
|
||||
/* Return complex conjugate of complex float value.
|
||||
Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define __conjf __conjf_not_defined
|
||||
#define conjf conjf_not_defined
|
||||
|
||||
#include <complex.h>
|
||||
#include "cfloat-compat.h"
|
||||
|
||||
#undef __conjf
|
||||
#undef conjf
|
||||
|
||||
c1_cfloat_rettype
|
||||
__c1_conjf (c1_cfloat_decl (z))
|
||||
{
|
||||
_Complex float r = ~ c1_cfloat_value (z);
|
||||
return c1_cfloat_return (r);
|
||||
}
|
||||
|
||||
c2_cfloat_rettype
|
||||
__c2_conjf (c2_cfloat_decl (z))
|
||||
{
|
||||
_Complex float r = ~ c2_cfloat_value (z);
|
||||
return c2_cfloat_return (r);
|
||||
}
|
||||
|
||||
cfloat_versions (conjf);
|
40
ports/sysdeps/alpha/fpu/crealf.c
Normal file
40
ports/sysdeps/alpha/fpu/crealf.c
Normal file
@ -0,0 +1,40 @@
|
||||
/* Return real part of complex float value.
|
||||
Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define __crealf __crealf_not_defined
|
||||
#define crealf crealf_not_defined
|
||||
|
||||
#include <complex.h>
|
||||
#include "cfloat-compat.h"
|
||||
|
||||
#undef __crealf
|
||||
#undef crealf
|
||||
|
||||
float
|
||||
__c1_crealf (c1_cfloat_decl (z))
|
||||
{
|
||||
return c1_cfloat_real (z);
|
||||
}
|
||||
|
||||
float
|
||||
__c2_crealf (c2_cfloat_decl (z))
|
||||
{
|
||||
return c2_cfloat_real (z);
|
||||
}
|
||||
|
||||
cfloat_versions (crealf);
|
165
ports/sysdeps/alpha/fpu/e_sqrt.c
Normal file
165
ports/sysdeps/alpha/fpu/e_sqrt.c
Normal file
@ -0,0 +1,165 @@
|
||||
/* Copyright (C) 1996,1997,1998,2002,2003 Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger (davidm@cs.arizona.edu).
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <math.h>
|
||||
#include <math_private.h>
|
||||
|
||||
#if !defined(_IEEE_FP_INEXACT)
|
||||
|
||||
/*
|
||||
* This version is much faster than generic sqrt implementation, but
|
||||
* it doesn't handle the inexact flag. It doesn't handle exceptional
|
||||
* values either, but will defer to the full ieee754_sqrt routine which
|
||||
* can.
|
||||
*/
|
||||
|
||||
/* Careful with rearranging this without consulting the assembly below. */
|
||||
const static struct sqrt_data_struct {
|
||||
unsigned long dn, up, half, almost_three_half;
|
||||
unsigned long one_and_a_half, two_to_minus_30, one, nan;
|
||||
const int T2[64];
|
||||
} sqrt_data __attribute__((used)) = {
|
||||
0x3fefffffffffffff, /* __dn = nextafter(1,-Inf) */
|
||||
0x3ff0000000000001, /* __up = nextafter(1,+Inf) */
|
||||
0x3fe0000000000000, /* half */
|
||||
0x3ff7ffffffc00000, /* almost_three_half = 1.5-2^-30 */
|
||||
0x3ff8000000000000, /* one_and_a_half */
|
||||
0x3e10000000000000, /* two_to_minus_30 */
|
||||
0x3ff0000000000000, /* one */
|
||||
0xffffffffffffffff, /* nan */
|
||||
|
||||
{ 0x1500, 0x2ef8, 0x4d67, 0x6b02, 0x87be, 0xa395, 0xbe7a, 0xd866,
|
||||
0xf14a, 0x1091b,0x11fcd,0x13552,0x14999,0x15c98,0x16e34,0x17e5f,
|
||||
0x18d03,0x19a01,0x1a545,0x1ae8a,0x1b5c4,0x1bb01,0x1bfde,0x1c28d,
|
||||
0x1c2de,0x1c0db,0x1ba73,0x1b11c,0x1a4b5,0x1953d,0x18266,0x16be0,
|
||||
0x1683e,0x179d8,0x18a4d,0x19992,0x1a789,0x1b445,0x1bf61,0x1c989,
|
||||
0x1d16d,0x1d77b,0x1dddf,0x1e2ad,0x1e5bf,0x1e6e8,0x1e654,0x1e3cd,
|
||||
0x1df2a,0x1d635,0x1cb16,0x1be2c,0x1ae4e,0x19bde,0x1868e,0x16e2e,
|
||||
0x1527f,0x1334a,0x11051,0xe951, 0xbe01, 0x8e0d, 0x5924, 0x1edd }
|
||||
};
|
||||
|
||||
asm ("\
|
||||
/* Define offsets into the structure defined in C above. */ \n\
|
||||
$DN = 0*8 \n\
|
||||
$UP = 1*8 \n\
|
||||
$HALF = 2*8 \n\
|
||||
$ALMOST_THREE_HALF = 3*8 \n\
|
||||
$NAN = 7*8 \n\
|
||||
$T2 = 8*8 \n\
|
||||
\n\
|
||||
/* Stack variables. */ \n\
|
||||
$K = 0 \n\
|
||||
$Y = 8 \n\
|
||||
\n\
|
||||
.text \n\
|
||||
.align 5 \n\
|
||||
.globl __ieee754_sqrt \n\
|
||||
.ent __ieee754_sqrt \n\
|
||||
__ieee754_sqrt: \n\
|
||||
ldgp $29, 0($27) \n\
|
||||
subq $sp, 16, $sp \n\
|
||||
.frame $sp, 16, $26, 0\n"
|
||||
#ifdef PROF
|
||||
" lda $28, _mcount \n\
|
||||
jsr $28, ($28), _mcount\n"
|
||||
#endif
|
||||
" .prologue 1 \n\
|
||||
\n\
|
||||
.align 4 \n\
|
||||
stt $f16, $K($sp) # e0 : \n\
|
||||
mult $f31, $f31, $f31 # .. fm : \n\
|
||||
lda $4, sqrt_data # e0 : \n\
|
||||
fblt $f16, $fixup # .. fa : \n\
|
||||
\n\
|
||||
ldah $2, 0x5fe8 # e0 : \n\
|
||||
ldq $3, $K($sp) # .. e1 : \n\
|
||||
ldt $f12, $HALF($4) # e0 : \n\
|
||||
ldt $f18, $ALMOST_THREE_HALF($4) # .. e1 : \n\
|
||||
\n\
|
||||
sll $3, 52, $5 # e0 : \n\
|
||||
lda $6, 0x7fd # .. e1 : \n\
|
||||
fnop # .. fa : \n\
|
||||
fnop # .. fm : \n\
|
||||
\n\
|
||||
subq $5, 1, $5 # e1 : \n\
|
||||
srl $3, 33, $1 # .. e0 : \n\
|
||||
cmpule $5, $6, $5 # e0 : \n\
|
||||
beq $5, $fixup # .. e1 : \n\
|
||||
\n\
|
||||
mult $f16, $f12, $f11 # fm : $f11 = x * 0.5 \n\
|
||||
subl $2, $1, $2 # .. e0 : \n\
|
||||
addt $f12, $f12, $f17 # .. fa : $f17 = 1.0 \n\
|
||||
srl $2, 12, $1 # e0 : \n\
|
||||
\n\
|
||||
and $1, 0xfc, $1 # e0 : \n\
|
||||
addq $1, $4, $1 # e1 : \n\
|
||||
ldl $1, $T2($1) # e0 : \n\
|
||||
addt $f12, $f17, $f15 # .. fa : $f15 = 1.5 \n\
|
||||
\n\
|
||||
subl $2, $1, $2 # e0 : \n\
|
||||
ldt $f14, $DN($4) # .. e1 : \n\
|
||||
sll $2, 32, $2 # e0 : \n\
|
||||
stq $2, $Y($sp) # e0 : \n\
|
||||
\n\
|
||||
ldt $f13, $Y($sp) # e0 : \n\
|
||||
mult/su $f11, $f13, $f10 # fm 2: $f10 = (x * 0.5) * y \n\
|
||||
mult $f10, $f13, $f10 # fm 4: $f10 = ((x*0.5)*y)*y \n\
|
||||
subt $f15, $f10, $f1 # fa 4: $f1 = (1.5-0.5*x*y*y) \n\
|
||||
\n\
|
||||
mult $f13, $f1, $f13 # fm 4: yp = y*(1.5-0.5*x*y^2)\n\
|
||||
mult/su $f11, $f13, $f1 # fm 4: $f11 = x * 0.5 * yp \n\
|
||||
mult $f1, $f13, $f11 # fm 4: $f11 = (x*0.5*yp)*yp \n\
|
||||
subt $f18, $f11, $f1 # fa 4: $f1=(1.5-2^-30)-x/2*yp^2\n\
|
||||
\n\
|
||||
mult $f13, $f1, $f13 # fm 4: ypp = $f13 = yp*$f1 \n\
|
||||
subt $f15, $f12, $f1 # .. fa : $f1 = (1.5 - 0.5) \n\
|
||||
ldt $f15, $UP($4) # .. e0 : \n\
|
||||
mult/su $f16, $f13, $f10 # fm 4: z = $f10 = x * ypp \n\
|
||||
\n\
|
||||
mult $f10, $f13, $f11 # fm 4: $f11 = z*ypp \n\
|
||||
mult $f10, $f12, $f12 # fm : $f12 = z*0.5 \n\
|
||||
subt $f1, $f11, $f1 # fa 4: $f1 = 1 - z*ypp \n\
|
||||
mult $f12, $f1, $f12 # fm 4: $f12 = z/2*(1 - z*ypp)\n\
|
||||
\n\
|
||||
addt $f10, $f12, $f0 # fa 4: zp=res= z+z/2*(1-z*ypp)\n\
|
||||
mult/c $f0, $f14, $f12 # fm 4: zmi = zp * DN \n\
|
||||
mult/c $f0, $f15, $f11 # fm : zpl = zp * UP \n\
|
||||
mult/c $f0, $f12, $f1 # fm : $f1 = zp * zmi \n\
|
||||
\n\
|
||||
mult/c $f0, $f11, $f15 # fm : $f15 = zp * zpl \n\
|
||||
subt/su $f1, $f16, $f13 # .. fa : y1 = zp*zmi - x \n\
|
||||
subt/su $f15, $f16, $f14 # fa 4: y2 = zp*zpl - x \n\
|
||||
fcmovge $f13, $f12, $f0 # fa 3: res = (y1>=0)?zmi:res \n\
|
||||
\n\
|
||||
fcmovlt $f14, $f11, $f0 # fa 4: res = (y2<0)?zpl:res \n\
|
||||
addq $sp, 16, $sp # .. e0 : \n\
|
||||
ret # .. e1 : \n\
|
||||
\n\
|
||||
.align 4 \n\
|
||||
$fixup: \n\
|
||||
addq $sp, 16, $sp \n\
|
||||
br __full_ieee754_sqrt !samegp \n\
|
||||
\n\
|
||||
.end __ieee754_sqrt");
|
||||
|
||||
static double __full_ieee754_sqrt(double) __attribute_used__;
|
||||
#define __ieee754_sqrt __full_ieee754_sqrt
|
||||
|
||||
#endif /* _IEEE_FP_INEXACT */
|
||||
|
||||
#include <sysdeps/ieee754/dbl-64/e_sqrt.c>
|
46
ports/sysdeps/alpha/fpu/fclrexcpt.c
Normal file
46
ports/sysdeps/alpha/fpu/fclrexcpt.c
Normal file
@ -0,0 +1,46 @@
|
||||
/* Clear given exceptions in current floating-point environment.
|
||||
Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>, 1997.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
__feclearexcept (int excepts)
|
||||
{
|
||||
unsigned long int swcr;
|
||||
|
||||
/* Get the current state. */
|
||||
swcr = __ieee_get_fp_control ();
|
||||
|
||||
/* Clear the relevant bits. */
|
||||
swcr &= ~((unsigned long int) excepts & SWCR_STATUS_MASK);
|
||||
|
||||
/* Put the new state in effect. */
|
||||
__ieee_set_fp_control (swcr);
|
||||
|
||||
/* Success. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <shlib-compat.h>
|
||||
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
|
||||
strong_alias (__feclearexcept, __old_feclearexcept)
|
||||
compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
|
||||
#endif
|
||||
|
||||
versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
|
35
ports/sysdeps/alpha/fpu/fedisblxcpt.c
Normal file
35
ports/sysdeps/alpha/fpu/fedisblxcpt.c
Normal file
@ -0,0 +1,35 @@
|
||||
/* Disable floating-point exceptions.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2000.
|
||||
|
||||
The GNU C Library 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 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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 the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
fedisableexcept (int excepts)
|
||||
{
|
||||
unsigned long int new_exc, old_exc;
|
||||
|
||||
new_exc = __ieee_get_fp_control ();
|
||||
|
||||
old_exc = (new_exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
|
||||
new_exc &= ~((excepts >> SWCR_ENABLE_SHIFT) & SWCR_ENABLE_MASK);
|
||||
|
||||
__ieee_set_fp_control (new_exc);
|
||||
|
||||
return old_exc;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user