From 5046dbb4a7eba5eccfd258f92f4735c9ffc8d069 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Thu, 8 Jun 2017 15:39:03 -0400 Subject: Prepare for radical source tree reorganization. All top-level files and directories are moved into a temporary storage directory, REORG.TODO, except for files that will certainly still exist in their current form at top level when we're done (COPYING, COPYING.LIB, LICENSES, NEWS, README), all old ChangeLog files (which are moved to the new directory OldChangeLogs, instead), and the generated file INSTALL (which is just deleted; in the new order, there will be no generated files checked into version control). --- sysdeps/sh/Implies | 4 - sysdeps/sh/Makefile | 11 - sysdeps/sh/____longjmp_chk.S | 78 ------ sysdeps/sh/_mcount.S | 87 ------ sysdeps/sh/abort-instr.h | 3 - sysdeps/sh/backtrace.c | 1 - sysdeps/sh/bits/endian.h | 13 - sysdeps/sh/bits/fenv.h | 84 ------ sysdeps/sh/bits/huge_val.h | 54 ---- sysdeps/sh/bits/link.h | 69 ----- sysdeps/sh/bits/setjmp.h | 46 --- sysdeps/sh/bsd-_setjmp.S | 51 ---- sysdeps/sh/bsd-setjmp.S | 50 ---- sysdeps/sh/configure | 5 - sysdeps/sh/configure.ac | 6 - sysdeps/sh/crti.S | 120 -------- sysdeps/sh/crtn.S | 53 ---- sysdeps/sh/dl-machine.h | 466 ------------------------------- sysdeps/sh/dl-tls.h | 28 -- sysdeps/sh/dl-trampoline.S | 430 ---------------------------- sysdeps/sh/fpu_control.h | 76 ----- sysdeps/sh/gccframe.h | 21 -- sysdeps/sh/gmp-mparam.h | 29 -- sysdeps/sh/jmpbuf-offsets.h | 19 -- sysdeps/sh/jmpbuf-unwind.h | 46 --- sysdeps/sh/ldsodefs.h | 40 --- sysdeps/sh/libc-tls.c | 32 --- sysdeps/sh/libm-test-ulps | 417 --------------------------- sysdeps/sh/libm-test-ulps-name | 1 - sysdeps/sh/linkmap.h | 5 - sysdeps/sh/machine-gmon.h | 30 -- sysdeps/sh/math_private.h | 10 - sysdeps/sh/memcpy.S | 198 ------------- sysdeps/sh/memset.S | 88 ------ sysdeps/sh/memusage.h | 20 -- sysdeps/sh/nptl/bits/pthreadtypes-arch.h | 69 ----- sysdeps/sh/nptl/bits/semaphore.h | 35 --- sysdeps/sh/nptl/pthread_spin_init.c | 19 -- sysdeps/sh/nptl/pthread_spin_lock.c | 33 --- sysdeps/sh/nptl/pthread_spin_trylock.S | 31 -- sysdeps/sh/nptl/pthread_spin_unlock.S | 29 -- sysdeps/sh/nptl/pthreaddef.h | 34 --- sysdeps/sh/nptl/tcb-offsets.sym | 15 - sysdeps/sh/nptl/tls.h | 168 ----------- sysdeps/sh/preconfigure | 6 - sysdeps/sh/s_fma.c | 5 - sysdeps/sh/s_fmaf.c | 5 - sysdeps/sh/sh3/__longjmp.S | 63 ----- sysdeps/sh/sh3/setjmp.S | 81 ------ sysdeps/sh/sh4/Makefile | 3 - sysdeps/sh/sh4/Versions | 5 - sysdeps/sh/sh4/__longjmp.S | 73 ----- sysdeps/sh/sh4/dl-trampoline.S | 4 - sysdeps/sh/sh4/fpu/fclrexcpt.c | 42 --- sysdeps/sh/sh4/fpu/fedisblxcpt.c | 39 --- sysdeps/sh/sh4/fpu/feenablxcpt.c | 38 --- sysdeps/sh/sh4/fpu/fegetenv.c | 34 --- sysdeps/sh/sh4/fpu/fegetexcept.c | 32 --- sysdeps/sh/sh4/fpu/fegetmode.c | 27 -- sysdeps/sh/sh4/fpu/fegetround.c | 35 --- sysdeps/sh/sh4/fpu/feholdexcpt.c | 44 --- sysdeps/sh/sh4/fpu/fesetenv.c | 36 --- sysdeps/sh/sh4/fpu/fesetexcept.c | 32 --- sysdeps/sh/sh4/fpu/fesetmode.c | 38 --- sysdeps/sh/sh4/fpu/fesetround.c | 45 --- sysdeps/sh/sh4/fpu/feupdateenv.c | 41 --- sysdeps/sh/sh4/fpu/fgetexcptflg.c | 38 --- sysdeps/sh/sh4/fpu/fraiseexcpt.c | 75 ----- sysdeps/sh/sh4/fpu/fsetexcptflg.c | 39 --- sysdeps/sh/sh4/fpu/ftestexcept.c | 32 --- sysdeps/sh/sh4/setjmp.S | 90 ------ sysdeps/sh/soft-fp/sfp-machine.h | 57 ---- sysdeps/sh/sotruss-lib.c | 50 ---- sysdeps/sh/stackguard-macros.h | 6 - sysdeps/sh/stackinfo.h | 33 --- sysdeps/sh/start.S | 111 -------- sysdeps/sh/strlen.S | 83 ------ sysdeps/sh/sysdep.h | 75 ----- sysdeps/sh/tininess.h | 1 - sysdeps/sh/tls-macros.h | 143 ---------- sysdeps/sh/tst-audit.h | 25 -- 81 files changed, 4710 deletions(-) delete mode 100644 sysdeps/sh/Implies delete mode 100644 sysdeps/sh/Makefile delete mode 100644 sysdeps/sh/____longjmp_chk.S delete mode 100644 sysdeps/sh/_mcount.S delete mode 100644 sysdeps/sh/abort-instr.h delete mode 100644 sysdeps/sh/backtrace.c delete mode 100644 sysdeps/sh/bits/endian.h delete mode 100644 sysdeps/sh/bits/fenv.h delete mode 100644 sysdeps/sh/bits/huge_val.h delete mode 100644 sysdeps/sh/bits/link.h delete mode 100644 sysdeps/sh/bits/setjmp.h delete mode 100644 sysdeps/sh/bsd-_setjmp.S delete mode 100644 sysdeps/sh/bsd-setjmp.S delete mode 100644 sysdeps/sh/configure delete mode 100644 sysdeps/sh/configure.ac delete mode 100644 sysdeps/sh/crti.S delete mode 100644 sysdeps/sh/crtn.S delete mode 100644 sysdeps/sh/dl-machine.h delete mode 100644 sysdeps/sh/dl-tls.h delete mode 100644 sysdeps/sh/dl-trampoline.S delete mode 100644 sysdeps/sh/fpu_control.h delete mode 100644 sysdeps/sh/gccframe.h delete mode 100644 sysdeps/sh/gmp-mparam.h delete mode 100644 sysdeps/sh/jmpbuf-offsets.h delete mode 100644 sysdeps/sh/jmpbuf-unwind.h delete mode 100644 sysdeps/sh/ldsodefs.h delete mode 100644 sysdeps/sh/libc-tls.c delete mode 100644 sysdeps/sh/libm-test-ulps delete mode 100644 sysdeps/sh/libm-test-ulps-name delete mode 100644 sysdeps/sh/linkmap.h delete mode 100644 sysdeps/sh/machine-gmon.h delete mode 100644 sysdeps/sh/math_private.h delete mode 100644 sysdeps/sh/memcpy.S delete mode 100644 sysdeps/sh/memset.S delete mode 100644 sysdeps/sh/memusage.h delete mode 100644 sysdeps/sh/nptl/bits/pthreadtypes-arch.h delete mode 100644 sysdeps/sh/nptl/bits/semaphore.h delete mode 100644 sysdeps/sh/nptl/pthread_spin_init.c delete mode 100644 sysdeps/sh/nptl/pthread_spin_lock.c delete mode 100644 sysdeps/sh/nptl/pthread_spin_trylock.S delete mode 100644 sysdeps/sh/nptl/pthread_spin_unlock.S delete mode 100644 sysdeps/sh/nptl/pthreaddef.h delete mode 100644 sysdeps/sh/nptl/tcb-offsets.sym delete mode 100644 sysdeps/sh/nptl/tls.h delete mode 100644 sysdeps/sh/preconfigure delete mode 100644 sysdeps/sh/s_fma.c delete mode 100644 sysdeps/sh/s_fmaf.c delete mode 100644 sysdeps/sh/sh3/__longjmp.S delete mode 100644 sysdeps/sh/sh3/setjmp.S delete mode 100644 sysdeps/sh/sh4/Makefile delete mode 100644 sysdeps/sh/sh4/Versions delete mode 100644 sysdeps/sh/sh4/__longjmp.S delete mode 100644 sysdeps/sh/sh4/dl-trampoline.S delete mode 100644 sysdeps/sh/sh4/fpu/fclrexcpt.c delete mode 100644 sysdeps/sh/sh4/fpu/fedisblxcpt.c delete mode 100644 sysdeps/sh/sh4/fpu/feenablxcpt.c delete mode 100644 sysdeps/sh/sh4/fpu/fegetenv.c delete mode 100644 sysdeps/sh/sh4/fpu/fegetexcept.c delete mode 100644 sysdeps/sh/sh4/fpu/fegetmode.c delete mode 100644 sysdeps/sh/sh4/fpu/fegetround.c delete mode 100644 sysdeps/sh/sh4/fpu/feholdexcpt.c delete mode 100644 sysdeps/sh/sh4/fpu/fesetenv.c delete mode 100644 sysdeps/sh/sh4/fpu/fesetexcept.c delete mode 100644 sysdeps/sh/sh4/fpu/fesetmode.c delete mode 100644 sysdeps/sh/sh4/fpu/fesetround.c delete mode 100644 sysdeps/sh/sh4/fpu/feupdateenv.c delete mode 100644 sysdeps/sh/sh4/fpu/fgetexcptflg.c delete mode 100644 sysdeps/sh/sh4/fpu/fraiseexcpt.c delete mode 100644 sysdeps/sh/sh4/fpu/fsetexcptflg.c delete mode 100644 sysdeps/sh/sh4/fpu/ftestexcept.c delete mode 100644 sysdeps/sh/sh4/setjmp.S delete mode 100644 sysdeps/sh/soft-fp/sfp-machine.h delete mode 100644 sysdeps/sh/sotruss-lib.c delete mode 100644 sysdeps/sh/stackguard-macros.h delete mode 100644 sysdeps/sh/stackinfo.h delete mode 100644 sysdeps/sh/start.S delete mode 100644 sysdeps/sh/strlen.S delete mode 100644 sysdeps/sh/sysdep.h delete mode 100644 sysdeps/sh/tininess.h delete mode 100644 sysdeps/sh/tls-macros.h delete mode 100644 sysdeps/sh/tst-audit.h (limited to 'sysdeps/sh') diff --git a/sysdeps/sh/Implies b/sysdeps/sh/Implies deleted file mode 100644 index 1fdc53d034..0000000000 --- a/sysdeps/sh/Implies +++ /dev/null @@ -1,4 +0,0 @@ -sh/soft-fp -wordsize-32 -ieee754/flt-32 -ieee754/dbl-64 diff --git a/sysdeps/sh/Makefile b/sysdeps/sh/Makefile deleted file mode 100644 index 0c6db9a9d4..0000000000 --- a/sysdeps/sh/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -ifeq ($(subdir),csu) -gen-as-const-headers += tcb-offsets.sym -endif - -ifeq ($(subdir),gmon) -sysdep_routines += _mcount -endif - -ifeq ($(subdir),debug) -CFLAGS-backtrace.c += -funwind-tables -endif diff --git a/sysdeps/sh/____longjmp_chk.S b/sysdeps/sh/____longjmp_chk.S deleted file mode 100644 index e49c08f027..0000000000 --- a/sysdeps/sh/____longjmp_chk.S +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright (C) 2009-2017 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 - . */ - - .section .rodata.str1.1,"aMS",@progbits,1 - .type longjmp_msg,@object -longjmp_msg: - .string "longjmp causes uninitialized stack frame" - .size longjmp_msg, .-longjmp_msg - .text - -#define __longjmp ____longjmp_chk - -#ifdef PIC -# define CALL_FAIL \ - mov.l .Lfail, r1; \ - mov.l .Lstr, r4; \ - mov.l r12, @-r15; \ - cfi_remember_state; \ - cfi_adjust_cfa_offset (4); \ - cfi_rel_offset (r12, 0); \ - mova .Lgot, r0; \ - mov.l .Lgot, r12; \ - add r0, r12; \ - sts.l pr, @-r15; \ - cfi_adjust_cfa_offset (4); \ - cfi_rel_offset (pr, 0); \ - bsrf r1; \ - add r12, r4; \ - /* Unreachable. */ \ -.Lfail0: \ - .align 2; \ -.Lgot: \ - .long _GLOBAL_OFFSET_TABLE_; \ -.Lstr: \ - .long longjmp_msg@GOTOFF; \ -.Lfail: \ - .long __GI___fortify_fail@PLT-(.Lfail0-.); \ - cfi_restore_state; -#else -# define CALL_FAIL \ - mov.l .Lfail, r1; \ - mov.l .Lstr, r4; \ - sts.l pr, @-r15; \ - cfi_remember_state; \ - cfi_adjust_cfa_offset (4); \ - cfi_rel_offset (pr, 0); \ - jsr @r1; \ - nop; \ - /* Unreachable. */ \ - .align 2; \ -.Lstr: \ - .long longjmp_msg; \ -.Lfail: \ - .long __fortify_fail; \ - cfi_restore_state; -#endif - -#define CHECK_SP(reg) \ - cmp/hs r15, reg; \ - bt .Lok; \ - CALL_FAIL \ -.Lok: - -#include <__longjmp.S> diff --git a/sysdeps/sh/_mcount.S b/sysdeps/sh/_mcount.S deleted file mode 100644 index 1deee2ddad..0000000000 --- a/sysdeps/sh/_mcount.S +++ /dev/null @@ -1,87 +0,0 @@ -/* Machine-specific calling sequence for `mcount' profiling function. SuperH - Copyright (C) 2001-2017 Free Software Foundation, Inc. - Contributed by NIIBE Yutaka - 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 - . */ - -#include - - .globl C_SYMBOL_NAME(_mcount) - .type C_SYMBOL_NAME(_mcount),@function - cfi_startproc - .align 5 -C_LABEL(_mcount) - /* Save registers. */ - mov.l r4,@-r15 - cfi_adjust_cfa_offset (4) - cfi_rel_offset (r4, 0) - mov.l r5,@-r15 - cfi_adjust_cfa_offset (4) - cfi_rel_offset (r5, 0) - mov.l r6,@-r15 - cfi_adjust_cfa_offset (4) - cfi_rel_offset (r6, 0) - mov.l r7,@-r15 - cfi_adjust_cfa_offset (4) - cfi_rel_offset (r7, 0) - sts.l pr,@-r15 - cfi_adjust_cfa_offset (4) - cfi_rel_offset (pr, 0) - - mov.l @(20,r15),r4 - sts pr,r5 - -#ifdef SHARED - mov.l 0f,r1 - mova 0f,r0 - add r1,r0 - mov.l 1f,r1 - mov.l @(r0,r1),r1 -#else - mov.l 1f,r1 -#endif - jsr @r1 - nop - - /* Pop the saved registers. */ - lds.l @r15+,pr - cfi_adjust_cfa_offset (-4) - cfi_restore (pr) - mov.l @r15+,r7 - cfi_adjust_cfa_offset (-4) - cfi_restore (r7) - mov.l @r15+,r6 - cfi_adjust_cfa_offset (-4) - cfi_restore (r6) - mov.l @r15+,r5 - cfi_adjust_cfa_offset (-4) - cfi_restore (r5) - rts - mov.l @r15+,r4 - /* Omit CFI for restore in delay slot. */ - - .align 2 -#ifdef SHARED -0: .long _GLOBAL_OFFSET_TABLE_ -1: .long C_SYMBOL_NAME(__mcount_internal)@GOT -#else -1: .long C_SYMBOL_NAME(__mcount_internal) -#endif - cfi_endproc -ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount)) - -#undef mcount -weak_alias (_mcount, mcount) diff --git a/sysdeps/sh/abort-instr.h b/sysdeps/sh/abort-instr.h deleted file mode 100644 index 69381aec8e..0000000000 --- a/sysdeps/sh/abort-instr.h +++ /dev/null @@ -1,3 +0,0 @@ -/* An instruction which should crash any program is `sleep'. */ -#define ABORT_INSTRUCTION_ASM sleep -#define ABORT_INSTRUCTION asm ("sleep") diff --git a/sysdeps/sh/backtrace.c b/sysdeps/sh/backtrace.c deleted file mode 100644 index 4f3eafb09c..0000000000 --- a/sysdeps/sh/backtrace.c +++ /dev/null @@ -1 +0,0 @@ -#include "../x86_64/backtrace.c" diff --git a/sysdeps/sh/bits/endian.h b/sysdeps/sh/bits/endian.h deleted file mode 100644 index 1fef1ff938..0000000000 --- a/sysdeps/sh/bits/endian.h +++ /dev/null @@ -1,13 +0,0 @@ -/* SH is bi-endian but with a big-endian FPU. */ - -#ifndef _ENDIAN_H -# error "Never use directly; include instead." -#endif - -#ifdef __LITTLE_ENDIAN__ -#define __BYTE_ORDER __LITTLE_ENDIAN -#define __FLOAT_WORD_ORDER __LITTLE_ENDIAN -#else -#define __BYTE_ORDER __BIG_ENDIAN -#define __FLOAT_WORD_ORDER __BIG_ENDIAN -#endif diff --git a/sysdeps/sh/bits/fenv.h b/sysdeps/sh/bits/fenv.h deleted file mode 100644 index a121efb101..0000000000 --- a/sysdeps/sh/bits/fenv.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright (C) 1999-2017 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 - . */ - -#ifndef _FENV_H -# error "Never use directly; include instead." -#endif - - -/* Define bits representing the exception. We use the bit positions - of the appropriate bits in the FPU control word. */ -enum - { - FE_INEXACT = -#define FE_INEXACT 0x04 - FE_INEXACT, - FE_UNDERFLOW = -#define FE_UNDERFLOW 0x08 - FE_UNDERFLOW, - FE_OVERFLOW = -#define FE_OVERFLOW 0x10 - FE_OVERFLOW, - FE_DIVBYZERO = -#define FE_DIVBYZERO 0x20 - FE_DIVBYZERO, - FE_INVALID = -#define FE_INVALID 0x40 - FE_INVALID, - }; - -#define FE_ALL_EXCEPT \ - (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID) - -/* The SH FPU supports two of the four defined rounding modes: round to nearest - and round to zero. We use again the bit positions in the FPU control word - as the values for the appropriate macros. */ -enum - { - __FE_UNDEFINED = -1, - - FE_TONEAREST = -#define FE_TONEAREST 0x0 - FE_TONEAREST, - FE_TOWARDZERO = -#define FE_TOWARDZERO 0x1 - FE_TOWARDZERO, - }; - - -/* Type representing exception flags. */ -typedef unsigned short int fexcept_t; - - -/* Type representing floating-point environment. This function corresponds - to the layout of the block written by the `fstenv'. */ -typedef struct - { - unsigned int __fpscr; - } -fenv_t; - -/* If the default argument is used we use this value. */ -#define FE_DFL_ENV ((const fenv_t *) -1) - -#if __GLIBC_USE (IEC_60559_BFP_EXT) -/* Type representing floating-point control modes. */ -typedef unsigned int femode_t; - -/* Default floating-point control modes. */ -# define FE_DFL_MODE ((const femode_t *) -1L) -#endif diff --git a/sysdeps/sh/bits/huge_val.h b/sysdeps/sh/bits/huge_val.h deleted file mode 100644 index aab7a23b17..0000000000 --- a/sysdeps/sh/bits/huge_val.h +++ /dev/null @@ -1,54 +0,0 @@ -/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity). - Used by and functions for overflow. - SH version. - Copyright (C) 1992-2017 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 - . */ - -#ifndef _MATH_H -# error "Never use directly; include instead." -#endif - -/* IEEE positive infinity (-HUGE_VAL is negative infinity). */ - -#if __GNUC_PREREQ(3,3) -# define HUGE_VAL (__builtin_huge_val()) -#elif __GNUC_PREREQ(2,96) -# define HUGE_VAL (__extension__ 0x1.0p2047) -#elif defined __GNUC__ - -# define HUGE_VAL \ - (__extension__ \ - ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \ - { __l: 0x000000007ff00000ULL }).__d) - -#else /* not GCC */ - -# include - -typedef union { unsigned char __c[8]; double __d; } __huge_val_t; - -# if __BYTE_ORDER == __BIG_ENDIAN -# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0x7f, 0xf0, 0, 0 } -# endif -# if __BYTE_ORDER == __LITTLE_ENDIAN -# define __HUGE_VAL_bytes { 0, 0, 0xf0, 0x7f, 0, 0, 0, 0 } -# endif - -static __huge_val_t __huge_val = { __HUGE_VAL_bytes }; -# define HUGE_VAL (__huge_val.__d) - -#endif /* GCC. */ diff --git a/sysdeps/sh/bits/link.h b/sysdeps/sh/bits/link.h deleted file mode 100644 index 0427ebc961..0000000000 --- a/sysdeps/sh/bits/link.h +++ /dev/null @@ -1,69 +0,0 @@ -/* Copyright (C) 2005-2017 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 - . */ - -#ifndef _LINK_H -# error "Never include directly; use instead." -#endif - - -/* Registers for entry into PLT on SH. */ -typedef struct La_sh_regs -{ - uint32_t lr_r2; - uint32_t lr_r3; - uint32_t lr_r4; - uint32_t lr_r5; - uint32_t lr_r6; - uint32_t lr_r7; - uint32_t lr_fpscr; - float lr_fr4; - float lr_fr5; - float lr_fr6; - float lr_fr7; - float lr_fr8; - float lr_fr9; - float lr_fr10; - float lr_fr11; -} La_sh_regs; - -/* Return values for calls from PLT on SH. */ -typedef struct La_sh_retval -{ - uint32_t lrv_r0; - uint32_t lrv_r1; - float lrv_fr0; - float lrv_fr1; -} La_sh_retval; - - -__BEGIN_DECLS - -extern Elf32_Addr la_sh_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx, - uintptr_t *__refcook, - uintptr_t *__defcook, - La_sh_regs *__regs, - unsigned int *__flags, - const char *__symname, - long int *__framesizep); -extern unsigned int la_sh_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx, - uintptr_t *__refcook, - uintptr_t *__defcook, - const La_sh_regs *__inregs, - La_sh_retval *__outregs, - const char *__symname); - -__END_DECLS diff --git a/sysdeps/sh/bits/setjmp.h b/sysdeps/sh/bits/setjmp.h deleted file mode 100644 index 11617d7c8a..0000000000 --- a/sysdeps/sh/bits/setjmp.h +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 1999-2017 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 - . */ - -/* Define the machine-dependent type `jmp_buf'. SH version. */ -#ifndef _BITS_SETJMP_H -#define _BITS_SETJMP_H 1 - -#if !defined _SETJMP_H && !defined _PTHREAD_H -# error "Never include directly; use instead." -#endif - -#ifndef _ASM -typedef struct __jmp_buf_internal_tag - { - /* Callee-saved registers r8 through r15. */ - int __regs[8]; - - /* Program counter. */ - void * __pc; - - /* The global pointer. */ - void * __gbr; - - /* Floating point status register. */ - int __fpscr; - - /* Callee-saved floating point registers fr12 through fr15. */ - int __fpregs[4]; - } __jmp_buf[1]; -#endif - -#endif /* bits/setjmp.h */ diff --git a/sysdeps/sh/bsd-_setjmp.S b/sysdeps/sh/bsd-_setjmp.S deleted file mode 100644 index d5d011ec6c..0000000000 --- a/sysdeps/sh/bsd-_setjmp.S +++ /dev/null @@ -1,51 +0,0 @@ -/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. SH version. - Copyright (C) 1999-2017 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 - . */ - -/* This just does a tail-call to `__sigsetjmp (ARG, 0)'. - We cannot do it in C because it must be a tail-call, so frame-unwinding - in setjmp doesn't clobber the state restored by longjmp. */ - -#include - -ENTRY (_setjmp) -#ifdef SHARED - mova 1f, r0 - mov.l 1f, r1 - bra 2f - add r1, r0 - .align 2 -1: - .long _GLOBAL_OFFSET_TABLE_ -2: - mov.l 3f, r1 - mov.l @(r0,r1), r1 - jmp @r1 - mov #0, r5 - .align 2 -3: - .long C_SYMBOL_NAME(__sigsetjmp@GOT) -#else - mov.l 1f, r1 - jmp @r1 - mov #0, r5 - .align 2 -1: - .long C_SYMBOL_NAME(__sigsetjmp) -#endif -END (_setjmp) -libc_hidden_def (_setjmp) diff --git a/sysdeps/sh/bsd-setjmp.S b/sysdeps/sh/bsd-setjmp.S deleted file mode 100644 index 73e4209e73..0000000000 --- a/sysdeps/sh/bsd-setjmp.S +++ /dev/null @@ -1,50 +0,0 @@ -/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. SH version. - Copyright (C) 1999-2017 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 - . */ - -/* This just does a tail-call to `__sigsetjmp (ARG, 1)'. - We cannot do it in C because it must be a tail-call, so frame-unwinding - in setjmp doesn't clobber the state restored by longjmp. */ - -#include - -ENTRY (setjmp) -#ifdef SHARED - mova 1f, r0 - mov.l 1f, r1 - bra 2f - add r1, r0 - .align 2 -1: - .long _GLOBAL_OFFSET_TABLE_ -2: - mov.l 3f, r1 - mov.l @(r0,r1), r1 - jmp @r1 - mov #1, r5 - .align 2 -3: - .long C_SYMBOL_NAME(__sigsetjmp@GOT) -#else - mov.l 1f, r1 - jmp @r1 - mov #1, r5 - .align 2 -1: - .long C_SYMBOL_NAME(__sigsetjmp) -#endif -END (setjmp) diff --git a/sysdeps/sh/configure b/sysdeps/sh/configure deleted file mode 100644 index 110eb65b06..0000000000 --- a/sysdeps/sh/configure +++ /dev/null @@ -1,5 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - # Local configure fragment for sysdeps/sh. - -$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h - diff --git a/sysdeps/sh/configure.ac b/sysdeps/sh/configure.ac deleted file mode 100644 index 21400c447d..0000000000 --- a/sysdeps/sh/configure.ac +++ /dev/null @@ -1,6 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for sysdeps/sh. - -dnl It is always possible to access static and hidden symbols in an -dnl position independent way. -AC_DEFINE(PI_STATIC_AND_HIDDEN) diff --git a/sysdeps/sh/crti.S b/sysdeps/sh/crti.S deleted file mode 100644 index d19de956a6..0000000000 --- a/sysdeps/sh/crti.S +++ /dev/null @@ -1,120 +0,0 @@ -/* Special .init and .fini section support for SH. - Copyright (C) 2000-2017 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 - . */ - -/* 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. */ - -#include -#include - -#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 - .align 5 - .global _init - .type _init, @function -_init: - mov.l r12,@-r15 - mova .L12,r0 - mov.l .L12,r12 - mov.l r14,@-r15 - add r0,r12 - sts.l pr,@-r15 -#if PREINIT_FUNCTION_WEAK - mov.l .L13,r0 - mov.l @(r0,r12),r1 - tst r1,r1 - bt/s .L8 - mov r15,r14 - mov.l .L14,r1 - bsrf r1 -.LPCS0: - nop -.L8: -#else - mova .L13,r0 - mov.l .L13,r1 - add r0,r1 - jsr @r1 - mov r15,r14 -#endif - bra 1f - nop - .align 2 -.L12: - .long _GLOBAL_OFFSET_TABLE_ -#if PREINIT_FUNCTION_WEAK -.L13: - .long PREINIT_FUNCTION@GOT -.L14: - .long PREINIT_FUNCTION@PLT-(.LPCS0+2-(.)) -#else -.L13: - .long PREINIT_FUNCTION@PLT -#endif -1: - - .section .fini,"ax",@progbits - .align 5 - .global _fini - .type _fini, @function -_fini: - mov.l r12,@-r15 - mova .L19,r0 - mov.l r14,@-r15 - sts.l pr,@-r15 - mov.l .L19,r12 - mov r15,r14 - add r0,r12 - bra 0f - nop - .align 2 -.L19: - .long _GLOBAL_OFFSET_TABLE_ -0: diff --git a/sysdeps/sh/crtn.S b/sysdeps/sh/crtn.S deleted file mode 100644 index 128f951e90..0000000000 --- a/sysdeps/sh/crtn.S +++ /dev/null @@ -1,53 +0,0 @@ -/* Special .init and .fini section support for SH. - Copyright (C) 2000-2017 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 - . */ - -/* crtn.S puts function epilogues in the .init and .fini sections - corresponding to the prologues in crti.S. */ - - .section .init,"ax",@progbits - mov r14,r15 - lds.l @r15+,pr - mov.l @r15+,r14 - mov.l @r15+,r12 - rts - nop - - .section .fini,"ax",@progbits - mov r14,r15 - lds.l @r15+,pr - mov.l @r15+,r14 - mov.l @r15+,r12 - rts - nop diff --git a/sysdeps/sh/dl-machine.h b/sysdeps/sh/dl-machine.h deleted file mode 100644 index 2b468af6fa..0000000000 --- a/sysdeps/sh/dl-machine.h +++ /dev/null @@ -1,466 +0,0 @@ -/* Machine-dependent ELF dynamic relocation inline functions. SH version. - Copyright (C) 1999-2017 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 - . */ - -#ifndef dl_machine_h -#define dl_machine_h - -#define ELF_MACHINE_NAME "SH" - -#include -#include -#include - -/* Return nonzero iff ELF header is compatible with the running host. */ -static inline int __attribute__ ((unused)) -elf_machine_matches_host (const Elf32_Ehdr *ehdr) -{ - return ehdr->e_machine == EM_SH; -} - - -/* Return the link-time address of _DYNAMIC. Conveniently, this is the - first element of the GOT. This must be inlined in a function which - uses global data. */ -static inline Elf32_Addr __attribute__ ((unused)) -elf_machine_dynamic (void) -{ - register Elf32_Addr *got; - asm ("mov r12,%0" :"=r" (got)); - return *got; -} - - -/* Return the run-time load address of the shared object. */ -static inline Elf32_Addr __attribute__ ((unused)) -elf_machine_load_address (void) -{ - Elf32_Addr addr; - asm ("mov.l 1f,r0\n\ - mov.l 3f,r2\n\ - add r12,r2\n\ - mov.l @(r0,r12),r0\n\ - bra 2f\n\ - sub r0,r2\n\ - .align 2\n\ - 1: .long _dl_start@GOT\n\ - 3: .long _dl_start@GOTOFF\n\ - 2: mov r2,%0" - : "=r" (addr) : : "r0", "r1", "r2"); - return addr; -} - - -/* 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 __attribute__ ((unused, always_inline)) -elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) -{ - Elf32_Addr *got; - extern void _dl_runtime_resolve (Elf32_Word); - extern void _dl_runtime_profile (Elf32_Word); - - if (l->l_info[DT_JMPREL] && lazy) - { - /* The GOT entries for functions in the PLT have not yet been filled - in. Their initial contents will arrange when called to load an - offset into the .rela.plt section and _GLOBAL_OFFSET_TABLE_[1], - and then jump to _GLOBAL_OFFSET_TABLE[2]. */ - got = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]); - /* If a library is prelinked but we have to relocate anyway, - we have to be able to undo the prelinking of .got.plt. - The prelinker saved us here address of .plt + 36. */ - if (got[1]) - { - l->l_mach.plt = got[1] + l->l_addr; - l->l_mach.gotplt = (Elf32_Addr) &got[3]; - } - got[1] = (Elf32_Addr) l; /* Identify this shared object. */ - - /* The got[2] entry contains the address of a function which gets - called to get the address of a so far unresolved function and - jump to it. The profiling extension of the dynamic linker allows - to intercept the calls to collect information. In this case we - don't store the address in the GOT so that all future calls also - end in this function. */ - if (profile) - { - got[2] = (Elf32_Addr) &_dl_runtime_profile; - /* Say that we really want profiling and the timers are started. */ - if (GLRO(dl_profile) != NULL - && _dl_name_match_p (GLRO(dl_profile), l)) - GL(dl_profile_map) = l; - } - else - /* This function will get called to fix up the GOT entry indicated by - the offset on the stack, and then jump to the resolved address. */ - got[2] = (Elf32_Addr) &_dl_runtime_resolve; - } - return lazy; -} - -#define ELF_MACHINE_RUNTIME_FIXUP_ARGS int plt_type -#define ELF_MACHINE_RUNTIME_FIXUP_PARAMS plt_type - -/* Mask identifying addresses reserved for the user program, - where the dynamic linker should not map anything. */ -#define ELF_MACHINE_USER_ADDRESS_MASK 0x80000000UL - -/* 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 ("\ -.text\n\ -.globl _start\n\ -.globl _dl_start_user\n\ -_start:\n\ - mov r15,r4\n\ - mov.l .L_dl_start,r1\n\ - mova .L_dl_start,r0\n\ - add r1,r0\n\ - jsr @r0\n\ - nop\n\ -_dl_start_user:\n\ - ! Save the user entry point address in r8.\n\ - mov r0,r8\n\ - ! Point r12 at the GOT.\n\ - mov.l 1f,r12\n\ - mova 1f,r0\n\ - bra 2f\n\ - add r0,r12\n\ - .align 2\n\ -1: .long _GLOBAL_OFFSET_TABLE_\n\ -2: ! See if we were run as a command with the executable file\n\ - ! name as an extra leading argument.\n\ - mov.l .L_dl_skip_args,r0\n\ - mov.l @(r0,r12),r0\n\ - mov.l @r0,r0\n\ - ! Get the original argument count.\n\ - mov.l @r15,r5\n\ - ! Subtract _dl_skip_args from it.\n\ - sub r0,r5\n\ - ! Adjust the stack pointer to skip _dl_skip_args words.\n\ - shll2 r0\n\ - add r0,r15\n\ - ! Store back the modified argument count.\n\ - mov.l r5,@r15\n\ - ! Compute argv address and envp.\n\ - mov r15,r6\n\ - add #4,r6\n\ - mov r5,r7\n\ - shll2 r7\n\ - add r15,r7\n\ - add #8,r7\n\ - mov.l .L_dl_loaded,r0\n\ - mov.l @(r0,r12),r0\n\ - mov.l @r0,r4\n\ - ! Call _dl_init.\n\ - mov.l .L_dl_init,r1\n\ - mova .L_dl_init,r0\n\ - add r1,r0\n\ - jsr @r0\n\ - nop\n\ -1: ! Pass our finalizer function to the user in r4, as per ELF ABI.\n\ - mov.l .L_dl_fini,r0\n\ - mov.l @(r0,r12),r4\n\ - ! Jump to the user's entry point.\n\ - jmp @r8\n\ - nop\n\ - .align 2\n\ -.L_dl_start:\n\ - .long _dl_start@PLT\n\ -.L_dl_skip_args:\n\ - .long _dl_skip_args@GOT\n\ -.L_dl_init:\n\ - .long _dl_init@PLT\n\ -.L_dl_loaded:\n\ - .long _rtld_local@GOT\n\ -.L_dl_fini:\n\ - .long _dl_fini@GOT\n\ - .type __fpscr_values,@object\n\ - .global __fpscr_values\n\ -__fpscr_values:\n\ - .long 0\n\ - .long 0x80000\n\ - .weak __fpscr_values\n\ -.previous\n\ -"); - -/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or - TLS variable, so undefined references should not be allowed to - define the value. - ELF_RTYPE_CLASS_COPY iff TYPE should not be allowed to resolve to one - of the main executable's symbols, as for a COPY reloc. */ -#define elf_machine_type_class(type) \ - ((((type) == R_SH_JMP_SLOT || (type) == R_SH_TLS_DTPMOD32 \ - || (type) == R_SH_TLS_DTPOFF32 || (type) == R_SH_TLS_TPOFF32) \ - * ELF_RTYPE_CLASS_PLT) \ - | (((type) == R_SH_COPY) * ELF_RTYPE_CLASS_COPY)) - -/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ -#define ELF_MACHINE_JMP_SLOT R_SH_JMP_SLOT - -/* 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; -} - -static inline Elf32_Addr -elf_machine_fixup_plt (struct link_map *map, lookup_t t, - const Elf32_Rela *reloc, - Elf32_Addr *reloc_addr, Elf32_Addr value) -{ - return *reloc_addr = value; -} - -/* Return the final value of a plt relocation. */ -static inline Elf32_Addr -elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc, - Elf32_Addr value) -{ - return value + reloc->r_addend; -} - -#define ARCH_LA_PLTENTER sh_gnu_pltenter -#define ARCH_LA_PLTEXIT sh_gnu_pltexit - -#endif /* !dl_machine_h */ - -/* SH never uses Elf32_Rel relocations. */ -#define ELF_MACHINE_NO_REL 1 -#define ELF_MACHINE_NO_RELA 0 - -#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 Elf32_Rela *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg, int skip_ifunc) -{ - Elf32_Addr *const reloc_addr = reloc_addr_arg; - const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); - Elf32_Addr value; - -#define COPY_UNALIGNED_WORD(swp, twp, align) \ - { \ - void *__s = (swp), *__t = (twp); \ - unsigned char *__s1 = __s, *__t1 = __t; \ - unsigned short *__s2 = __s, *__t2 = __t; \ - unsigned long *__s4 = __s, *__t4 = __t; \ - switch ((align)) \ - { \ - case 0: \ - *__t4 = *__s4; \ - break; \ - case 2: \ - *__t2++ = *__s2++; \ - *__t2 = *__s2; \ - break; \ - default: \ - *__t1++ = *__s1++; \ - *__t1++ = *__s1++; \ - *__t1++ = *__s1++; \ - *__t1 = *__s1; \ - break; \ - } \ - } - - if (__glibc_unlikely (r_type == R_SH_RELATIVE)) - { -#ifndef RTLD_BOOTSTRAP - if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */ -#endif - { - if (reloc->r_addend) - value = map->l_addr + reloc->r_addend; - else - { - COPY_UNALIGNED_WORD (reloc_addr_arg, &value, - (int) reloc_addr_arg & 3); - value += map->l_addr; - } - COPY_UNALIGNED_WORD (&value, reloc_addr_arg, - (int) reloc_addr_arg & 3); - } - } -#ifndef RTLD_BOOTSTRAP - else if (__glibc_unlikely (r_type == R_SH_NONE)) - return; -#endif - else - { - const Elf32_Sym *const refsym = sym; - struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type); - - value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value; - value += reloc->r_addend; - - switch (r_type) - { - case R_SH_COPY: - if (sym == NULL) - /* This can happen in trace mode if an object could not be - found. */ - break; - if (sym->st_size > refsym->st_size - || (sym->st_size < refsym->st_size && GLRO(dl_verbose))) - { - const char *strtab; - - strtab = (const char *) D_PTR (map, l_info[DT_STRTAB]); - _dl_error_printf ("\ -%s: Symbol `%s' has different size in shared object, consider re-linking\n", - RTLD_PROGNAME, strtab + refsym->st_name); - } - memcpy (reloc_addr_arg, (void *) value, - MIN (sym->st_size, refsym->st_size)); - break; - case R_SH_GLOB_DAT: - case R_SH_JMP_SLOT: - /* These addresses are always aligned. */ - *reloc_addr = value; - break; - /* XXX Remove TLS relocations which are not needed. */ - case R_SH_TLS_DTPMOD32: -#ifdef RTLD_BOOTSTRAP - /* During startup the dynamic linker is always the module - with index 1. - XXX If this relocation is necessary move before RESOLVE - call. */ - *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 - break; - case R_SH_TLS_DTPOFF32: -#ifndef RTLD_BOOTSTRAP - /* During relocation all TLS symbols are defined and used. - Therefore the offset is already correct. */ - if (sym != NULL) - *reloc_addr = sym->st_value; -#endif - break; - case R_SH_TLS_TPOFF32: - /* The offset is positive, afterward from the thread pointer. */ -#ifdef RTLD_BOOTSTRAP - *reloc_addr = map->l_tls_offset + sym->st_value + reloc->r_addend; -#else - /* We know the offset of object the symbol is contained in. - It is a positive value which will be added to the thread - pointer. To get the variable position in the TLS block - we add the offset from that of the TLS block. */ - if (sym != NULL) - { - CHECK_STATIC_TLS (map, sym_map); - *reloc_addr = sym_map->l_tls_offset + sym->st_value - + reloc->r_addend; - } -#endif - break; - case R_SH_DIR32: - { -#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP - /* 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. */ -# ifndef SHARED - weak_extern (_dl_rtld_map); -# endif - if (map == &GL(dl_rtld_map)) - /* Undo the relocation done here during bootstrapping. - Now we will relocate it anew, possibly using a - binding found in the user program or a loaded library - rather than the dynamic linker's built-in definitions - used while loading those libraries. */ - value -= map->l_addr + refsym->st_value + reloc->r_addend; -#endif - COPY_UNALIGNED_WORD (&value, reloc_addr_arg, - (int) reloc_addr_arg & 3); - break; - } - case R_SH_REL32: - value = (value - (Elf32_Addr) reloc_addr); - COPY_UNALIGNED_WORD (&value, reloc_addr_arg, - (int) reloc_addr_arg & 3); - break; - default: - _dl_reloc_bad_type (map, r_type, 0); - break; - } - } -} - -auto inline void -__attribute__ ((always_inline)) -elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - void *const reloc_addr_arg) -{ - Elf32_Addr value; - - if (reloc->r_addend) - value = l_addr + reloc->r_addend; - else - { - COPY_UNALIGNED_WORD (reloc_addr_arg, &value, (int) reloc_addr_arg & 3); - value += l_addr; - } - COPY_UNALIGNED_WORD (&value, reloc_addr_arg, (int) reloc_addr_arg & 3); - -#undef COPY_UNALIGNED_WORD -} - -auto inline void -__attribute__ ((always_inline)) -elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rela *reloc, - int skip_ifunc) -{ - Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset); - /* Check for unexpected PLT reloc type. */ - if (ELF32_R_TYPE (reloc->r_info) == R_SH_JMP_SLOT) - { - if (__builtin_expect (map->l_mach.plt, 0) == 0) - *reloc_addr += l_addr; - else - *reloc_addr = - map->l_mach.plt - + (((Elf32_Addr) reloc_addr) - map->l_mach.gotplt) * 7; - } - else - _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1); -} - -#endif /* RESOLVE_MAP */ diff --git a/sysdeps/sh/dl-tls.h b/sysdeps/sh/dl-tls.h deleted file mode 100644 index 3f094a77a0..0000000000 --- a/sysdeps/sh/dl-tls.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Thread-local storage handling in the ELF dynamic linker. SH version. - Copyright (C) 2002-2017 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 - . */ - - -/* 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); diff --git a/sysdeps/sh/dl-trampoline.S b/sysdeps/sh/dl-trampoline.S deleted file mode 100644 index 3dfed100b2..0000000000 --- a/sysdeps/sh/dl-trampoline.S +++ /dev/null @@ -1,430 +0,0 @@ -/* PLT trampolines. SH version. - Copyright (C) 2005-2017 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 - . */ - -#include - - .text - .globl _dl_runtime_resolve - .type _dl_runtime_resolve, @function - cfi_startproc - .align 5 -_dl_runtime_resolve: - mov.l r2,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r3,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r4,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r5,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r6,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r7,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r12,@-r15 - cfi_adjust_cfa_offset (4) - sts.l macl,@-r15 - cfi_adjust_cfa_offset (4) - sts.l mach,@-r15 - cfi_adjust_cfa_offset (4) - movt r3 ! Save T flag. - mov.l r3,@-r15 - cfi_adjust_cfa_offset (4) -#ifdef HAVE_FPU - sts.l fpscr,@-r15 - cfi_adjust_cfa_offset (4) - mov #8,r3 - swap.w r3,r3 - lds r3,fpscr - fmov.s fr11,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr10,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr9,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr8,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr7,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr6,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr5,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr4,@-r15 - cfi_adjust_cfa_offset (4) -#endif - sts.l pr,@-r15 - cfi_adjust_cfa_offset (4) - tst r0,r0 - bt 1f - mov r0,r2 -1: - mov r0,r4 ! PLT type - mov r2,r5 ! link map address -#ifdef SHARED - mov.l 2f,r2 - mova 2f,r0 - add r0,r2 ! Get GOT address in r2 - mov.l 3f,r0 - add r2,r0 -#else - mov.l 3f,r0 -#endif - jsr @r0 ! Call resolver. - mov r1,r6 ! reloc offset - lds.l @r15+,pr ! Get register content back. - cfi_adjust_cfa_offset (-4) -#ifdef HAVE_FPU - fmov.s @r15+,fr4 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr5 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr6 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr7 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr8 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr9 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr10 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr11 - cfi_adjust_cfa_offset (-4) - lds.l @r15+,fpscr - cfi_adjust_cfa_offset (-4) -#endif - mov.l @r15+,r3 - cfi_adjust_cfa_offset (-4) - shal r3 ! Lode T flag. - lds.l @r15+,mach - cfi_adjust_cfa_offset (-4) - lds.l @r15+,macl - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r12 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r7 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r6 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r5 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r4 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r3 - cfi_adjust_cfa_offset (-4) - jmp @r0 ! Jump to function address. - mov.l @r15+,r2 - cfi_adjust_cfa_offset (-4) - .align 2 -#ifdef SHARED -2: .long _GLOBAL_OFFSET_TABLE_ -3: .long _dl_fixup@GOTOFF -#else -3: .long _dl_fixup -#endif - cfi_endproc - .size _dl_runtime_resolve, .-_dl_runtime_resolve - - - .globl _dl_runtime_profile - .type _dl_runtime_profile,@function - cfi_startproc - .align 5 -_dl_runtime_profile: - mov.l r12,@-r15 - cfi_adjust_cfa_offset (4) -#ifdef HAVE_FPU - sts.l fpscr,@-r15 - cfi_adjust_cfa_offset (4) - mov #8,r12 - swap.w r12,r12 - lds r12,fpscr - fmov.s fr11,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr10,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr9,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr8,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr7,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr6,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr5,@-r15 - cfi_adjust_cfa_offset (4) - fmov.s fr4,@-r15 - cfi_adjust_cfa_offset (4) -#else - add #-36,r15 - cfi_adjust_cfa_offset (36) -#endif - mov.l r7,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r6,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r5,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r4,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r3,@-r15 - cfi_adjust_cfa_offset (4) - mov.l r2,@-r15 - cfi_adjust_cfa_offset (4) - sts.l macl,@-r15 - cfi_adjust_cfa_offset (4) - sts.l mach,@-r15 - cfi_adjust_cfa_offset (4) - movt r3 ! Save T flag. - mov.l r3,@-r15 - cfi_adjust_cfa_offset (4) - sts.l pr,@-r15 - cfi_adjust_cfa_offset (4) - tst r0,r0 - bt 1f - mov r0,r2 -1: - mov r0,r4 ! PLT type - mov r2,r5 ! link map address - sts pr,r7 ! return address - add #-24,r15 - cfi_adjust_cfa_offset (24) - mov #40,r0 - add r15,r0 - mov.l r0,@r15 ! Address of the register structure - mov #-1,r0 - mov.l r0,@(8,r15) - mov #8,r0 - add r15,r0 - mov.l r0,@(4,r15) - mov.l r5,@(12,r15) - mov.l r1,@(16,r15) -#ifdef SHARED - mov.l 2f,r12 - mova 2f,r0 - add r0,r12 ! Get GOT address in r12 - mov.l 3f,r0 - add r12,r0 -#else - mov.l 3f,r0 -#endif - jsr @r0 ! Call resolver. - mov r1,r6 ! reloc offset - mov.l @(8,r15),r1 - cmp/pz r1 - bt 4f - add #24,r15 - cfi_adjust_cfa_offset (-24) - lds.l @r15+,pr ! Get register content back. - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r3 - cfi_adjust_cfa_offset (-4) - shal r3 ! Lode T flag. - lds.l @r15+,mach - cfi_adjust_cfa_offset (-4) - lds.l @r15+,macl - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r2 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r3 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r4 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r5 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r6 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r7 - cfi_adjust_cfa_offset (-4) -#ifdef HAVE_FPU - fmov.s @r15+,fr4 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr5 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr6 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr7 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr8 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr9 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr10 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr11 - cfi_adjust_cfa_offset (-4) - lds.l @r15+,fpscr - cfi_adjust_cfa_offset (-4) -#else - add #36,r15 - cfi_adjust_cfa_offset (-36) -#endif - jmp @r0 ! Jump to function address. - mov.l @r15+,r12 - cfi_adjust_cfa_offset (-4) - .align 2 -#ifdef SHARED -2: .long _GLOBAL_OFFSET_TABLE_ -3: .long _dl_profile_fixup@GOTOFF -#else -3: .long _dl_profile_fixup -#endif - - cfi_adjust_cfa_offset (104) -4: - mov #104,r3 - add r15,r3 ! Original stack - mov.l r8,@(20,r15) - cfi_rel_offset (r8, 20) - mov r15,r8 - sub r1,r15 - shlr2 r15 - shll2 r15 - mov r15,r4 - shlr2 r1 - tst r1,r1 -5: - bt/s 6f - dt r1 - mov.l @r3+,r2 - mov.l r2,@r4 - bra 5b - add #4,r4 -6: - mov.l @r8,r12 - mov.l @r12+,r2 - mov.l @r12+,r3 - mov.l @r12+,r4 - mov.l @r12+,r5 - mov.l @r12+,r6 - mov.l @r12+,r7 -#ifdef HAVE_FPU - fmov.s @r12+,fr4 - fmov.s @r12+,fr5 - fmov.s @r12+,fr6 - fmov.s @r12+,fr7 - fmov.s @r12+,fr8 - fmov.s @r12+,fr9 - fmov.s @r12+,fr10 - fmov.s @r12+,fr11 - lds.l @r12+,fpscr -#else - add #36,r2 -#endif - jsr @r0 ! Call function. - nop - mov r8,r15 - mov.l @(12,r15),r4 ! link map address - mov.l @(16,r15),r5 ! reloc offset - mov.l @r15,r6 ! input registers -#ifdef HAVE_FPU - mov #16,r8 - add r15,r8 - fmov.s fr1,@-r8 - fmov.s fr0,@-r8 -#else - mov #8,r8 - add r15,r8 -#endif - mov.l r1,@-r8 - mov.l r0,@-r8 - mov.l @(20,r15),r8 - cfi_restore (r8) -#ifdef SHARED - mov.l 7f,r12 - mova 7f,r0 - add r0,r12 ! Get GOT address in r12 - mov.l 8f,r0 - add r12,r0 -#else - mov.l 8f,r0 -#endif - jsr @r0 - mov r15,r7 ! output registers - mov.l @r15+,r0 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r1 - cfi_adjust_cfa_offset (-4) -#ifdef HAVE_FPU - fmov.s @r15+,fr0 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr1 - cfi_adjust_cfa_offset (-4) - add #8,r15 - cfi_adjust_cfa_offset (-8) -#else - add #16,r15 - cfi_adjust_cfa_offset (-16) -#endif - lds.l @r15+,pr ! Get register content back. - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r3 - cfi_adjust_cfa_offset (-4) - shal r3 ! Lode T flag. - lds.l @r15+,mach - cfi_adjust_cfa_offset (-4) - lds.l @r15+,macl - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r2 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r3 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r4 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r5 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r6 - cfi_adjust_cfa_offset (-4) - mov.l @r15+,r7 - cfi_adjust_cfa_offset (-4) -#ifdef HAVE_FPU - fmov.s @r15+,fr4 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr5 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr6 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr7 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr8 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr9 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr10 - cfi_adjust_cfa_offset (-4) - fmov.s @r15+,fr11 - cfi_adjust_cfa_offset (-4) - lds.l @r15+,fpscr - cfi_adjust_cfa_offset (-4) -#else - add #36,r15 - cfi_adjust_cfa_offset (-36) -#endif - rts ! Jump to function address. - mov.l @r15+,r12 - cfi_adjust_cfa_offset (-4) - cfi_endproc - .align 2 -#ifdef SHARED -7: .long _GLOBAL_OFFSET_TABLE_ -8: .long _dl_call_pltexit@GOTOFF -#else -8: .long _dl_call_pltexit -#endif - .size _dl_runtime_profile, .-_dl_runtime_profile diff --git a/sysdeps/sh/fpu_control.h b/sysdeps/sh/fpu_control.h deleted file mode 100644 index df2627ad1e..0000000000 --- a/sysdeps/sh/fpu_control.h +++ /dev/null @@ -1,76 +0,0 @@ -/* FPU control word definitions. SH version. - Copyright (C) 1999-2017 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 - . */ - -#ifndef _FPU_CONTROL_H -#define _FPU_CONTROL_H - -#if !defined(__SH_FPU_ANY__) - -#define _FPU_RESERVED 0xffffffff -#define _FPU_DEFAULT 0x00000000 -typedef unsigned int fpu_control_t; -#define _FPU_GETCW(cw) (cw) = 0 -#define _FPU_SETCW(cw) (void) (cw) -extern fpu_control_t __fpu_control; - -#else - -#include - -/* masking of interrupts */ -#define _FPU_MASK_VM 0x0800 /* Invalid operation */ -#define _FPU_MASK_ZM 0x0400 /* Division by zero */ -#define _FPU_MASK_OM 0x0200 /* Overflow */ -#define _FPU_MASK_UM 0x0100 /* Underflow */ -#define _FPU_MASK_IM 0x0080 /* Inexact operation */ - -/* rounding control */ -#define _FPU_RC_NEAREST 0x0 /* RECOMMENDED */ -#define _FPU_RC_ZERO 0x1 - -#define _FPU_RESERVED 0xffc00000 /* These bits are reserved. */ - -/* The fdlibm code requires strict IEEE double precision arithmetic, - and no interrupts for exceptions, rounding to nearest. */ -#define _FPU_DEFAULT 0x00080000 /* Default value. */ -#define _FPU_IEEE 0x00080f80 /* Default + exceptions enabled. */ - -/* Type of the control word. */ -typedef unsigned int fpu_control_t; - -/* Macros for accessing the hardware control word. */ -#define _FPU_GETCW(cw) __asm__ ("sts fpscr,%0" : "=r" (cw)) - -#if defined __GNUC__ -__BEGIN_DECLS - -/* GCC provides this function. */ -extern void __set_fpscr (unsigned long); -#define _FPU_SETCW(cw) __set_fpscr ((cw)) -#else -#define _FPU_SETCW(cw) __asm__ ("lds %0,fpscr" : : "r" (cw)) -#endif - -/* Default control word set at startup. */ -extern fpu_control_t __fpu_control; - -__END_DECLS - -#endif /* __SH_FPU_ANY__ */ - -#endif /* _FPU_CONTROL_H */ diff --git a/sysdeps/sh/gccframe.h b/sysdeps/sh/gccframe.h deleted file mode 100644 index e12a845e22..0000000000 --- a/sysdeps/sh/gccframe.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Definition of object in frame unwind info. sh version. - Copyright (C) 2001-2017 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 - . */ - -#define DWARF_FRAME_REGISTERS 49 - -#include diff --git a/sysdeps/sh/gmp-mparam.h b/sysdeps/sh/gmp-mparam.h deleted file mode 100644 index a579b48787..0000000000 --- a/sysdeps/sh/gmp-mparam.h +++ /dev/null @@ -1,29 +0,0 @@ -/* gmp-mparam.h -- Compiler/machine parameter header file. - -Copyright (C) 1991-2017 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; see the file COPYING.LIB. If not, see -. */ - -#define BITS_PER_MP_LIMB 32 -#define BYTES_PER_MP_LIMB 4 -#define BITS_PER_LONGINT 32 -#define BITS_PER_INT 32 -#define BITS_PER_SHORTINT 16 -#define BITS_PER_CHAR 8 - -#define IEEE_DOUBLE_BIG_ENDIAN 0 -#define IEEE_DOUBLE_MIXED_ENDIAN 1 diff --git a/sysdeps/sh/jmpbuf-offsets.h b/sysdeps/sh/jmpbuf-offsets.h deleted file mode 100644 index fc5fae92c1..0000000000 --- a/sysdeps/sh/jmpbuf-offsets.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Private macros for accessing __jmp_buf contents. SH version. - Copyright (C) 2006-2017 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 - . */ - -#define JB_SIZE (4 * 15) diff --git a/sysdeps/sh/jmpbuf-unwind.h b/sysdeps/sh/jmpbuf-unwind.h deleted file mode 100644 index 8af8d0d44f..0000000000 --- a/sysdeps/sh/jmpbuf-unwind.h +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 2003-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - 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 - . */ - -#include -#include -#include -#include - -/* Test if longjmp to JMPBUF would unwind the frame - containing a local variable at ADDRESS. */ -#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \ - ((void *) (address) < (void *) demangle ((jmpbuf)[0].__regs[7])) - -#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ - _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) - -static inline uintptr_t __attribute__ ((unused)) -_jmpbuf_sp (__jmp_buf regs) -{ - void *sp = (void *) regs[0].__regs[7]; -#ifdef PTR_DEMANGLE - PTR_DEMANGLE (sp); -#endif - return (uintptr_t) sp; -} - -#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ - ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj)) - -/* We use the normal longjmp for unwinding. */ -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/sysdeps/sh/ldsodefs.h b/sysdeps/sh/ldsodefs.h deleted file mode 100644 index 68fd828aed..0000000000 --- a/sysdeps/sh/ldsodefs.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Run-time dynamic linker data structures for loaded ELF shared objects. - Copyright (C) 1995-2017 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 - . */ - -#ifndef _SH_LDSODEFS_H -#define _SH_LDSODEFS_H 1 - -#include - -struct La_sh_regs; -struct La_sh_retval; - -#define ARCH_PLTENTER_MEMBERS \ - uintptr_t (*sh_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \ - uintptr_t *, struct La_sh_regs *, \ - unsigned int *, const char *name, \ - long int *framesizep) - -#define ARCH_PLTEXIT_MEMBERS \ - unsigned int (*sh_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *, \ - uintptr_t *, const struct La_sh_regs *, \ - struct La_sh_retval *, const char *) - -#include_next - -#endif diff --git a/sysdeps/sh/libc-tls.c b/sysdeps/sh/libc-tls.c deleted file mode 100644 index 3fb6f057ee..0000000000 --- a/sysdeps/sh/libc-tls.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Thread-local storage handling in the ELF dynamic linker. SH version. - Copyright (C) 2009-2017 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 - . */ - -#include -#include - -/* On SH, linker optimizations are not required, so __tls_get_addr - can be called even in statically linked binaries. In this case module - must be always 1 and PT_TLS segment exist in the binary, otherwise it - would not link. */ - -void * -__tls_get_addr (tls_index *ti) -{ - dtv_t *dtv = THREAD_DTV (); - return (char *) dtv[1].pointer.val + ti->ti_offset; -} diff --git a/sysdeps/sh/libm-test-ulps b/sysdeps/sh/libm-test-ulps deleted file mode 100644 index a00f04e2a3..0000000000 --- a/sysdeps/sh/libm-test-ulps +++ /dev/null @@ -1,417 +0,0 @@ -# Begin of automatic generation - -# Maximal error of functions: -Function: "acos_towardzero": -float: 1 -ifloat: 1 - -Function: "acosh": -double: 1 -idouble: 1 - -Function: "asin_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "asinh": -double: 1 -float: 1 -ifloat: 1 - -Function: "atan2": -float: 1 -ifloat: 1 - -Function: "atanh": -float: 1 -ifloat: 1 - -Function: Real part of "cacos": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "cacos": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "cacosh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "cacosh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "casin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "casin": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "casinh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "casinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catan": -float: 1 -ifloat: 1 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "catanh": -float: 1 -ifloat: 1 - -Function: "cbrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "cexp": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "cexp": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "clog": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "clog": -float: 1 -ifloat: 1 - -Function: Real part of "clog10": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: Imaginary part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "cos": -float: 1 -ifloat: 1 - -Function: "cos_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "cosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "cosh_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "cpow": -double: 2 -float: 4 -idouble: 2 -ifloat: 4 - -Function: Imaginary part of "cpow": -float: 2 -ifloat: 2 - -Function: Real part of "csin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "csinh": -float: 1 -ifloat: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "csqrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "csqrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ctan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ctan": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Real part of "ctan_towardzero": -double: 5 -float: 3 -idouble: 5 -ifloat: 3 - -Function: Imaginary part of "ctan_towardzero": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 - -Function: Real part of "ctanh": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "ctanh": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: Real part of "ctanh_towardzero": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 - -Function: Imaginary part of "ctanh_towardzero": -double: 5 -float: 3 -idouble: 5 -ifloat: 3 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "exp10": -double: 1 -idouble: 1 - -Function: "exp10_towardzero": -double: 1 -idouble: 1 - -Function: "exp_towardzero": -double: 1 -idouble: 1 - -Function: "expm1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "expm1_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "fma_towardzero": -double: 1 -idouble: 1 - -Function: "gamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "hypot": -double: 1 -idouble: 1 - -Function: "j0": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "j1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "jn": -double: 4 -float: 4 -idouble: 4 -ifloat: 4 - -Function: "lgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log1p": -float: 1 -ifloat: 1 - -Function: "pow": -float: 1 -ifloat: 1 - -Function: "pow10": -double: 1 -idouble: 1 - -Function: "pow_towardzero": -float: 1 -ifloat: 1 - -Function: "sin": -float: 1 -ifloat: 1 - -Function: "sin_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "sincos": -float: 1 -ifloat: 1 - -Function: "sinh_towardzero": -double: 1 -idouble: 1 - -Function: "tan_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "tgamma": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "y1": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -Function: "yn": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -# end of automatic generation diff --git a/sysdeps/sh/libm-test-ulps-name b/sysdeps/sh/libm-test-ulps-name deleted file mode 100644 index b6c67c9520..0000000000 --- a/sysdeps/sh/libm-test-ulps-name +++ /dev/null @@ -1 +0,0 @@ -SH diff --git a/sysdeps/sh/linkmap.h b/sysdeps/sh/linkmap.h deleted file mode 100644 index bb2fbb5f16..0000000000 --- a/sysdeps/sh/linkmap.h +++ /dev/null @@ -1,5 +0,0 @@ -struct link_map_machine - { - Elf32_Addr plt; /* Address of .plt + 36 */ - Elf32_Addr gotplt; /* Address of .got + 0x0c */ - }; diff --git a/sysdeps/sh/machine-gmon.h b/sysdeps/sh/machine-gmon.h deleted file mode 100644 index 56e45bcdb4..0000000000 --- a/sysdeps/sh/machine-gmon.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Machine-dependent definitions for profiling support. SH version. - Copyright (C) 1996-2017 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 - . */ - -/* We must not pollute the global namespace. */ -#define mcount_internal __mcount_internal - -void mcount_internal (u_long frompc, u_long selfpc); - -#define _MCOUNT_DECL(frompc, selfpc) \ -void mcount_internal (u_long frompc, u_long selfpc) - - -/* Define MCOUNT as empty since we have the implementation in another - file. */ -#define MCOUNT diff --git a/sysdeps/sh/math_private.h b/sysdeps/sh/math_private.h deleted file mode 100644 index d13f2d49d3..0000000000 --- a/sysdeps/sh/math_private.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef SH_MATH_PRIVATE_H -#define SH_MATH_PRIVATE_H 1 - -/* Enable __finitel, __isinfl, and __isnanl for binary compatibility - when built without long double support. */ -#define LDBL_CLASSIFY_COMPAT 1 - -#include_next - -#endif diff --git a/sysdeps/sh/memcpy.S b/sysdeps/sh/memcpy.S deleted file mode 100644 index c13afeaf24..0000000000 --- a/sysdeps/sh/memcpy.S +++ /dev/null @@ -1,198 +0,0 @@ -/* Copyright (C) 1999-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Kazumoto Kojima - Optimized by Toshiyasu Morita - - 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 - . */ - -#include - -/* void *memcpy(void *dst, const void *src, size_t n); - No overlap between the memory of DST and of SRC are assumed. */ - -ENTRY(memcpy) - mov r4,r3 /* Save destination. */ - - /* If less than 11 bytes, just do a byte copy. */ - mov #11,r0 - cmp/gt r6,r0 - bt L_byteloop_init - - /* Check if we need to word-align source. */ - mov r5,r0 - tst #1,r0 - bt L_wordalign - - mov.b @r0+,r1 /* Copy one byte. */ - add #-1,r6 - mov.b r1,@r4 - add #1,r4 - - .balignw 4,0x0009 -L_wordalign: - /* Check if we need to longword-align source. */ - tst #2,r0 - bt L_copy - - mov.w @r0+,r1 /* Copy one word. */ - add #-2,r6 -#ifdef __BIG_ENDIAN__ - add #1,r4 - mov.b r1,@r4 - shlr8 r1 - mov.b r1,@-r4 - add #2,r4 -#else - mov.b r1,@r4 - add #1,r4 - shlr8 r1 - mov.b r1,@r4 - add #1,r4 -#endif -L_copy: - mov r0,r5 - - /* Calculate the correct routine to handle the destination - alignment and simultaneously calculate the loop counts for - both the 2 word copy loop and byte copy loop. */ - mova L_jumptable,r0 - mov r0,r1 - mov r4,r0 - mov r6,r7 - and #3,r0 - shlr2 r7 - shll r0 - shlr r7 - mov.w @(r0,r1),r2 - mov #7,r0 - braf r2 - and r0,r6 -L_base: - - .balign 4 -L_jumptable: - .word L_copydest0 - L_base - .word L_copydest1_or_3 - L_base - .word L_copydest2 - L_base - .word L_copydest1_or_3 - L_base - - .balign 4 - /* Copy routine for (dest mod 4) == 1 or == 3. */ -L_copydest1_or_3: - add #-1,r4 - .balignw 4,0x0009 -L_copydest1_or_3_loop: - mov.l @r5+,r0 /* Read first longword. */ - dt r7 - mov.l @r5+,r1 /* Read second longword. */ -#ifdef __BIG_ENDIAN__ - /* Write first longword as byte, word, byte. */ - mov.b r0,@(4,r4) - shlr8 r0 - mov.w r0,@(2,r4) - shlr16 r0 - mov.b r0,@(1,r4) - mov r1,r0 - /* Write second longword as byte, word, byte. */ - mov.b r0,@(8,r4) - shlr8 r0 - mov.w r0,@(6,r4) - shlr16 r0 - mov.b r0,@(5,r4) -#else - /* Write first longword as byte, word, byte. */ - mov.b r0,@(1,r4) - shlr8 r0 - mov.w r0,@(2,r4) - shlr16 r0 - mov.b r0,@(4,r4) - mov r1,r0 - /* Write second longword as byte, word, byte. */ - mov.b r0,@(5,r4) - shlr8 r0 - mov.w r0,@(6,r4) - shlr16 r0 - mov.b r0,@(8,r4) -#endif - bf/s L_copydest1_or_3_loop - add #8,r4 - - bra L_byteloop_init - add #1,r4 - - .balign 4 - /* Copy routine for (dest mod 4) == 2. */ -L_copydest2: -L_copydest2_loop: - mov.l @r5+,r0 - dt r7 - mov.l @r5+,r1 -#ifdef __BIG_ENDIAN__ - mov.w r0,@(2,r4) - shlr16 r0 - mov.w r0,@r4 - mov r1,r0 - mov.w r0,@(6,r4) - shlr16 r0 - mov.w r0,@(4,r4) -#else - mov.w r0,@r4 - shlr16 r0 - mov.w r0,@(2,r4) - mov r1,r0 - mov.w r0,@(4,r4) - shlr16 r0 - mov.w r0,@(6,r4) -#endif - bf/s L_copydest2_loop - add #8,r4 - - bra L_byteloop_init - nop - - .balign 4 - /* Copy routine for (dest mod 4) == 0. */ -L_copydest0: - add #-8,r4 - .balignw 4,0x0009 -L_copydest0_loop: - mov.l @r5+,r0 - dt r7 - mov.l @r5+,r1 - add #8,r4 - mov.l r0,@r4 - bf/s L_copydest0_loop - mov.l r1,@(4,r4) - - add #8,r4 /* Fall through. */ - -L_byteloop_init: - tst r6,r6 - bt L_exit - - .balignw 4,0x0009 - /* Copy remaining bytes. */ -L_byteloop: - mov.b @r5+,r0 - dt r6 - mov.b r0,@r4 - bf/s L_byteloop - add #1,r4 - -L_exit: - rts - mov r3,r0 /* Return destination. */ -END(memcpy) -libc_hidden_builtin_def (memcpy) diff --git a/sysdeps/sh/memset.S b/sysdeps/sh/memset.S deleted file mode 100644 index cb47e0c709..0000000000 --- a/sysdeps/sh/memset.S +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright (C) 1999-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Kazumoto Kojima - Optimized by Toshiyasu Morita - - 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 - . */ - -#include - -/* void *memset (t, c, len); */ - -ENTRY(memset) - mov #12,r0 - cmp/gt r6,r0 - bt.s L_byte_loop_init - mov r4,r7 - - extu.b r5,r5 - swap.b r5,r1 - or r1,r5 - swap.w r5,r1 - or r1,r5 - - mov r4,r0 - tst #1,r0 - bt L_wordalign - - mov.b r5,@r4 - add #-1,r6 - add #1,r4 - mov r4,r0 - - .balignw 4,0x0009 -L_wordalign: - tst #2,r0 - bt L_word_loop_init - - mov.w r5,@r4 - add #-2,r6 - add #2,r4 - mov r4,r0 - - .balignw 4,0x0009 -L_word_loop_init: - mov r6,r3 - shlr2 r3 - mov #7,r0 - shlr r3 - and r0,r6 - - .balignw 4,0x0009 -L_2word_loop: - mov.l r5,@r4 - dt r3 - mov.l r5,@(4,r4) - bf.s L_2word_loop - add #8,r4 - - .balignw 4,0x0009 -L_byte_loop_init: - tst r6,r6 - bt L_byte_exit - - .balignw 4,0x0009 -L_byte_loop: - mov.b r5,@r4 - dt r6 - bf.s L_byte_loop - add #1,r4 - - .balignw 4,0x0009 -L_byte_exit: - rts - mov r7,r0 -END(memset) -libc_hidden_builtin_def (memset) diff --git a/sysdeps/sh/memusage.h b/sysdeps/sh/memusage.h deleted file mode 100644 index 1821c69485..0000000000 --- a/sysdeps/sh/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2017 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 - . */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("r15"); stack_ptr; }) - -#include diff --git a/sysdeps/sh/nptl/bits/pthreadtypes-arch.h b/sysdeps/sh/nptl/bits/pthreadtypes-arch.h deleted file mode 100644 index b2615fe314..0000000000 --- a/sysdeps/sh/nptl/bits/pthreadtypes-arch.h +++ /dev/null @@ -1,69 +0,0 @@ -/* Copyright (C) 2002-2017 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 - . */ - -#ifndef _BITS_PTHREADTYPES_ARCH_H -#define _BITS_PTHREADTYPES_ARCH_H 1 - -#include - -#define __SIZEOF_PTHREAD_ATTR_T 36 -#define __SIZEOF_PTHREAD_MUTEX_T 24 -#define __SIZEOF_PTHREAD_MUTEXATTR_T 4 -#define __SIZEOF_PTHREAD_COND_T 48 -#define __SIZEOF_PTHREAD_CONDATTR_T 4 -#define __SIZEOF_PTHREAD_RWLOCK_T 32 -#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 -#define __SIZEOF_PTHREAD_BARRIER_T 20 -#define __SIZEOF_PTHREAD_BARRIERATTR_T 4 - -/* Definitions for internal mutex struct. */ -#define __PTHREAD_COMPAT_PADDING_MID -#define __PTHREAD_COMPAT_PADDING_END -#define __PTHREAD_MUTEX_LOCK_ELISION 0 - -#define __LOCK_ALIGNMENT -#define __ONCE_ALIGNMENT - -struct __pthread_rwlock_arch_t -{ - unsigned int __readers; - unsigned int __writers; - unsigned int __wrphase_futex; - unsigned int __writers_futex; - unsigned int __pad3; - unsigned int __pad4; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned char __pad1; - unsigned char __pad2; - unsigned char __shared; - /* FLAGS must stay at this position in the structure to maintain - binary compatibility. */ - unsigned char __flags; -#else - /* FLAGS must stay at this position in the structure to maintain - binary compatibility. */ - unsigned char __flags; - unsigned char __shared; - unsigned char __pad1; - unsigned char __pad2; -#endif - unsigned long int __cur_writer; -}; - -#define __PTHREAD_RWLOCK_ELISION_EXTRA 0 - -#endif /* bits/pthreadtypes.h */ diff --git a/sysdeps/sh/nptl/bits/semaphore.h b/sysdeps/sh/nptl/bits/semaphore.h deleted file mode 100644 index 42a0836285..0000000000 --- a/sysdeps/sh/nptl/bits/semaphore.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 2002-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - 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 - . */ - -#ifndef _SEMAPHORE_H -# error "Never use directly; include instead." -#endif - - -#define __SIZEOF_SEM_T 16 - - -/* Value returned if `sem_open' failed. */ -#define SEM_FAILED ((sem_t *) 0) - - -typedef union -{ - char __size[__SIZEOF_SEM_T]; - long int __align; -} sem_t; diff --git a/sysdeps/sh/nptl/pthread_spin_init.c b/sysdeps/sh/nptl/pthread_spin_init.c deleted file mode 100644 index a1205b9698..0000000000 --- a/sysdeps/sh/nptl/pthread_spin_init.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright (C) 2002-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - 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 - . */ - -/* Not needed. pthread_spin_init is an alias for pthread_spin_unlock. */ diff --git a/sysdeps/sh/nptl/pthread_spin_lock.c b/sysdeps/sh/nptl/pthread_spin_lock.c deleted file mode 100644 index 3daa19d3f9..0000000000 --- a/sysdeps/sh/nptl/pthread_spin_lock.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2003-2017 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 - . */ - -#include "pthreadP.h" - -int -pthread_spin_lock (pthread_spinlock_t *lock) -{ - unsigned int val; - - do - asm volatile ("tas.b @%1; movt %0" - : "=&r" (val) - : "r" (lock) - : "memory"); - while (val == 0); - - return 0; -} diff --git a/sysdeps/sh/nptl/pthread_spin_trylock.S b/sysdeps/sh/nptl/pthread_spin_trylock.S deleted file mode 100644 index 524dbf9533..0000000000 --- a/sysdeps/sh/nptl/pthread_spin_trylock.S +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2003-2017 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 - . */ - -#include - - .globl pthread_spin_trylock - .type pthread_spin_trylock,@function - .align 5 -pthread_spin_trylock: - tas.b @r4 - bf/s 1f - mov #EBUSY, r0 - mov #0, r0 -1: - rts - nop - .size pthread_spin_trylock,.-pthread_spin_trylock diff --git a/sysdeps/sh/nptl/pthread_spin_unlock.S b/sysdeps/sh/nptl/pthread_spin_unlock.S deleted file mode 100644 index aabf1e463d..0000000000 --- a/sysdeps/sh/nptl/pthread_spin_unlock.S +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2003-2017 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 - . */ - - .globl pthread_spin_unlock - .type pthread_spin_unlock,@function - .align 5 -pthread_spin_unlock: - mov #0,r0 - rts - mov.l r0,@r4 - .size pthread_spin_unlock,.-pthread_spin_unlock - - /* The implementation of pthread_spin_init is identical. */ - .globl pthread_spin_init -pthread_spin_init = pthread_spin_unlock diff --git a/sysdeps/sh/nptl/pthreaddef.h b/sysdeps/sh/nptl/pthreaddef.h deleted file mode 100644 index 327f090788..0000000000 --- a/sysdeps/sh/nptl/pthreaddef.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 2003-2017 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 - . */ - -#include - -/* Default stack size. */ -#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024) - -/* Required stack pointer alignment at beginning. */ -#define STACK_ALIGN 8 - -/* Minimal stack size after allocating thread descriptor and guard size. */ -#define MINIMAL_REST_STACK 2048 - -/* Alignment requirement for TCB. */ -#define TCB_ALIGNMENT 8 - - -/* Location of current stack frame. */ -#define CURRENT_STACK_FRAME __builtin_frame_address (0) diff --git a/sysdeps/sh/nptl/tcb-offsets.sym b/sysdeps/sh/nptl/tcb-offsets.sym deleted file mode 100644 index 4963e1506f..0000000000 --- a/sysdeps/sh/nptl/tcb-offsets.sym +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include -#include - -RESULT offsetof (struct pthread, result) -TID offsetof (struct pthread, tid) -CANCELHANDLING offsetof (struct pthread, cancelhandling) -CLEANUP_JMP_BUF offsetof (struct pthread, cleanup_jmp_buf) -MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads) -TLS_PRE_TCB_SIZE sizeof (struct pthread) -MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock) -POINTER_GUARD offsetof (tcbhead_t, pointer_guard) -#ifndef __ASSUME_PRIVATE_FUTEX -PRIVATE_FUTEX offsetof (struct pthread, header.private_futex) -#endif diff --git a/sysdeps/sh/nptl/tls.h b/sysdeps/sh/nptl/tls.h deleted file mode 100644 index 547cff179f..0000000000 --- a/sysdeps/sh/nptl/tls.h +++ /dev/null @@ -1,168 +0,0 @@ -/* Definition for thread-local data handling. NPTL/SH version. - Copyright (C) 2003-2017 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 - . */ - -#ifndef _TLS_H -#define _TLS_H - -# include - -#ifndef __ASSEMBLER__ -# include -# include -# include -# include -# include -# include -# include - -typedef struct -{ - dtv_t *dtv; - uintptr_t pointer_guard; -} tcbhead_t; - -# define TLS_MULTIPLE_THREADS_IN_TCB 1 - -#else /* __ASSEMBLER__ */ -# include -#endif /* __ASSEMBLER__ */ - - -#ifndef __ASSEMBLER__ - -/* Get system call information. */ -# include - -/* This is the size of the initial TCB. */ -# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t) - -/* Alignment requirements for the initial TCB. */ -# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) - -/* This is the size of the TCB. */ -# define TLS_TCB_SIZE sizeof (tcbhead_t) - -/* This is the size we need before TCB. */ -# define TLS_PRE_TCB_SIZE sizeof (struct pthread) - -/* Alignment requirements for the TCB. */ -# define TLS_TCB_ALIGN __alignof__ (struct pthread) - -/* The TLS blocks start right after the TCB. */ -# define TLS_DTV_AT_TP 1 -# define TLS_TCB_AT_TP 0 - -/* Get the thread descriptor definition. */ -# include - -/* Install the dtv pointer. The pointer passed is to the element with - index -1 which contain the length. */ -# define INSTALL_DTV(tcbp, dtvp) \ - ((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1 - -/* Install new dtv for current thread. */ -# define INSTALL_NEW_DTV(dtv) \ - ({ tcbhead_t *__tcbp; \ - __asm __volatile ("stc gbr,%0" : "=r" (__tcbp)); \ - __tcbp->dtv = (dtv);}) - -/* Return dtv of given thread descriptor. */ -# define GET_DTV(tcbp) \ - (((tcbhead_t *) (tcbp))->dtv) - -/* Code to initially initialize the thread pointer. This might need - special attention since 'errno' is not yet available and if the - operation can cause a failure 'errno' must not be touched. */ -# define TLS_INIT_TP(tcbp) \ - ({ __asm __volatile ("ldc %0,gbr" : : "r" (tcbp)); NULL; }) - -# define TLS_DEFINE_INIT_TP(tp, pd) void *tp = (pd) + 1 - -/* Return the address of the dtv for the current thread. */ -# define THREAD_DTV() \ - ({ tcbhead_t *__tcbp; \ - __asm __volatile ("stc gbr,%0" : "=r" (__tcbp)); \ - __tcbp->dtv;}) - -/* Return the thread descriptor for the current thread. - The contained asm must *not* be marked volatile since otherwise - assignments like - struct pthread *self = thread_self(); - do not get optimized away. */ -# define THREAD_SELF \ - ({ struct pthread *__self; \ - __asm ("stc gbr,%0" : "=r" (__self)); \ - __self - 1;}) - -/* Magic for libthread_db to know how to do THREAD_SELF. */ -# define DB_THREAD_SELF \ - REGISTER (32, 32, REG_GBR * 4, -sizeof (struct pthread)) - -/* Read member of the thread descriptor directly. */ -# define THREAD_GETMEM(descr, member) (descr->member) - -/* Same as THREAD_GETMEM, but the member offset can be non-constant. */ -# define THREAD_GETMEM_NC(descr, member, idx) (descr->member[idx]) - -/* Set member of the thread descriptor directly. */ -# define THREAD_SETMEM(descr, member, value) \ - descr->member = (value) - -/* Same as THREAD_SETMEM, but the member offset can be non-constant. */ -# define THREAD_SETMEM_NC(descr, member, idx, value) \ - descr->member[idx] = (value) - -#define THREAD_GET_POINTER_GUARD() \ - ({ tcbhead_t *__tcbp; \ - __asm __volatile ("stc gbr,%0" : "=r" (__tcbp)); \ - __tcbp->pointer_guard;}) - #define THREAD_SET_POINTER_GUARD(value) \ - ({ tcbhead_t *__tcbp; \ - __asm __volatile ("stc gbr,%0" : "=r" (__tcbp)); \ - __tcbp->pointer_guard = (value);}) -#define THREAD_COPY_POINTER_GUARD(descr) \ - ({ tcbhead_t *__tcbp; \ - __asm __volatile ("stc gbr,%0" : "=r" (__tcbp)); \ - ((tcbhead_t *) (descr + 1))->pointer_guard = __tcbp->pointer_guard;}) - -/* Get and set the global scope generation counter in struct pthread. */ -#define THREAD_GSCOPE_FLAG_UNUSED 0 -#define THREAD_GSCOPE_FLAG_USED 1 -#define THREAD_GSCOPE_FLAG_WAIT 2 -#define THREAD_GSCOPE_RESET_FLAG() \ - do \ - { int __res \ - = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \ - THREAD_GSCOPE_FLAG_UNUSED); \ - if (__res == THREAD_GSCOPE_FLAG_WAIT) \ - lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \ - } \ - while (0) -#define THREAD_GSCOPE_SET_FLAG() \ - do \ - { \ - THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \ - atomic_write_barrier (); \ - } \ - while (0) -#define THREAD_GSCOPE_WAIT() \ - GL(dl_wait_lookup_done) () - -#endif /* __ASSEMBLER__ */ - -#endif /* tls.h */ diff --git a/sysdeps/sh/preconfigure b/sysdeps/sh/preconfigure deleted file mode 100644 index c1f6537797..0000000000 --- a/sysdeps/sh/preconfigure +++ /dev/null @@ -1,6 +0,0 @@ -# preconfigure fragment for sh. - -case "$machine" in -sh3*) base_machine=sh machine=sh/sh3 ;; -sh4*) base_machine=sh machine=sh/sh4 ;; -esac diff --git a/sysdeps/sh/s_fma.c b/sysdeps/sh/s_fma.c deleted file mode 100644 index d92438d448..0000000000 --- a/sysdeps/sh/s_fma.c +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __SH_FPU_ANY__ -# include -#else -# include -#endif diff --git a/sysdeps/sh/s_fmaf.c b/sysdeps/sh/s_fmaf.c deleted file mode 100644 index 3b811ae6da..0000000000 --- a/sysdeps/sh/s_fmaf.c +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __SH_FPU_ANY__ -# include -#else -# include -#endif diff --git a/sysdeps/sh/sh3/__longjmp.S b/sysdeps/sh/sh3/__longjmp.S deleted file mode 100644 index 27d6141a98..0000000000 --- a/sysdeps/sh/sh3/__longjmp.S +++ /dev/null @@ -1,63 +0,0 @@ -/* longjmp for SH. - Copyright (C) 1999-2017 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 - . */ - -#include -#define _SETJMP_H -#define _ASM -#include - -/* __longjmp(jmpbuf, val) */ - -ENTRY (__longjmp) - mov.l @r4+, r8 - mov.l @r4+, r9 - mov.l @r4+, r10 - mov.l @r4+, r11 - mov.l @r4+, r12 - mov r5, r0 /* get the return value in place */ - tst r0, r0 - bf.s 1f - mov.l @r4+, r13 - mov #1,r0 /* can't let setjmp() return zero! */ -1: -#ifdef PTR_DEMANGLE - mov.l @r4+, r2 - PTR_DEMANGLE (r2, r1) - mov r2, r14 - mov.l @r4+, r2 - PTR_DEMANGLE2 (r2, r1) -# ifdef CHECK_SP - CHECK_SP (r2) -# endif - mov r2, r15 - mov.l @r4+, r2 - PTR_DEMANGLE2 (r2, r1) - lds r2, pr - mov #0, r1 -#else - mov.l @r4+, r14 -# ifdef CHECK_SP - mov.l @r4, r2 - CHECK_SP (r2) -# endif - mov.l @r4+, r15 - lds.l @r4+, pr -#endif - rts - ldc.l @r4+, gbr -END (__longjmp) diff --git a/sysdeps/sh/sh3/setjmp.S b/sysdeps/sh/sh3/setjmp.S deleted file mode 100644 index ef039a2114..0000000000 --- a/sysdeps/sh/sh3/setjmp.S +++ /dev/null @@ -1,81 +0,0 @@ -/* setjmp for SH3. - Copyright (C) 1999-2017 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 - . */ - -#include -#include - -ENTRY (__sigsetjmp) - /* Save registers */ - add #(JB_SIZE - 4 * 5), r4 - stc.l gbr, @-r4 -#ifdef PTR_MANGLE - sts pr, r2 - PTR_MANGLE (r2, r1) - mov.l r2, @-r4 - mov r15, r2 - PTR_MANGLE2 (r2, r1) - mov.l r2, @-r4 - mov r14, r2 - PTR_MANGLE2 (r2, r1) - mov.l r2, @-r4 - mov #0, r1 -#else - sts.l pr, @-r4 - mov.l r15, @-r4 - mov.l r14, @-r4 -#endif - mov.l r13, @-r4 - mov.l r12, @-r4 - mov.l r11, @-r4 - mov.l r10, @-r4 - mov.l r9, @-r4 - mov.l r8, @-r4 - -#if IS_IN (rtld) - /* In ld.so we never save the signal mask. */ - rts - mov #0, r0 -#else - /* Make a tail call to __sigjmp_save; it takes the same args. */ -# ifdef SHARED - mov.l 1f, r1 - mova 1f, r0 - bra 2f - add r1, r0 - .align 2 -1: - .long _GLOBAL_OFFSET_TABLE_ -2: - mov.l .L1, r1 - mov.l @(r0,r1), r1 - jmp @r1 - nop - .align 2 -.L1: - .long C_SYMBOL_NAME(__sigjmp_save@GOT) -# else - mov.l .L1, r1 - jmp @r1 - nop - .align 2 -.L1: - .long C_SYMBOL_NAME(__sigjmp_save) -# endif -#endif -END (__sigsetjmp) -hidden_def (__sigsetjmp) diff --git a/sysdeps/sh/sh4/Makefile b/sysdeps/sh/sh4/Makefile deleted file mode 100644 index ccac91432a..0000000000 --- a/sysdeps/sh/sh4/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -# Build everything with full IEEE math support. -mieee isn't -# default for the older SH compilers. -sysdep-CFLAGS += -mieee diff --git a/sysdeps/sh/sh4/Versions b/sysdeps/sh/sh4/Versions deleted file mode 100644 index 8cc1c7b7d4..0000000000 --- a/sysdeps/sh/sh4/Versions +++ /dev/null @@ -1,5 +0,0 @@ -ld { - GLIBC_PRIVATE { - __fpscr_values; - } -} diff --git a/sysdeps/sh/sh4/__longjmp.S b/sysdeps/sh/sh4/__longjmp.S deleted file mode 100644 index 2a5c25da32..0000000000 --- a/sysdeps/sh/sh4/__longjmp.S +++ /dev/null @@ -1,73 +0,0 @@ -/* longjmp for SH. - Copyright (C) 1999-2017 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 - . */ - -#include -#define _SETJMP_H -#define _ASM -#include - -/* __longjmp(jmpbuf, val) */ - -ENTRY (__longjmp) - mov.l @r4+, r8 - mov.l @r4+, r9 - mov.l @r4+, r10 - mov.l @r4+, r11 - mov.l @r4+, r12 - mov r5, r0 /* get the return value in place */ - tst r0, r0 - bf.s 1f - mov.l @r4+, r13 - mov #1,r0 /* can't let setjmp() return zero! */ -1: -#ifdef PTR_DEMANGLE - mov.l @r4+, r2 - PTR_DEMANGLE (r2, r1) - mov r2, r14 - mov.l @r4+, r2 - PTR_DEMANGLE2 (r2, r1) -# ifdef CHECK_SP - CHECK_SP (r2) -# endif - mov r2, r15 - mov.l @r4+, r2 - PTR_DEMANGLE2 (r2, r1) - lds r2, pr - mov #0, r1 -#else - mov.l @r4+, r14 -# ifdef CHECK_SP - mov.l @r4, r2 - CHECK_SP (r2) -# endif - mov.l @r4+, r15 - lds.l @r4+, pr -#endif -#ifdef __SH_FPU_ANY__ - ldc.l @r4+, gbr - lds.l @r4+, fpscr - fmov.s @r4+, fr12 - fmov.s @r4+, fr13 - fmov.s @r4+, fr14 - rts - fmov.s @r4+, fr15 -#else - rts - ldc.l @r4+, gbr -#endif /* !__SH_FPU_ANY__ */ -END (__longjmp) diff --git a/sysdeps/sh/sh4/dl-trampoline.S b/sysdeps/sh/sh4/dl-trampoline.S deleted file mode 100644 index bd9bb7e5bd..0000000000 --- a/sysdeps/sh/sh4/dl-trampoline.S +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __SH_FPU_ANY__ -# define HAVE_FPU -#endif -#include diff --git a/sysdeps/sh/sh4/fpu/fclrexcpt.c b/sysdeps/sh/sh4/fpu/fclrexcpt.c deleted file mode 100644 index 5a430f6655..0000000000 --- a/sysdeps/sh/sh4/fpu/fclrexcpt.c +++ /dev/null @@ -1,42 +0,0 @@ -/* Clear given exceptions in current floating-point environment. - Copyright (C) 1998-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1998. - - 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 - . */ - -#include -#include - -int -feclearexcept (int excepts) -{ - fpu_control_t cw; - - /* Mask out unsupported bits/exceptions. */ - excepts &= FE_ALL_EXCEPT; - - /* Read the complete control word. */ - _FPU_GETCW (cw); - - /* Clear exception bits. */ - cw &= ~excepts; - - /* Put the new data in effect. */ - _FPU_SETCW (cw); - - return 0; -} -libm_hidden_def (feclearexcept) diff --git a/sysdeps/sh/sh4/fpu/fedisblxcpt.c b/sysdeps/sh/sh4/fpu/fedisblxcpt.c deleted file mode 100644 index 718ae70899..0000000000 --- a/sysdeps/sh/sh4/fpu/fedisblxcpt.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Disable floating-point exceptions. - Copyright (C) 2012-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Nobuhiro Iwamatsu , 2012. - - 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 - . */ - -#include -#include - -int -fedisableexcept (int excepts) -{ - fpu_control_t temp, old_exc; - - /* Get the current control register contents. */ - _FPU_GETCW (temp); - - old_exc = (temp >> 5) & FE_ALL_EXCEPT; - - excepts &= FE_ALL_EXCEPT; - - temp &= ~(excepts << 5); - _FPU_SETCW (temp); - - return old_exc; -} diff --git a/sysdeps/sh/sh4/fpu/feenablxcpt.c b/sysdeps/sh/sh4/fpu/feenablxcpt.c deleted file mode 100644 index d638714149..0000000000 --- a/sysdeps/sh/sh4/fpu/feenablxcpt.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Enable floating-point exceptions. - Copyright (C) 2012-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Nobuhiro Iwamatsu , 2012. - - 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 - . */ - -#include -#include - -int -feenableexcept (int excepts) -{ - fpu_control_t temp, old_flag; - - /* Get current exceptions. */ - _FPU_GETCW (temp); - - old_flag = (temp >> 5) & FE_ALL_EXCEPT; - excepts &= FE_ALL_EXCEPT; - - temp |= excepts << 5; - _FPU_SETCW (temp); - - return old_flag; -} diff --git a/sysdeps/sh/sh4/fpu/fegetenv.c b/sysdeps/sh/sh4/fpu/fegetenv.c deleted file mode 100644 index 00945f1072..0000000000 --- a/sysdeps/sh/sh4/fpu/fegetenv.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Store current floating-point environment. - Copyright (C) 1997-2017 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 - . */ - -#include -#include - -int -__fegetenv (fenv_t *envp) -{ - fpu_control_t temp; - _FPU_GETCW (temp); - - envp->__fpscr = temp; - - return 0; -} -libm_hidden_def (__fegetenv) -weak_alias (__fegetenv, fegetenv) -libm_hidden_weak (fegetenv) diff --git a/sysdeps/sh/sh4/fpu/fegetexcept.c b/sysdeps/sh/sh4/fpu/fegetexcept.c deleted file mode 100644 index 4d1299e310..0000000000 --- a/sysdeps/sh/sh4/fpu/fegetexcept.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Get enabled floating-point exceptions. - Copyright (C) 2012-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Nobuhiro Iwamatsu , 2012. - - 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 - . */ - -#include -#include - -int -fegetexcept (void) -{ - fpu_control_t temp; - - /* Get current exceptions. */ - _FPU_GETCW (temp); - - return (temp >> 5) & FE_ALL_EXCEPT; -} diff --git a/sysdeps/sh/sh4/fpu/fegetmode.c b/sysdeps/sh/sh4/fpu/fegetmode.c deleted file mode 100644 index e839a9b25f..0000000000 --- a/sysdeps/sh/sh4/fpu/fegetmode.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Store current floating-point control modes. SH4 version. - Copyright (C) 2016-2017 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 - . */ - -#include -#include - -int -fegetmode (femode_t *modep) -{ - _FPU_GETCW (*modep); - return 0; -} diff --git a/sysdeps/sh/sh4/fpu/fegetround.c b/sysdeps/sh/sh4/fpu/fegetround.c deleted file mode 100644 index 4c97d23e12..0000000000 --- a/sysdeps/sh/sh4/fpu/fegetround.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Return current rounding direction. - Copyright (C) 1998-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1998. - - 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 - . */ - -#include -#include - -int -__fegetround (void) -{ - fpu_control_t cw; - - /* Get control word. */ - _FPU_GETCW (cw); - - return cw & 0x1; -} -libm_hidden_def (__fegetround) -weak_alias (__fegetround, fegetround) -libm_hidden_weak (fegetround) diff --git a/sysdeps/sh/sh4/fpu/feholdexcpt.c b/sysdeps/sh/sh4/fpu/feholdexcpt.c deleted file mode 100644 index b905e594cd..0000000000 --- a/sysdeps/sh/sh4/fpu/feholdexcpt.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Store current floating-point environment and clear exceptions. - Copyright (C) 1997-2017 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 - . */ - -#include -#include - -int -__feholdexcept (fenv_t *envp) -{ - fpu_control_t temp; - - /* Store the environment. */ - _FPU_GETCW (temp); - envp->__fpscr = temp; - - /* Clear the status flags. */ - temp &= ~FE_ALL_EXCEPT; - - /* Now set all exceptions to non-stop. */ - temp &= ~(FE_ALL_EXCEPT << 5); - - _FPU_SETCW (temp); - - /* Success. */ - return 0; -} -libm_hidden_def (__feholdexcept) -weak_alias (__feholdexcept, feholdexcept) -libm_hidden_weak (feholdexcept) diff --git a/sysdeps/sh/sh4/fpu/fesetenv.c b/sysdeps/sh/sh4/fpu/fesetenv.c deleted file mode 100644 index 8628c508e5..0000000000 --- a/sysdeps/sh/sh4/fpu/fesetenv.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Install given floating-point environment. - Copyright (C) 1997-2017 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 - . */ - -#include -#include - -int -__fesetenv (const fenv_t *envp) -{ - if (envp == FE_DFL_ENV) - _FPU_SETCW (_FPU_DEFAULT); - else - { - fpu_control_t temp = envp->__fpscr; - _FPU_SETCW (temp); - } - return 0; -} -libm_hidden_def (__fesetenv) -weak_alias (__fesetenv, fesetenv) -libm_hidden_weak (fesetenv) diff --git a/sysdeps/sh/sh4/fpu/fesetexcept.c b/sysdeps/sh/sh4/fpu/fesetexcept.c deleted file mode 100644 index ecfad75fff..0000000000 --- a/sysdeps/sh/sh4/fpu/fesetexcept.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Set given exception flags. SH4 version. - Copyright (C) 2016-2017 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 - . */ - -#include -#include - -int -fesetexcept (int excepts) -{ - fpu_control_t temp; - - _FPU_GETCW (temp); - temp |= (excepts & FE_ALL_EXCEPT); - _FPU_SETCW (temp); - - return 0; -} diff --git a/sysdeps/sh/sh4/fpu/fesetmode.c b/sysdeps/sh/sh4/fpu/fesetmode.c deleted file mode 100644 index d2b9e05128..0000000000 --- a/sysdeps/sh/sh4/fpu/fesetmode.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Install given floating-point control modes. SH4 version. - Copyright (C) 2016-2017 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 - . */ - -#include -#include - -#define FPU_STATUS 0x3f07c - -int -fesetmode (const femode_t *modep) -{ - fpu_control_t fpscr; - - _FPU_GETCW (fpscr); - fpscr &= FPU_STATUS; - if (modep == FE_DFL_MODE) - fpscr |= _FPU_DEFAULT; - else - fpscr |= *modep & ~FPU_STATUS; - _FPU_SETCW (fpscr); - - return 0; -} diff --git a/sysdeps/sh/sh4/fpu/fesetround.c b/sysdeps/sh/sh4/fpu/fesetround.c deleted file mode 100644 index 20acb7c5e9..0000000000 --- a/sysdeps/sh/sh4/fpu/fesetround.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Set current rounding direction. - Copyright (C) 1998-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1998. - - 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 - . */ - -#include -#include - -int -__fesetround (int round) -{ - fpu_control_t cw; - - if ((round & ~0x1) != 0) - /* ROUND is no valid rounding mode. */ - return 1; - - /* Get current state. */ - _FPU_GETCW (cw); - - /* Set rounding bits. */ - cw &= ~0x1; - cw |= round; - /* Set new state. */ - _FPU_SETCW (cw); - - return 0; -} -libm_hidden_def (__fesetround) -weak_alias (__fesetround, fesetround) -libm_hidden_weak (fesetround) diff --git a/sysdeps/sh/sh4/fpu/feupdateenv.c b/sysdeps/sh/sh4/fpu/feupdateenv.c deleted file mode 100644 index 3b886a2235..0000000000 --- a/sysdeps/sh/sh4/fpu/feupdateenv.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Install given floating-point environment and raise exceptions. - Copyright (C) 2012-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Nobuhiro Iwamatsu , 2012. - - 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 - . */ - -#include -#include - -int -__feupdateenv (const fenv_t *envp) -{ - fpu_control_t temp; - - _FPU_GETCW (temp); - temp = (temp & FE_ALL_EXCEPT); - - /* Raise the saved exception. Incidently for us the implementation - defined format of the values in objects of type fexcept_t is the - same as the ones specified using the FE_* constants. */ - __fesetenv (envp); - __feraiseexcept ((int) temp); - - return 0; -} -libm_hidden_def (__feupdateenv) -weak_alias (__feupdateenv, feupdateenv) -libm_hidden_weak (feupdateenv) diff --git a/sysdeps/sh/sh4/fpu/fgetexcptflg.c b/sysdeps/sh/sh4/fpu/fgetexcptflg.c deleted file mode 100644 index 02fc3948bc..0000000000 --- a/sysdeps/sh/sh4/fpu/fgetexcptflg.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Store current representation for exceptions. - Copyright (C) 2013-2017 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 - . */ - -#include -#include - -int -fegetexceptflag (fexcept_t *flagp, int excepts) -{ - fpu_control_t temp; - - /* Get the current exceptions. */ - _FPU_GETCW (temp); - - /* We only save the relevant bits here. In particular, care has to be - taken with the CAUSE bits, as an inadvertent restore later on could - generate unexpected exceptions. */ - - *flagp = temp & excepts & FE_ALL_EXCEPT; - - /* Success. */ - return 0; -} diff --git a/sysdeps/sh/sh4/fpu/fraiseexcpt.c b/sysdeps/sh/sh4/fpu/fraiseexcpt.c deleted file mode 100644 index 4bd0eb9ef5..0000000000 --- a/sysdeps/sh/sh4/fpu/fraiseexcpt.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Raise given exceptions. - Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Nobuhiro Iwamatsu , 2012. - - 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 - . */ - -#include -#include -#include -#include - -int -__feraiseexcept (int excepts) -{ - if (excepts == 0) - return 0; - - /* Raise exceptions represented by EXPECTS. */ - - if (excepts & FE_INEXACT) - { - double d = 1.0, x = 3.0; - __asm__ __volatile__ ("fdiv %1, %0" : "+d" (d) : "d" (x)); - } - - if (excepts & FE_UNDERFLOW) - { - long double d = LDBL_MIN, x = 10; - __asm__ __volatile__ ("fdiv %1, %0" : "+d" (d) : "d" (x)); - } - - if (excepts & FE_OVERFLOW) - { - long double d = LDBL_MAX; - __asm__ __volatile__ ("fmul %0, %0" : "+d" (d) : "d" (d)); - } - - if (excepts & FE_DIVBYZERO) - { - double d = 1.0, x = 0.0; - __asm__ __volatile__ ("fdiv %1, %0" : "+d" (d) : "d" (x)); - } - - if (excepts & FE_INVALID) - { - double d = HUGE_VAL, x = 0.0; - __asm__ __volatile__ ("fmul %1, %0" : "+d" (d) : "d" (x)); - } - - { - /* Restore flag fields. */ - fpu_control_t cw; - _FPU_GETCW (cw); - cw |= (excepts & FE_ALL_EXCEPT); - _FPU_SETCW (cw); - } - - return 0; -} -libm_hidden_def (__feraiseexcept) -weak_alias (__feraiseexcept, feraiseexcept) -libm_hidden_weak (feraiseexcept) diff --git a/sysdeps/sh/sh4/fpu/fsetexcptflg.c b/sysdeps/sh/sh4/fpu/fsetexcptflg.c deleted file mode 100644 index 3a6ea33c26..0000000000 --- a/sysdeps/sh/sh4/fpu/fsetexcptflg.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Set floating-point environment exception handling. - Copyright (C) 1997-2017 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 - . */ - -#include -#include -#include - -int -fesetexceptflag (const fexcept_t *flagp, int excepts) -{ - fpu_control_t temp; - - /* Get the current environment. */ - _FPU_GETCW (temp); - - /* Set the desired exception mask. */ - temp &= ~(excepts & FE_ALL_EXCEPT); - temp |= (*flagp & excepts & FE_ALL_EXCEPT); - - /* Save state back to the FPU. */ - _FPU_SETCW (temp); - - return 0; -} diff --git a/sysdeps/sh/sh4/fpu/ftestexcept.c b/sysdeps/sh/sh4/fpu/ftestexcept.c deleted file mode 100644 index fa2c011825..0000000000 --- a/sysdeps/sh/sh4/fpu/ftestexcept.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Test exception in current environment. - Copyright (C) 1997-2017 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 - . */ - -#include -#include - -int -fetestexcept (int excepts) -{ - fpu_control_t temp; - - /* Get current exceptions. */ - _FPU_GETCW (temp); - - return temp & excepts & FE_ALL_EXCEPT; -} -libm_hidden_def (fetestexcept) diff --git a/sysdeps/sh/sh4/setjmp.S b/sysdeps/sh/sh4/setjmp.S deleted file mode 100644 index a09ffab627..0000000000 --- a/sysdeps/sh/sh4/setjmp.S +++ /dev/null @@ -1,90 +0,0 @@ -/* setjmp for SH4. - Copyright (C) 1999-2017 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 - . */ - -#include -#include - -ENTRY (__sigsetjmp) - /* Save registers */ -#ifdef __SH_FPU_ANY__ - add #JB_SIZE, r4 - fmov.s fr15, @-r4 - fmov.s fr14, @-r4 - fmov.s fr13, @-r4 - fmov.s fr12, @-r4 - sts.l fpscr, @-r4 -#else - add #(JB_SIZE - 4 * 5), r4 -#endif /* __SH_FPU_ANY__ */ - stc.l gbr, @-r4 -#ifdef PTR_MANGLE - sts pr, r2 - PTR_MANGLE (r2, r1) - mov.l r2, @-r4 - mov r15, r2 - PTR_MANGLE2 (r2, r1) - mov.l r2, @-r4 - mov r14, r2 - PTR_MANGLE2 (r2, r1) - mov.l r2, @-r4 - mov #0, r1 -#else - sts.l pr, @-r4 - mov.l r15, @-r4 - mov.l r14, @-r4 -#endif - mov.l r13, @-r4 - mov.l r12, @-r4 - mov.l r11, @-r4 - mov.l r10, @-r4 - mov.l r9, @-r4 - mov.l r8, @-r4 - -#if IS_IN (rtld) - /* In ld.so we never save the signal mask. */ - rts - mov #0, r0 -#else - /* Make a tail call to __sigjmp_save; it takes the same args. */ -# ifdef SHARED - mov.l 1f, r1 - mova 1f, r0 - bra 2f - add r1, r0 - .align 2 -1: - .long _GLOBAL_OFFSET_TABLE_ -2: - mov.l .L1, r1 - mov.l @(r0,r1), r1 - jmp @r1 - nop - .align 2 -.L1: - .long C_SYMBOL_NAME(__sigjmp_save@GOT) -# else - mov.l .L1, r1 - jmp @r1 - nop - .align 2 -.L1: - .long C_SYMBOL_NAME(__sigjmp_save) -# endif -#endif -END (__sigsetjmp) -hidden_def (__sigsetjmp) diff --git a/sysdeps/sh/soft-fp/sfp-machine.h b/sysdeps/sh/soft-fp/sfp-machine.h deleted file mode 100644 index 81474e8a7c..0000000000 --- a/sysdeps/sh/soft-fp/sfp-machine.h +++ /dev/null @@ -1,57 +0,0 @@ -#define _FP_W_TYPE_SIZE 32 -#define _FP_W_TYPE unsigned long -#define _FP_WS_TYPE signed long -#define _FP_I_TYPE long - -#define _FP_MUL_MEAT_S(R,X,Y) \ - _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_D(R,X,Y) \ - _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_Q(R,X,Y) \ - _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) - -#define _FP_MUL_MEAT_DW_S(R,X,Y) \ - _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_DW_D(R,X,Y) \ - _FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_DW_Q(R,X,Y) \ - _FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) - -#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y) -#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) -#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) - -#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) -#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1 -#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1 -#define _FP_NANSIGN_S 0 -#define _FP_NANSIGN_D 0 -#define _FP_NANSIGN_Q 0 - -#define _FP_KEEPNANFRACP 1 -#define _FP_QNANNEGATEDP 0 - -/* Someone please check this. */ -#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ - do { \ - if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \ - && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \ - { \ - R##_s = Y##_s; \ - _FP_FRAC_COPY_##wc(R,Y); \ - } \ - else \ - { \ - R##_s = X##_s; \ - _FP_FRAC_COPY_##wc(R,X); \ - } \ - R##_c = FP_CLS_NAN; \ - } while (0) - -#define FP_EX_INVALID (1 << 6) -#define FP_EX_DIVZERO (1 << 5) -#define FP_EX_OVERFLOW (1 << 4) -#define FP_EX_UNDERFLOW (1 << 3) -#define FP_EX_INEXACT (1 << 2) - -#define _FP_TININESS_AFTER_ROUNDING 1 diff --git a/sysdeps/sh/sotruss-lib.c b/sysdeps/sh/sotruss-lib.c deleted file mode 100644 index 152e502113..0000000000 --- a/sysdeps/sh/sotruss-lib.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Override generic sotruss-lib.c to define actual functions for SH. - Copyright (C) 2013-2017 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 - . */ - -#define HAVE_ARCH_PLTENTER -#define HAVE_ARCH_PLTEXIT - -#include - -ElfW(Addr) -la_sh_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)), - unsigned int ndx __attribute__ ((unused)), - uintptr_t *refcook, uintptr_t *defcook, - La_sh_regs *regs, unsigned int *flags, - const char *symname, long int *framesizep) -{ - print_enter (refcook, defcook, symname, - regs->lr_r4, regs->lr_r5, regs->lr_r6, *flags); - - /* No need to copy anything, we will not need the parameters in any case. */ - *framesizep = 0; - - return sym->st_value; -} - -unsigned int -la_sh_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, - uintptr_t *defcook, - const struct La_sh_regs *inregs, - struct La_sh_retval *outregs, const char *symname) -{ - print_exit (refcook, defcook, symname, outregs->lrv_r0); - - return 0; -} diff --git a/sysdeps/sh/stackguard-macros.h b/sysdeps/sh/stackguard-macros.h deleted file mode 100644 index 55a5771b62..0000000000 --- a/sysdeps/sh/stackguard-macros.h +++ /dev/null @@ -1,6 +0,0 @@ -#include - -extern uintptr_t __stack_chk_guard; -#define STACK_CHK_GUARD __stack_chk_guard - -#define POINTER_CHK_GUARD THREAD_GET_POINTER_GUARD() diff --git a/sysdeps/sh/stackinfo.h b/sysdeps/sh/stackinfo.h deleted file mode 100644 index cdbb27113d..0000000000 --- a/sysdeps/sh/stackinfo.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2001-2017 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 - . */ - -/* This file contains a bit of information about the stack allocation - of the processor. */ - -#ifndef _STACKINFO_H -#define _STACKINFO_H 1 - -#include - -/* On SH the stack grows down. */ -#define _STACK_GROWS_DOWN 1 - -/* Default to an executable stack. PF_X can be overridden if PT_GNU_STACK is - * present, but it is presumed absent. */ -#define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X) - -#endif /* stackinfo.h */ diff --git a/sysdeps/sh/start.S b/sysdeps/sh/start.S deleted file mode 100644 index 0e6b90df9b..0000000000 --- a/sysdeps/sh/start.S +++ /dev/null @@ -1,111 +0,0 @@ -/* Startup code for SH & ELF. - Copyright (C) 1999-2017 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 - . */ - -/* This is the canonical entry point, usually the first thing in the text - segment. - - Note that the code in the .init section has already been run. - This includes _init and _libc_init - - - At this entry point, most registers' values are unspecified, except: - - r4 Contains a function pointer to be registered with `atexit'. - This is how the dynamic linker arranges to have DT_FINI - functions called for shared libraries that have been loaded - before this code runs. - - sp The stack contains the arguments and environment: - 0(sp) argc - 4(sp) argv[0] - ... - (4*argc)(sp) NULL - (4*(argc+1))(sp) envp[0] - ... - NULL -*/ - - .text - .globl _start - .type _start,@function -_start: - /* Clear the frame pointer since this is the outermost frame. */ - mov #0, r14 - - /* Pop argc off the stack and save a pointer to argv */ - mov.l @r15+,r5 - mov r15, r6 - - /* Push the last arguments to main() onto the stack */ - mov.l r4,@-r15 - mov.l L_fini,r0 - mov.l r0,@-r15 - - /* Set up the other arguments for main() that go in registers */ - mov.l L_main,r4 - mov.l L_init,r7 - - /* __libc_start_main (main, argc, argv, init, fini, rtld_fini) */ - - /* Let the libc call main and exit with its return code. */ - mov.l L_libc_start_main,r1 - jsr @r1 - nop - /* should never get here....*/ - mov.l L_abort,r1 - jsr @r1 - nop - .align 2 -L_main: - .long main -L_init: - .long __libc_csu_init -L_fini: - .long __libc_csu_fini -L_libc_start_main: - .long __libc_start_main -L_abort: - .long abort -/* Define a symbol for the first piece of initialized data. */ - .data - .globl __data_start -__data_start: - .long 0 - .weak data_start - data_start = __data_start - .global __fpscr_values -__fpscr_values: - .long 0 - .long 0x80000 diff --git a/sysdeps/sh/strlen.S b/sysdeps/sh/strlen.S deleted file mode 100644 index 8e0d53c471..0000000000 --- a/sysdeps/sh/strlen.S +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright (C) 1999-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Kazumoto Kojima - - 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 - . */ - -#include - -/* size_t strlen (const char *s) */ - -ENTRY(strlen) - mov r4, r0 - and #3, r0 - tst r0, r0 - bt/s 1f - mov #0, r2 - - add #-1, r0 - shll2 r0 - shll r0 - braf r0 - nop - - mov.b @r4+, r1 - tst r1, r1 - bt 8f - add #1, r2 - - mov.b @r4+, r1 - tst r1, r1 - bt 8f - add #1, r2 - - mov.b @r4+, r1 - tst r1, r1 - bt 8f - add #1, r2 - -1: - mov #0, r3 -2: - mov.l @r4+, r1 - cmp/str r3, r1 - bf/s 2b - add #4, r2 - - add #-4, r2 -#ifdef __BIG_ENDIAN__ - swap.b r1, r1 - swap.w r1, r1 - swap.b r1, r1 -#endif - extu.b r1, r0 - tst r0, r0 - bt/s 8f - shlr8 r1 - add #1, r2 - extu.b r1, r0 - tst r0, r0 - bt/s 8f - shlr8 r1 - add #1, r2 - extu.b r1, r0 - tst r0, r0 - bt 8f - add #1, r2 -8: - rts - mov r2, r0 -END(strlen) -libc_hidden_builtin_def (strlen) diff --git a/sysdeps/sh/sysdep.h b/sysdeps/sh/sysdep.h deleted file mode 100644 index 939c93144e..0000000000 --- a/sysdeps/sh/sysdep.h +++ /dev/null @@ -1,75 +0,0 @@ -/* Assembler macros for SH. - Copyright (C) 1999-2017 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 - . */ - -#include - -#ifdef __ASSEMBLER__ - -/* Syntactic details of assembler. */ - -#define ALIGNARG(log2) log2 -#define ASM_SIZE_DIRECTIVE(name) .size name,.-name - -#ifdef SHARED -#define PLTJMP(_x) _x##@PLT -#else -#define PLTJMP(_x) _x -#endif - - -/* Define an entry point visible from C. */ -#define ENTRY(name) \ - .globl C_SYMBOL_NAME(name); \ - .type C_SYMBOL_NAME(name),@function; \ - .align ALIGNARG(5); \ - C_LABEL(name) \ - cfi_startproc; \ - CALL_MCOUNT - -#undef END -#define END(name) \ - cfi_endproc; \ - ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(name)) - -/* If compiled for profiling, call `mcount' at the start of each function. */ -#ifdef PROF -#define CALL_MCOUNT \ - mov.l 1f,r1; \ - sts.l pr,@-r15; \ - cfi_adjust_cfa_offset (4); \ - cfi_rel_offset (pr, 0); \ - mova 2f,r0; \ - jmp @r1; \ - lds r0,pr; \ - .align 2; \ -1: .long mcount; \ -2: lds.l @r15+,pr; \ - cfi_adjust_cfa_offset (-4); \ - cfi_restore (pr) - -#else -#define CALL_MCOUNT /* Do nothing. */ -#endif - -/* Since C identifiers are not normally prefixed with an underscore - on this system, the asm identifier `syscall_error' intrudes on the - C name space. Make sure we use an innocuous name. */ -#define syscall_error __syscall_error -#define mcount _mcount - -#endif /* __ASSEMBLER__ */ diff --git a/sysdeps/sh/tininess.h b/sysdeps/sh/tininess.h deleted file mode 100644 index 1db37790f8..0000000000 --- a/sysdeps/sh/tininess.h +++ /dev/null @@ -1 +0,0 @@ -#define TININESS_AFTER_ROUNDING 1 diff --git a/sysdeps/sh/tls-macros.h b/sysdeps/sh/tls-macros.h deleted file mode 100644 index aa56b0a01f..0000000000 --- a/sysdeps/sh/tls-macros.h +++ /dev/null @@ -1,143 +0,0 @@ -#define TLS_LE(x) \ - ({ int *__l; void *__tp; \ - asm ("stc gbr,%1\n\t" \ - "mov.l 1f,%0\n\t" \ - "bra 2f\n\t" \ - " add %1,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tpoff\n\t" \ - "2:" \ - : "=r" (__l), "=r" (__tp)); \ - __l; }) - -#ifdef PIC -# define TLS_IE(x) \ - ({ int *__l; void *__tp; \ - register void *__gp __asm__("r12"); \ - asm ("mov.l 1f,r0\n\t" \ - "stc gbr,%1\n\t" \ - "mov.l @(r0,r12),%0\n\t" \ - "bra 2f\n\t" \ - " add %1,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@gottpoff\n\t" \ - "2:" \ - : "=r" (__l), "=r" (__tp) : "r" (__gp) : "r0"); \ - __l; }) -#else -# define TLS_IE(x) \ - ({ int *__l; void *__tp; \ - asm ("mov.l r12,@-r15\n\t" \ - "mova 0f,r0\n\t" \ - "mov.l 0f,r12\n\t" \ - "add r0,r12\n\t" \ - "mov.l 1f,r0\n\t" \ - "stc gbr,%1\n\t" \ - "mov.l @(r0,r12),%0\n\t" \ - "bra 2f\n\t" \ - " add %1,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@gottpoff\n\t" \ - "0: .long _GLOBAL_OFFSET_TABLE_\n\t" \ - "2: mov.l @r15+,r12" \ - : "=r" (__l), "=r" (__tp) : : "r0"); \ - __l; }) -#endif - -#ifdef PIC -# define TLS_LD(x) \ - ({ int *__l; \ - register void *__gp __asm__("r12"); \ - asm ("mov.l 1f,r4\n\t" \ - "mova 2f,r0\n\t" \ - "mov.l 2f,r1\n\t" \ - "add r0,r1\n\t" \ - "jsr @r1\n\t" \ - " add r12,r4\n\t" \ - "bra 4f\n\t" \ - " nop\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tlsldm\n\t" \ - "2: .long __tls_get_addr@plt\n\t" \ - "4: mov.l 3f,%0\n\t" \ - "bra 5f\n\t" \ - " add r0,%0\n\t" \ - ".align 2\n\t" \ - "3: .long " #x "@dtpoff\n\t" \ - "5:" \ - : "=r" (__l) : "r" (__gp) : "r0", "r1", "r2", "r3", "r4", "r5", \ - "r6", "r7", "pr", "t"); \ - __l; }) -#else -# define TLS_LD(x) \ - ({ int *__l; \ - asm ("mov.l r12,@-r15\n\t" \ - "mova 0f,r0\n\t" \ - "mov.l 0f,r12\n\t" \ - "add r0,r12\n\t" \ - "mov.l 1f,r4\n\t" \ - "mova 2f,r0\n\t" \ - "mov.l 2f,r1\n\t" \ - "add r0,r1\n\t" \ - "jsr @r1\n\t" \ - " add r12,r4\n\t" \ - "bra 4f\n\t" \ - " nop\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tlsldm\n\t" \ - "2: .long __tls_get_addr@plt\n\t" \ - "0: .long _GLOBAL_OFFSET_TABLE_\n\t" \ - "4: mov.l 3f,%0\n\t" \ - "bra 5f\n\t" \ - " add r0,%0\n\t" \ - ".align 2\n\t" \ - "3: .long " #x "@dtpoff\n\t" \ - "5: mov.l @r15+,r12" \ - : "=r" (__l) : : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ - "pr", "t"); \ - __l; }) -#endif - -#ifdef PIC -# define TLS_GD(x) \ - ({ int *__l; \ - register void *__gp __asm__("r12"); \ - asm ("mov.l 1f,r4\n\t" \ - "mova 2f,r0\n\t" \ - "mov.l 2f,r1\n\t" \ - "add r0,r1\n\t" \ - "jsr @r1\n\t" \ - " add r12,r4\n\t" \ - "bra 3f\n\t" \ - " mov r0,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tlsgd\n\t" \ - "2: .long __tls_get_addr@plt\n\t" \ - "3:" \ - : "=r" (__l) : "r" (__gp) : "r0", "r1", "r2", "r3", "r4", "r5", \ - "r6", "r7", "pr", "t"); \ - __l; }) -#else -# define TLS_GD(x) \ - ({ int *__l; \ - asm ("mov.l r12,@-r15\n\t" \ - "mova 0f,r0\n\t" \ - "mov.l 0f,r12\n\t" \ - "add r0,r12\n\t" \ - "mov.l 1f,r4\n\t" \ - "mova 2f,r0\n\t" \ - "mov.l 2f,r1\n\t" \ - "add r0,r1\n\t" \ - "jsr @r1\n\t" \ - " add r12,r4\n\t" \ - "bra 3f\n\t" \ - " mov r0,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tlsgd\n\t" \ - "2: .long __tls_get_addr@plt\n\t" \ - "0: .long _GLOBAL_OFFSET_TABLE_\n\t" \ - "3: mov.l @r15+,r12" \ - : "=r" (__l) : : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ - "pr", "t"); \ - __l; }) -#endif diff --git a/sysdeps/sh/tst-audit.h b/sysdeps/sh/tst-audit.h deleted file mode 100644 index a7250a9817..0000000000 --- a/sysdeps/sh/tst-audit.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Definitions for testing PLT entry/exit auditing. SH version. - - Copyright (C) 2012-2017 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 - . */ - -#define pltenter la_sh_gnu_pltenter -#define pltexit la_sh_gnu_pltexit -#define La_regs La_sh_regs -#define La_retval La_sh_retval -#define int_retval lrv_r0 -- cgit v1.2.3