diff options
Diffstat (limited to 'sysdeps/nios2')
52 files changed, 0 insertions, 2706 deletions
diff --git a/sysdeps/nios2/Implies b/sysdeps/nios2/Implies deleted file mode 100644 index 387a0ca052..0000000000 --- a/sysdeps/nios2/Implies +++ /dev/null @@ -1,3 +0,0 @@ -wordsize-32 -ieee754/dbl-64 -ieee754/flt-32 diff --git a/sysdeps/nios2/Makefile b/sysdeps/nios2/Makefile deleted file mode 100644 index 75cab5e5b8..0000000000 --- a/sysdeps/nios2/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 1993-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 -# <http://www.gnu.org/licenses/>. - -pic-ccflag = -fpic - -# We don't support long doubles as a distinct type. We don't need to set -# this variable; it's here mostly for documentational purposes. -long-double-fcts = no - -ifeq ($(subdir),soft-fp) -sysdep_routines += $(filter-out sqrtsf2,$(gcc-single-routines)) \ - $(filter-out sqrtdf2,$(gcc-double-routines)) -endif - -ifeq ($(subdir),csu) -gen-as-const-headers += tcb-offsets.sym -endif - -ifeq ($(subdir),debug) -CFLAGS-backtrace.c += -funwind-tables -endif diff --git a/sysdeps/nios2/Subdirs b/sysdeps/nios2/Subdirs deleted file mode 100644 index 87eadf3024..0000000000 --- a/sysdeps/nios2/Subdirs +++ /dev/null @@ -1 +0,0 @@ -soft-fp diff --git a/sysdeps/nios2/Versions b/sysdeps/nios2/Versions deleted file mode 100644 index 48a23519d9..0000000000 --- a/sysdeps/nios2/Versions +++ /dev/null @@ -1,12 +0,0 @@ -libc { - GLIBC_2.21 { - __adddf3; __addsf3; __divdf3; __divsf3; __eqdf2; __eqsf2; __extendsfdf2; - __fixdfdi; __fixdfsi; __fixsfdi; __fixsfsi; - __fixunsdfdi; __fixunsdfsi; __fixunssfdi; __fixunssfsi; - __floatdidf; __floatdisf; __floatsidf; __floatsisf; - __floatundidf; __floatundisf; __floatunsidf; __floatunsisf; - __gedf2; __gesf2; __gtdf2; __gtsf2; __ledf2; __lesf2; __ltdf2; __ltsf2; - __muldf3; __mulsf3; __nedf2; __nesf2; __negdf2; __negsf2; - __subdf3; __subsf3; __truncdfsf2; __unorddf2; __unordsf2; - } -} diff --git a/sysdeps/nios2/__longjmp.S b/sysdeps/nios2/__longjmp.S deleted file mode 100644 index 0b84ac63d7..0000000000 --- a/sysdeps/nios2/__longjmp.S +++ /dev/null @@ -1,80 +0,0 @@ -/* longjmp for Nios II. - Copyright (C) 2015-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 - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include <jmpbuf-offsets.h> - -/* __longjmp(jmpbuf, val) */ - -ENTRY (__longjmp) - mov r2, r5 - bne r5, zero, 1f - movi r2, 1 -1: -#ifdef PTR_DEMANGLE - PTR_MANGLE_GUARD (r3) - ldw r5, (JB_RA*4)(r4) - ldw r6, (JB_SP*4)(r4) - PTR_DEMANGLE (r5, r5, r3) - PTR_DEMANGLE (r6, r6, r3) -#endif - - cfi_def_cfa (r4, 0) - cfi_offset (r16, JB_R16*4) - cfi_offset (r17, JB_R17*4) - cfi_offset (r18, JB_R18*4) - cfi_offset (r19, JB_R19*4) - cfi_offset (r20, JB_R20*4) - cfi_offset (r21, JB_R21*4) - cfi_offset (r22, JB_R22*4) - cfi_offset (fp, JB_FP*4) -#ifdef PTR_DEMANGLE - cfi_register (ra, r5) - cfi_register (sp, r7) -#else - cfi_offset (ra, JB_RA*4) - cfi_offset (sp, JB_SP*4) -#endif - ldw r16, (JB_R16*4)(r4) - ldw r17, (JB_R17*4)(r4) - ldw r18, (JB_R18*4)(r4) - ldw r19, (JB_R19*4)(r4) - ldw r20, (JB_R20*4)(r4) - ldw r21, (JB_R21*4)(r4) - ldw r22, (JB_R22*4)(r4) - ldw fp, (JB_FP*4)(r4) -#ifdef PTR_DEMANGLE - mov ra, r5 - mov sp, r6 -#else - ldw ra, (JB_RA*4)(r4) - ldw sp, (JB_SP*4)(r4) -#endif - cfi_same_value (r16) - cfi_same_value (r17) - cfi_same_value (r18) - cfi_same_value (r19) - cfi_same_value (r20) - cfi_same_value (r21) - cfi_same_value (r22) - cfi_same_value (fp) - cfi_same_value (ra) - cfi_same_value (sp) - - ret -END (__longjmp) diff --git a/sysdeps/nios2/abort-instr.h b/sysdeps/nios2/abort-instr.h deleted file mode 100644 index 17502e4a70..0000000000 --- a/sysdeps/nios2/abort-instr.h +++ /dev/null @@ -1,2 +0,0 @@ -/* An instruction which should crash any program is an unused trap. */ -#define ABORT_INSTRUCTION asm ("trap 31") diff --git a/sysdeps/nios2/backtrace.c b/sysdeps/nios2/backtrace.c deleted file mode 100644 index 27ce597b39..0000000000 --- a/sysdeps/nios2/backtrace.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/x86_64/backtrace.c> diff --git a/sysdeps/nios2/bits/endian.h b/sysdeps/nios2/bits/endian.h deleted file mode 100644 index 164f9e4d78..0000000000 --- a/sysdeps/nios2/bits/endian.h +++ /dev/null @@ -1,12 +0,0 @@ -/* The Nios II architecture has selectable endianness. */ - -#ifndef _ENDIAN_H -# error "Never use <bits/endian.h> directly; include <endian.h> instead." -#endif - -#ifdef __nios2_big_endian__ -# define __BYTE_ORDER __BIG_ENDIAN -#endif -#ifdef __nios2_little_endian__ -# define __BYTE_ORDER __LITTLE_ENDIAN -#endif diff --git a/sysdeps/nios2/bits/fenv.h b/sysdeps/nios2/bits/fenv.h deleted file mode 100644 index 7e74275208..0000000000 --- a/sysdeps/nios2/bits/fenv.h +++ /dev/null @@ -1,52 +0,0 @@ -/* 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 - <http://www.gnu.org/licenses/>. */ - -#ifndef _FENV_H -# error "Never use <bits/fenv.h> directly; include <fenv.h> instead." -#endif - -/* The Altera specified Nios II hardware FPU does not support exceptions, - nor does the software floating-point support. */ -#define FE_ALL_EXCEPT 0 - -/* Nios II supports only round-to-nearest. The software - floating-point support also acts this way. */ -enum - { - __FE_UNDEFINED = 0, - - FE_TONEAREST = -#define FE_TONEAREST 1 - FE_TONEAREST, - }; - -/* Type representing exception flags. */ -typedef unsigned int fexcept_t; - -/* Type representing floating-point environment. */ -typedef unsigned int 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/nios2/bits/link.h b/sysdeps/nios2/bits/link.h deleted file mode 100644 index 161efcbfe2..0000000000 --- a/sysdeps/nios2/bits/link.h +++ /dev/null @@ -1,54 +0,0 @@ -/* Machine-specific declarations for dynamic linker interface, Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#ifndef _LINK_H -# error "Never include <bits/link.h> directly; use <link.h> instead." -#endif - -/* Registers for entry into PLT on Nios II. */ -typedef struct La_nios2_regs -{ - uint32_t lr_reg[4]; /* r4 through r7 */ - uint32_t lr_ra; - uint32_t lr_sp; -} La_nios2_regs; - -/* Return values for calls from PLT on Nios II. */ -typedef struct La_nios2_retval -{ - uint32_t lrv_r2; - uint32_t lrv_r3; -} La_nios2_retval; - -__BEGIN_DECLS - -extern Elf32_Addr la_nios2_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx, - uintptr_t *__refcook, - uintptr_t *__defcook, - La_nios2_regs *__regs, - unsigned int *__flags, - const char *__symname, - long int *__framesizep); -extern unsigned int la_nios2_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx, - uintptr_t *__refcook, - uintptr_t *__defcook, - const La_nios2_regs *__inregs, - La_nios2_retval *__outregs, - const char *symname); - -__END_DECLS diff --git a/sysdeps/nios2/bits/setjmp.h b/sysdeps/nios2/bits/setjmp.h deleted file mode 100644 index a66e11533c..0000000000 --- a/sysdeps/nios2/bits/setjmp.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Define the machine-dependent type `jmp_buf'. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#ifndef _NIOS2_BITS_SETJMP_H -#define _NIOS2_BITS_SETJMP_H 1 - -#if !defined(_SETJMP_H) && !defined(_PTHREAD_H) -# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." -#endif - -/* Saves r16-r22 (callee-saved, including GOT pointer), fp (frame pointer), - ra (return address), and sp (stack pointer). */ -typedef int __jmp_buf[10]; - -#endif /* _NIOS2_BITS_SETJMP_H */ diff --git a/sysdeps/nios2/bsd-_setjmp.S b/sysdeps/nios2/bsd-_setjmp.S deleted file mode 100644 index 4e6a2da560..0000000000 --- a/sysdeps/nios2/bsd-_setjmp.S +++ /dev/null @@ -1 +0,0 @@ -/* _setjmp is in setjmp.S */ diff --git a/sysdeps/nios2/bsd-setjmp.S b/sysdeps/nios2/bsd-setjmp.S deleted file mode 100644 index 1da848d2f1..0000000000 --- a/sysdeps/nios2/bsd-setjmp.S +++ /dev/null @@ -1 +0,0 @@ -/* setjmp is in setjmp.S */ diff --git a/sysdeps/nios2/configure b/sysdeps/nios2/configure deleted file mode 100644 index 14c8a3a014..0000000000 --- a/sysdeps/nios2/configure +++ /dev/null @@ -1,162 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - # Local configure fragment for sysdeps/nios2. - -# Nios II big endian is not yet supported. - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5 -$as_echo_n "checking for big endian... " >&6; } -if ${libc_cv_nios2_be+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __nios2_big_endian__ - yes - #endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - libc_cv_nios2_be=yes -else - libc_cv_nios2_be=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_nios2_be" >&5 -$as_echo "$libc_cv_nios2_be" >&6; } -if test $libc_cv_nios2_be = yes; then - as_fn_error $? "Big endian not supported for Nios II" "$LINENO" 5 -fi diff --git a/sysdeps/nios2/configure.ac b/sysdeps/nios2/configure.ac deleted file mode 100644 index f05f43802b..0000000000 --- a/sysdeps/nios2/configure.ac +++ /dev/null @@ -1,13 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for sysdeps/nios2. - -# Nios II big endian is not yet supported. -AC_CACHE_CHECK([for big endian], - [libc_cv_nios2_be], - [AC_EGREP_CPP(yes,[#ifdef __nios2_big_endian__ - yes - #endif - ], libc_cv_nios2_be=yes, libc_cv_nios2_be=no)]) -if test $libc_cv_nios2_be = yes; then - AC_MSG_ERROR([Big endian not supported for Nios II]) -fi diff --git a/sysdeps/nios2/crti.S b/sysdeps/nios2/crti.S deleted file mode 100644 index d37c72187a..0000000000 --- a/sysdeps/nios2/crti.S +++ /dev/null @@ -1,96 +0,0 @@ -/* Special .init and .fini section support for Nios II. - 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. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -/* crti.S puts a function prologue at the beginning of the .init and - .fini sections and defines global symbols for those addresses, so - they can be called as functions. The symbols _init and _fini are - magic and cause the linker to emit DT_INIT and DT_FINI. */ - -#include <libc-symbols.h> - -#ifndef PREINIT_FUNCTION -# define PREINIT_FUNCTION __gmon_start__ -#endif - -#ifndef PREINIT_FUNCTION_WEAK -# define PREINIT_FUNCTION_WEAK 1 -#endif - -#if PREINIT_FUNCTION_WEAK - weak_extern (PREINIT_FUNCTION) -#else - .hidden PREINIT_FUNCTION -#endif - - .section .init,"ax",@progbits - .align 2 - .global _init - .type _init, @function -_init: - addi sp, sp, -8 - stw r22, 0(sp) - nextpc r22 - 1: - movhi r8, %hiadj(_gp_got - 1b) - addi r8, r8, %lo(_gp_got - 1b) - add r22, r22, r8 - stw ra, 4(sp) -#if PREINIT_FUNCTION_WEAK - movhi r2, %got_hiadj(PREINIT_FUNCTION) - addi r2, r2, %got_lo(PREINIT_FUNCTION) - add r2, r2, r22 - ldw r2, 0(r2) - beq r2, zero, .L5 -#endif - movhi r2, %call_hiadj(PREINIT_FUNCTION) - addi r2, r2, %call_lo(PREINIT_FUNCTION) - add r2, r2, r22 - ldw r2, 0(r2) - callr r2 -.L5: - - .section .fini,"ax",@progbits - .align 2 - .global _fini - .type _fini, @function -_fini: - addi sp, sp, -8 - stw r22, 0(sp) - nextpc r22 - 1: - movhi r8, %hiadj(_gp_got - 1b) - addi r8, r8, %lo(_gp_got - 1b) - stw ra, 4(sp) - add r22, r22, r8 diff --git a/sysdeps/nios2/crtn.S b/sysdeps/nios2/crtn.S deleted file mode 100644 index 3e7d2cceea..0000000000 --- a/sysdeps/nios2/crtn.S +++ /dev/null @@ -1,49 +0,0 @@ -/* Special .init and .fini section support for Nios II. - 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. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -/* crtn.S puts function epilogues in the .init and .fini sections - corresponding to the prologues in crti.S. */ - - .section .init,"ax",@progbits - ldw ra, 4(sp) - ldw r22, 0(sp) - addi sp, sp, 8 - ret - - .section .fini,"ax",@progbits - ldw ra, 4(sp) - ldw r22, 0(sp) - addi sp, sp, 8 - ret diff --git a/sysdeps/nios2/dl-init.c b/sysdeps/nios2/dl-init.c deleted file mode 100644 index 5d3d0edc68..0000000000 --- a/sysdeps/nios2/dl-init.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Nios II specific procedures for initializing code. - Copyright (C) 2008-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 - <http://www.gnu.org/licenses/>. */ - -#include <elf/dl-init.c> - -unsigned int -internal_function -_dl_nios2_get_gp_value (struct link_map *main_map) -{ - ElfW(Dyn) *dyn = main_map->l_ld; - for (dyn = main_map->l_ld; dyn->d_tag != DT_NULL; ++dyn) - if (dyn->d_tag == DT_NIOS2_GP) - return (unsigned int)(dyn->d_un.d_ptr); - return 0; -} diff --git a/sysdeps/nios2/dl-machine.h b/sysdeps/nios2/dl-machine.h deleted file mode 100644 index 8d2b18de23..0000000000 --- a/sysdeps/nios2/dl-machine.h +++ /dev/null @@ -1,336 +0,0 @@ -/* Machine-dependent ELF dynamic relocation inline functions. Nios II version. - 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 - <http://www.gnu.org/licenses/>. */ - -#ifndef dl_machine_h -#define dl_machine_h - -#define ELF_MACHINE_NAME "nios2" - -#include <string.h> -#include <link.h> -#include <dl-tls.h> - -/* Return nonzero iff ELF header is compatible with the running host. */ -static inline int -elf_machine_matches_host (const Elf32_Ehdr *ehdr) -{ - return ehdr->e_machine == EM_ALTERA_NIOS2; -} - - -/* Return the link-time address of _DYNAMIC. Conveniently, this is the - first element of the GOT. */ -static inline Elf32_Addr -elf_machine_dynamic (void) -{ - Elf32_Addr *dynamic; - int tmp; - asm ("nextpc\t%0\n\t" - "1: movhi\t%1, %%hiadj(_GLOBAL_OFFSET_TABLE_ - 1b)\n\t" - "addi\t%1, %1, %%lo(_GLOBAL_OFFSET_TABLE_ - 1b)\n\t" - "add\t%0, %0, %1\n" - : "=r" (dynamic), "=r" (tmp)); - return *dynamic; -} - - -/* Return the run-time load address of the shared object. */ -static inline Elf32_Addr -elf_machine_load_address (void) -{ - Elf32_Addr result; - int tmp; - asm ("nextpc\t%0\n\t" - "1: movhi\t%1, %%hiadj(1b)\n\t" - "addi\t%1, %1, %%lo(1b)\n\t" - "sub\t%0, %0, %1\n" - : "=r" (result), "=r" (tmp)); - return result; -} - -/* 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__ ((always_inline)) -elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) -{ - extern void _dl_runtime_resolve (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 r15 with - an offset into the .got section, load r14 with - _GLOBAL_OFFSET_TABLE_[1], and then jump to _GLOBAL_OFFSET_TABLE[2]. - */ - Elf32_Addr *got = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]); - got[1] = (Elf32_Addr) l; /* Identify this shared object. */ - - /* 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; -} - -/* 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\ -.type _start, %function\n\ -_start:\n\ - /* At start time, all the args are on the stack. */\n\ - mov r4, sp\n\ -\n\ - /* Start the calculation of the GOT pointer. */\n\ - nextpc r22\n\ -1: movhi r8, %hiadj(_gp_got - 1b)\n\ - addi r8, r8, %lo(_gp_got - 1b)\n\ -\n\ - /* Figure out where _dl_start will need to return to. */\n\ - movhi ra, %hiadj(2f - 1b)\n\ - addi ra, ra, %lo(2f - 1b)\n\ - add ra, ra, r22\n\ -\n\ - /* Finish the calculation of the GOT pointer. */\n\ - add r22, r22, r8\n\ -\n\ - br _dl_start\n\ -\n\ - /* Save the returned user entry point. */\n\ -2: mov r16, r2\n\ -\n\ - /* Initialize gp. */\n\ - ldw r4, %got(_rtld_local)(r22)\n\ - ldw r4, 0(r4)\n\ - ldw r8, %call(_dl_nios2_get_gp_value)(r22)\n\ - callr r8\n\ - mov gp, r2\n\ -\n\ - /* Find the number of arguments to skip. */\n\ - ldw r8, %got(_dl_skip_args)(r22)\n\ - ldw r8, 0(r8)\n\ -\n\ - /* Find the main_map from the GOT. */\n\ - ldw r4, %got(_rtld_local)(r22)\n\ - ldw r4, 0(r4)\n\ -\n\ - /* Find argc. */\n\ - ldw r5, 0(sp)\n\ - sub r5, r5, r8\n\ - stw r5, 0(sp)\n\ -\n\ - /* Find the first unskipped argument. */\n\ - slli r8, r8, 2\n\ - addi r6, sp, 4\n\ - add r9, r6, r8\n\ - mov r10, r6\n\ -\n\ - /* Shuffle argv down. */\n\ -3: ldw r11, 0(r9)\n\ - stw r11, 0(r10)\n\ - addi r9, r9, 4\n\ - addi r10, r10, 4\n\ - bne r11, zero, 3b\n\ -\n\ - /* Shuffle envp down. */\n\ - mov r7, r10\n\ -4: ldw r11, 0(r9)\n\ - stw r11, 0(r10)\n\ - addi r9, r9, 4\n\ - addi r10, r10, 4\n\ - bne r11, zero, 4b\n\ -\n\ - /* Shuffle auxv down. */\n\ -5: ldw r11, 4(r9)\n\ - stw r11, 4(r10)\n\ - ldw r11, 0(r9)\n\ - stw r11, 0(r10)\n\ - addi r9, r9, 8\n\ - addi r10, r10, 8\n\ - bne r11, zero, 5b\n\ -\n\ - /* Update _dl_argv. */\n\ - ldw r2, %got(_dl_argv)(r22)\n\ - stw r6, 0(r2)\n\ -\n\ - /* Call _dl_init through the PLT. */\n\ - ldw r8, %call(_dl_init)(r22)\n\ - callr r8\n\ -\n\ - /* Find the finalization function. */\n\ - ldw r4, %got(_dl_fini)(r22)\n\ -\n\ - /* Jump to the user's entry point. */\n\ - jmp r16\n\ -"); - -/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so - PLT entries 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_NIOS2_JUMP_SLOT \ - || (type) == R_NIOS2_TLS_DTPMOD \ - || (type) == R_NIOS2_TLS_DTPREL \ - || (type) == R_NIOS2_TLS_TPREL) * ELF_RTYPE_CLASS_PLT) \ - | (((type) == R_NIOS2_COPY) * ELF_RTYPE_CLASS_COPY) \ - | (((type) == R_NIOS2_GLOB_DAT) * ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA)) - -/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ -#define ELF_MACHINE_JMP_SLOT R_NIOS2_JUMP_SLOT - -/* The Nios II never uses Elf32_Rel relocations. */ -#define ELF_MACHINE_NO_REL 1 -#define ELF_MACHINE_NO_RELA 0 - -/* Fixup a PLT entry to bounce directly to the function at VALUE. */ - -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; -} - -/* Names of the architecture-specific auditing callback functions. */ -#define ARCH_LA_PLTENTER nios2_gnu_pltenter -#define ARCH_LA_PLTEXIT nios2_gnu_pltexit - -#endif /* dl_machine_h */ - -#ifdef RESOLVE_MAP - -/* Perform the relocation specified by RELOC and SYM (which is fully resolved). - LOADADDR is the load address of the object; INFO is an array indexed - by DT_* of the .dynamic section info. */ - -auto inline void __attribute__ ((always_inline)) -elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, - const ElfW(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); - - if (__glibc_unlikely (r_type == R_NIOS2_RELATIVE)) - *reloc_addr = map->l_addr + reloc->r_addend; - else if (__glibc_unlikely (r_type == R_NIOS2_NONE)) - return; - else - { - const Elf32_Sym *const refsym = sym; - struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type); - Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value; - - switch (r_type) - { - case R_NIOS2_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 void *) 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 ?: "<program name unknown>", - strtab + refsym->st_name); - } - memcpy (reloc_addr_arg, (void *) value, - MIN (sym->st_size, refsym->st_size)); - break; - case R_NIOS2_GLOB_DAT: - case R_NIOS2_JUMP_SLOT: -# ifdef RTLD_BOOTSTRAP - /* Fix weak undefined references. */ - if (sym != NULL && sym->st_value == 0) - *reloc_addr = 0; - else -# endif - *reloc_addr = value; - break; -#ifndef RTLD_BOOTSTRAP - case R_NIOS2_TLS_DTPMOD: - /* Get the information from the link map returned by the - resolv function. */ - if (sym_map != NULL) - *reloc_addr = sym_map->l_tls_modid; - break; - - case R_NIOS2_TLS_DTPREL: - *reloc_addr = reloc->r_addend + TLS_DTPREL_VALUE(sym); - break; - - case R_NIOS2_TLS_TPREL: - if (sym != NULL) - { - CHECK_STATIC_TLS (map, sym_map); - *reloc_addr = reloc->r_addend + TLS_TPREL_VALUE(sym_map, sym); - } - break; -#endif - case R_NIOS2_BFD_RELOC_32: - *reloc_addr = value + reloc->r_addend; - break; - - default: - _dl_reloc_bad_type (map, r_type, 0); - break; - } - } -} - -auto inline void __attribute__((always_inline)) -elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, - void *const reloc_addr_arg) -{ - Elf32_Addr *const reloc_addr = reloc_addr_arg; - *reloc_addr = l_addr + reloc->r_addend; -} - -auto inline void __attribute__((always_inline)) -elf_machine_lazy_rel (struct link_map *map, - ElfW(Addr) l_addr, const ElfW(Rela) *reloc, - int skip_ifunc) -{ - Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset); - if (ELF32_R_TYPE (reloc->r_info) == R_NIOS2_JUMP_SLOT) - *reloc_addr += l_addr; - else - _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1); -} - -#endif /* RESOLVE_MAP */ diff --git a/sysdeps/nios2/dl-sysdep.h b/sysdeps/nios2/dl-sysdep.h deleted file mode 100644 index 497bae30e8..0000000000 --- a/sysdeps/nios2/dl-sysdep.h +++ /dev/null @@ -1,25 +0,0 @@ -/* System-specific settings for dynamic linker code. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#include_next <dl-sysdep.h> - -/* _dl_argv cannot be attribute_relro, because _dl_start_user - might write into it after _dl_start returns. */ -#define DL_ARGV_NOT_RELRO 1 - -#define DL_EXTERN_PROTECTED_DATA diff --git a/sysdeps/nios2/dl-tls.h b/sysdeps/nios2/dl-tls.h deleted file mode 100644 index 87f6ba5f4f..0000000000 --- a/sysdeps/nios2/dl-tls.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Thread-local storage handling in the ELF dynamic linker. Nios II 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 - <http://www.gnu.org/licenses/>. */ - - -/* Type used for the representation of TLS information in the GOT. */ -typedef struct -{ - unsigned long int ti_module; - unsigned long int ti_offset; -} tls_index; - -/* The thread pointer points 0x7000 past the first static TLS block. */ -#define TLS_TP_OFFSET 0x7000 - -/* Dynamic thread vector pointers point 0x8000 past the start of each - TLS block. */ -#define TLS_DTV_OFFSET 0x8000 - -/* Compute the value for a GOTTPREL reloc. */ -#define TLS_TPREL_VALUE(sym_map, sym) \ - ((sym_map)->l_tls_offset + (sym)->st_value - TLS_TP_OFFSET) - -/* Compute the value for a DTPREL reloc. */ -#define TLS_DTPREL_VALUE(sym) \ - ((sym)->st_value - TLS_DTV_OFFSET) - -extern void *__tls_get_addr (tls_index *ti); - -# define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET) -# define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET) diff --git a/sysdeps/nios2/dl-trampoline.S b/sysdeps/nios2/dl-trampoline.S deleted file mode 100644 index 1dbf5c14eb..0000000000 --- a/sysdeps/nios2/dl-trampoline.S +++ /dev/null @@ -1,79 +0,0 @@ -/* PLT trampolines. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include <libc-symbols.h> - - .text - .globl _dl_runtime_resolve - cfi_startproc -_dl_runtime_resolve: -/* The runtime resolver receives the original function arguments in r4 - through r7, the shared library identifier from GOT[1]? in r14, and the - relocation index times four in r15. It updates the corresponding PLT GOT - entry so that the PLT entry will transfer control directly to the target - in the future, and then transfers control to the target. */ - /* Save arguments and return address. */ - subi sp, sp, 28 - cfi_adjust_cfa_offset (28) - stw r22, 24(sp) - cfi_rel_offset (r22, 24) - stw r8, 20(sp) /* save r8, because this might be a call to mcount */ - cfi_rel_offset (r8, 20) - stw r7, 16(sp) - cfi_rel_offset (r7, 16) - stw r6, 12(sp) - cfi_rel_offset (r6, 12) - stw r5, 8(sp) - cfi_rel_offset (r5, 8) - stw r4, 4(sp) - cfi_rel_offset (r4, 4) - stw ra, 0(sp) - cfi_rel_offset (ra, 0) - - /* Get pointer to linker struct. */ - mov r4, r14 - - /* Get the relocation offset. We're given a multiple of 4 and - need a multiple of 12, so multiply by 3. */ - slli r5, r15, 1 - add r5, r5, r15 - - /* Call the fixup routine. */ - nextpc r22 -1: movhi r2, %hiadj(_gp_got - 1b) - addi r2, r2, %lo(_gp_got - 1b) - add r22, r22, r2 - ldw r2, %call(_dl_fixup)(r22) - callr r2 - - /* Restore the arguments and return address. */ - ldw ra, 0(sp) - ldw r4, 4(sp) - ldw r5, 8(sp) - ldw r6, 12(sp) - ldw r7, 16(sp) - ldw r8, 20(sp) - ldw r22, 24(sp) - addi sp, sp, 28 - cfi_adjust_cfa_offset (-28) - - /* Jump to the newly found address. */ - jmp r2 - - cfi_endproc diff --git a/sysdeps/nios2/gccframe.h b/sysdeps/nios2/gccframe.h deleted file mode 100644 index c2440eefe6..0000000000 --- a/sysdeps/nios2/gccframe.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Definition of object in frame unwind info. Nios II version. - Copyright (C) 2015-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 - <http://www.gnu.org/licenses/>. */ - -#define FIRST_PSEUDO_REGISTER 40 - -#include <sysdeps/generic/gccframe.h> diff --git a/sysdeps/nios2/gmp-mparam.h b/sysdeps/nios2/gmp-mparam.h deleted file mode 100644 index e77343e9b0..0000000000 --- a/sysdeps/nios2/gmp-mparam.h +++ /dev/null @@ -1,23 +0,0 @@ -/* gmp-mparam.h -- Compiler/machine parameter header file. - -Copyright (C) 2015-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 -<http://www.gnu.org/licenses/>. */ - -#include <sysdeps/generic/gmp-mparam.h> - -#define IEEE_DOUBLE_BIG_ENDIAN 0 diff --git a/sysdeps/nios2/jmpbuf-offsets.h b/sysdeps/nios2/jmpbuf-offsets.h deleted file mode 100644 index 64b228f119..0000000000 --- a/sysdeps/nios2/jmpbuf-offsets.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Private macros for accessing __jmp_buf contents. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -/* Save offsets within __jmp_buf. */ -#define JB_R16 0 -#define JB_R17 1 -#define JB_R18 2 -#define JB_R19 3 -#define JB_R20 4 -#define JB_R21 5 -#define JB_R22 6 -#define JB_FP 7 -#define JB_RA 8 -#define JB_SP 9 - -#ifndef __ASSEMBLER__ -#include <setjmp.h> -#include <stdint.h> -#include <sysdep.h> - -static inline uintptr_t __attribute__ ((unused)) -_jmpbuf_sp (__jmp_buf jmpbuf) -{ - uintptr_t sp = jmpbuf[JB_SP]; -#ifdef PTR_DEMANGLE - PTR_DEMANGLE (sp); -#endif - return sp; -} -#endif - -/* Helper for generic ____longjmp_chk(). */ -#define JB_FRAME_ADDRESS(buf) ((void *) _jmpbuf_sp (buf)) diff --git a/sysdeps/nios2/jmpbuf-unwind.h b/sysdeps/nios2/jmpbuf-unwind.h deleted file mode 100644 index aff44eccbf..0000000000 --- a/sysdeps/nios2/jmpbuf-unwind.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Examine __jmp_buf for unwinding frames. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#include <setjmp.h> -#include <jmpbuf-offsets.h> -#include <stdint.h> -#include <unwind.h> - -/* 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[JB_SP])) - -#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ - _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) - -#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ - ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_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/nios2/ldsodefs.h b/sysdeps/nios2/ldsodefs.h deleted file mode 100644 index 69201b9d11..0000000000 --- a/sysdeps/nios2/ldsodefs.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Run-time dynamic linker data structures for loaded ELF shared objects. - 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 - <http://www.gnu.org/licenses/>. */ - -#ifndef _NIOS2_LDSODEFS_H -#define _NIOS2_LDSODEFS_H 1 - -#include <elf.h> - -struct La_nios2_regs; -struct La_nios2_retval; - -#define ARCH_PLTENTER_MEMBERS \ - ElfW(Addr) (*nios2_gnu_pltenter) (ElfW(Sym) *, unsigned int, \ - uintptr_t *, uintptr_t *, \ - const struct La_nios2_regs *, \ - unsigned int *, const char *, \ - long int *); - -#define ARCH_PLTEXIT_MEMBERS \ - unsigned int (*nios2_gnu_pltexit) (ElfW(Sym) *, unsigned int, \ - uintptr_t *, uintptr_t *, \ - const struct La_nios2_regs *, \ - struct La_nios2_retval *, \ - const char *); - -#include_next <ldsodefs.h> - -#endif diff --git a/sysdeps/nios2/libc-tls.c b/sysdeps/nios2/libc-tls.c deleted file mode 100644 index b7d3936681..0000000000 --- a/sysdeps/nios2/libc-tls.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Thread-local storage handling in the ELF dynamic linker. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#include <csu/libc-tls.c> -#include <dl-tls.h> - -/* On Nios II, 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 + GET_ADDR_OFFSET; -} diff --git a/sysdeps/nios2/libm-test-ulps b/sysdeps/nios2/libm-test-ulps deleted file mode 100644 index f1a01fdb30..0000000000 --- a/sysdeps/nios2/libm-test-ulps +++ /dev/null @@ -1,394 +0,0 @@ -# Begin of automatic generation - -# Maximal error of functions: -Function: "acos": -float: 1 -ifloat: 1 - -Function: "acosh": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "asin": -float: 1 -ifloat: 1 - -Function: "asinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "atan": -float: 1 -ifloat: 1 - -Function: "atan2": -float: 1 -ifloat: 1 - -Function: "atanh": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "cabs": -double: 1 -idouble: 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: "carg": -float: 1 -ifloat: 1 - -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: 3 -float: 1 -idouble: 3 -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: 3 -float: 3 -idouble: 3 -ifloat: 3 - -Function: Imaginary part of "clog": -float: 1 -ifloat: 1 - -Function: Real part of "clog10": -double: 3 -float: 4 -idouble: 3 -ifloat: 4 - -Function: Imaginary part of "clog10": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "cos": -float: 1 -ifloat: 1 - -Function: "cosh": -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: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: Imaginary part of "csqrt": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -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 "ctanh": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "ctanh": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "erf": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "erfc": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -Function: "exp": -float: 1 -ifloat: 1 - -Function: "exp10": -double: 2 -idouble: 2 - -Function: "exp2": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "expm1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "gamma": -double: 4 -float: 4 -idouble: 4 -ifloat: 4 - -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: 4 -float: 4 -idouble: 4 -ifloat: 4 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "log1p": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "log2": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "pow": -float: 3 -ifloat: 3 - -Function: "pow10": -double: 2 -idouble: 2 - -Function: "sin": -float: 1 -ifloat: 1 - -Function: "sincos": -float: 1 -ifloat: 1 - -Function: "sinh": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "tan": -float: 1 -ifloat: 1 - -Function: "tanh": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "tgamma": -double: 5 -float: 5 -idouble: 5 -ifloat: 5 - -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/nios2/libm-test-ulps-name b/sysdeps/nios2/libm-test-ulps-name deleted file mode 100644 index 4ee7692b1b..0000000000 --- a/sysdeps/nios2/libm-test-ulps-name +++ /dev/null @@ -1 +0,0 @@ -Nios II diff --git a/sysdeps/nios2/machine-gmon.h b/sysdeps/nios2/machine-gmon.h deleted file mode 100644 index 9ad018ba8d..0000000000 --- a/sysdeps/nios2/machine-gmon.h +++ /dev/null @@ -1,64 +0,0 @@ -/* Machine-dependent definitions for profiling support. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -#define _MCOUNT_DECL(frompc, selfpc) \ -static void __attribute_used__ __mcount_internal (u_long frompc, u_long selfpc) - -/* This macro/func MUST save r4, r5, r6, r7 and r8 because the compiler inserts - blind calls to mcount(), ignoring the fact that mcount may clobber - registers; therefore, mcount may NOT clobber registers. */ - -#if defined(__PIC__) || defined(PIC) -#define NIOS2_MCOUNT_CALL \ - "nextpc r3\n\t" \ - "1: movhi r2, %hiadj(_gp_got - 1b)\n\t" \ - "addi r2, r2, %lo(_gp_got - 1b)\n\t" \ - "add r2, r2, r3\n\t" \ - "ldw r2, %call(__mcount_internal)(r2)\n\t" \ - "callr r2\n\t" -#else -#define NIOS2_MCOUNT_CALL \ - "call\t__mcount_internal\n\t" -#endif - -#define MCOUNT \ - asm (".globl _mcount\n\t" \ - ".type _mcount,@function\n\t" \ - "_mcount:\n\t" \ - "subi sp, sp, 24\n\t" \ - "stw ra, 20(sp)\n\t" \ - "stw r8, 16(sp)\n\t" \ - "stw r7, 12(sp)\n\t" \ - "stw r6, 8(sp)\n\t" \ - "stw r5, 4(sp)\n\t" \ - "stw r4, 0(sp)\n\t" \ - "mov r4, r8\n\t" \ - "mov r5, ra\n\t" \ - NIOS2_MCOUNT_CALL \ - "ldw ra, 20(sp)\n\t" \ - "ldw r8, 16(sp)\n\t" \ - "ldw r7, 12(sp)\n\t" \ - "ldw r6, 8(sp)\n\t" \ - "ldw r5, 4(sp)\n\t" \ - "ldw r4, 0(sp)\n\t" \ - "addi sp, sp, 24\n\t" \ - "ret\n\t" \ - ".size _mcount, . - _mcount\n\t" \ - ); diff --git a/sysdeps/nios2/math-tests.h b/sysdeps/nios2/math-tests.h deleted file mode 100644 index 62c19ba9b3..0000000000 --- a/sysdeps/nios2/math-tests.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Configuration for math tests. Nios II version. - Copyright (C) 2015-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 - <http://www.gnu.org/licenses/>. */ - -/* Current Nios II soft-float does not support exceptions or rounding - modes. */ -#define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST) -#define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST) -#define ROUNDING_TESTS_long_double(MODE) ((MODE) == FE_TONEAREST) -#define EXCEPTION_TESTS_float 0 -#define EXCEPTION_TESTS_double 0 -#define EXCEPTION_TESTS_long_double 0 - -#include_next <math-tests.h> diff --git a/sysdeps/nios2/math_private.h b/sysdeps/nios2/math_private.h deleted file mode 100644 index 373da2a621..0000000000 --- a/sysdeps/nios2/math_private.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef NIO2_MATH_PRIVATE_H -#define NIO2_MATH_PRIVATE_H 1 - -/* Suppress use of exceptions here to avoid build errors if the FE_* - macros aren't defined. Only allow rounding modes implemented for Nios II. - - This does mean that some code will silently fail to report exceptions, - set rounding mode as expected, etc., but it allows math code to compile - that otherwise wouldn't (such as math/s_fma.c) and so is valuable. - - We intentionally ignore the "exception" arguments of functions that - take an exception, since we can't even evaluate the argument - without causing a build failure. The extra level of statement - expression wrapping avoids "statement with no effect" warnings. - Since the callers don't check for errors anyway, we just claim - success in every case. - - The overrides for libc_ functions must happen before we include - the generic math_private.h, and the overrides for regular - <fenv.h> functions must happen afterwards, to avoid clashing with - the declarations of those functions. */ - -#define libc_fesetround(rnd) ({ 0; }) -#define libc_fetestexcept(exc) ({ 0; }) -#define libc_feholdexcept_setround(env, exc) ({ (void) (env); 0; }) -#define libc_feupdateenv_test(env, exc) ({ (void) (env); 0; }) - -/* Enable __finitel, __isinfl, and __isnanl for binary compatibility - when built without long double support. */ -#define LDBL_CLASSIFY_COMPAT 1 - -#include_next <math_private.h> - -#define feraiseexcept(excepts) ({ 0; }) -#define __feraiseexcept(excepts) ({ 0; }) -#define feclearexcept(exc) ({ 0; }) - -#endif diff --git a/sysdeps/nios2/memusage.h b/sysdeps/nios2/memusage.h deleted file mode 100644 index ed66f12fed..0000000000 --- a/sysdeps/nios2/memusage.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Machine-specific definitions for memory usage profiling, Nios II version. - 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 - <http://www.gnu.org/licenses/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) - -#define uatomic32_t unsigned int - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/nios2/nptl/Makefile b/sysdeps/nios2/nptl/Makefile deleted file mode 100644 index 1ae6ca40c1..0000000000 --- a/sysdeps/nios2/nptl/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -# NPTL makefile fragment for Nios II. -# 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 -# <http://www.gnu.org/licenses/>. - -ifeq ($(subdir),csu) -gen-as-const-headers += tcb-offsets.sym -endif diff --git a/sysdeps/nios2/nptl/bits/pthreadtypes-arch.h b/sysdeps/nios2/nptl/bits/pthreadtypes-arch.h deleted file mode 100644 index e2732f9771..0000000000 --- a/sysdeps/nios2/nptl/bits/pthreadtypes-arch.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Machine-specific pthread type layouts. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#ifndef _BITS_PTHREADTYPES_ARCH_H -#define _BITS_PTHREADTYPES_ARCH_H 1 - -#include <endian.h> - -#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 - -/* Data structure for mutex handling. */ -#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 - int __cur_writer; -}; - -#define __PTHREAD_RWLOCK_ELISION_EXTRA 0 - -#endif /* bits/pthreadtypes.h */ diff --git a/sysdeps/nios2/nptl/bits/semaphore.h b/sysdeps/nios2/nptl/bits/semaphore.h deleted file mode 100644 index d4277b907b..0000000000 --- a/sysdeps/nios2/nptl/bits/semaphore.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Machine-specific POSIX semaphore type layouts. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#ifndef _SEMAPHORE_H -# error "Never use <bits/semaphore.h> directly; include <semaphore.h> 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/nios2/nptl/pthreaddef.h b/sysdeps/nios2/nptl/pthreaddef.h deleted file mode 100644 index cf37fcc950..0000000000 --- a/sysdeps/nios2/nptl/pthreaddef.h +++ /dev/null @@ -1,32 +0,0 @@ -/* pthread machine parameter definitions, Nios II 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 - <http://www.gnu.org/licenses/>. */ - -/* Default stack size. */ -#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024) - -/* Required stack pointer alignment at beginning. */ -#define STACK_ALIGN 4 - -/* Minimal stack size after allocating thread descriptor and guard size. */ -#define MINIMAL_REST_STACK 2048 - -/* Alignment requirement for TCB. */ -#define TCB_ALIGNMENT 4 - -/* Location of current stack frame. */ -#define CURRENT_STACK_FRAME __builtin_frame_address (0) diff --git a/sysdeps/nios2/nptl/tcb-offsets.sym b/sysdeps/nios2/nptl/tcb-offsets.sym deleted file mode 100644 index 3cd8d984ac..0000000000 --- a/sysdeps/nios2/nptl/tcb-offsets.sym +++ /dev/null @@ -1,13 +0,0 @@ -#include <sysdep.h> -#include <tls.h> - --- - --- Abuse tls.h macros to derive offsets relative to the thread register. -# undef __thread_self -# define __thread_self ((void *) 0) -# define thread_offsetof(mem) ((ptrdiff_t) THREAD_SELF + offsetof (struct pthread, mem)) - -MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads) -TID_OFFSET thread_offsetof (tid) -POINTER_GUARD (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t)) diff --git a/sysdeps/nios2/nptl/tls.h b/sysdeps/nios2/nptl/tls.h deleted file mode 100644 index 104e82ae43..0000000000 --- a/sysdeps/nios2/nptl/tls.h +++ /dev/null @@ -1,164 +0,0 @@ -/* Definition for thread-local data handling. NPTL/Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#ifndef _TLS_H -#define _TLS_H 1 - -#include <dl-sysdep.h> - -#ifndef __ASSEMBLER__ -# include <stdbool.h> -# include <stddef.h> -# include <stdint.h> -# include <dl-dtv.h> - -#else /* __ASSEMBLER__ */ -# include <tcb-offsets.h> -#endif /* __ASSEMBLER__ */ - - -#ifndef __ASSEMBLER__ - -/* Get system call information. */ -# include <sysdep.h> - -/* The TP points to the start of the thread blocks. */ -# define TLS_DTV_AT_TP 1 -# define TLS_TCB_AT_TP 0 - -/* Get the thread descriptor definition. */ -# include <nptl/descr.h> - -typedef struct -{ - dtv_t *dtv; - uintptr_t pointer_guard; - unsigned spare[6]; -} tcbhead_t; - -register struct pthread *__thread_self __asm__("r23"); - -#define READ_THREAD_POINTER() ((void *) __thread_self) - -/* This is the size of the initial TCB. Because our TCB is before the thread - pointer, we don't need this. */ -# define TLS_INIT_TCB_SIZE 0 - -/* Alignment requirements for the initial TCB. */ -# define TLS_INIT_TCB_ALIGN __alignof__ (struct pthread) - -/* This is the size of the TCB. Because our TCB is before the thread - pointer, we don't need this. */ -# define TLS_TCB_SIZE 0 - -/* Alignment requirements for the TCB. */ -# define TLS_TCB_ALIGN __alignof__ (struct pthread) - -/* This is the size we need before TCB - actually, it includes the TCB. */ -# define TLS_PRE_TCB_SIZE \ - (sizeof (struct pthread) \ - + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) - -/* The thread pointer (in hardware register r23) points to the end of - the TCB + 0x7000, as for PowerPC and MIPS. */ -# define TLS_TCB_OFFSET 0x7000 - -/* 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))[-1].dtv = (dtvp) + 1) - -/* Install new dtv for current thread. */ -# define INSTALL_NEW_DTV(dtv) \ - (THREAD_DTV() = (dtv)) - -/* Return dtv of given thread descriptor. */ -# define GET_DTV(tcbp) \ - (((tcbhead_t *) (tcbp))[-1].dtv) - -/* Code to initially initialize the thread pointer. */ -# define TLS_INIT_TP(tcbp) \ - (__thread_self = (struct pthread *) ((char *) tcbp + TLS_TCB_OFFSET), NULL) - -/* Value passed to 'clone' for initialization of the thread register. */ -# define TLS_DEFINE_INIT_TP(tp, pd) \ - void *tp = (void *) (pd) + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE - -/* Return the address of the dtv for the current thread. */ -# define THREAD_DTV() \ - (((tcbhead_t *) (READ_THREAD_POINTER () - TLS_TCB_OFFSET))[-1].dtv) - -/* Return the thread descriptor for the current thread. */ -# define THREAD_SELF \ - ((struct pthread *) (READ_THREAD_POINTER () \ - - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)) - -/* Magic for libthread_db to know how to do THREAD_SELF. */ -# define DB_THREAD_SELF \ - REGISTER (32, 32, 23 * 4, -TLS_PRE_TCB_SIZE - TLS_TCB_OFFSET) - -/* Access to data in the thread descriptor is easy. */ -# define THREAD_GETMEM(descr, member) \ - descr->member -# define THREAD_GETMEM_NC(descr, member, idx) \ - descr->member[idx] -# define THREAD_SETMEM(descr, member, value) \ - descr->member = (value) -# define THREAD_SETMEM_NC(descr, member, idx, value) \ - descr->member[idx] = (value) - -# define THREAD_GET_POINTER_GUARD() \ - (((tcbhead_t *) (READ_THREAD_POINTER () \ - - TLS_TCB_OFFSET))[-1].pointer_guard) -# define THREAD_SET_POINTER_GUARD(value) \ - (THREAD_GET_POINTER_GUARD () = (value)) -# define THREAD_COPY_POINTER_GUARD(descr) \ - (((tcbhead_t *) ((void *) (descr) \ - + TLS_PRE_TCB_SIZE))[-1].pointer_guard \ - = THREAD_GET_POINTER_GUARD()) - -/* l_tls_offset == 0 is perfectly valid on Nios II, so we have to use some - different value to mean unset l_tls_offset. */ -# define NO_TLS_OFFSET -1 - -/* 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/nios2/preconfigure b/sysdeps/nios2/preconfigure deleted file mode 100644 index 4b5bd49084..0000000000 --- a/sysdeps/nios2/preconfigure +++ /dev/null @@ -1,6 +0,0 @@ -case "$machine" in -nios2*) - base_machine=nios2 - machine=nios2 - ;; -esac diff --git a/sysdeps/nios2/s_fma.c b/sysdeps/nios2/s_fma.c deleted file mode 100644 index d9613fa67c..0000000000 --- a/sysdeps/nios2/s_fma.c +++ /dev/null @@ -1 +0,0 @@ -#include <soft-fp/fmadf4.c> diff --git a/sysdeps/nios2/s_fmaf.c b/sysdeps/nios2/s_fmaf.c deleted file mode 100644 index aa5c9b2d91..0000000000 --- a/sysdeps/nios2/s_fmaf.c +++ /dev/null @@ -1 +0,0 @@ -#include <soft-fp/fmasf4.c> diff --git a/sysdeps/nios2/setjmp.S b/sysdeps/nios2/setjmp.S deleted file mode 100644 index 77f7456ef4..0000000000 --- a/sysdeps/nios2/setjmp.S +++ /dev/null @@ -1,73 +0,0 @@ -/* setjmp for Nios II. - Copyright (C) 1991-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 - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include <jmpbuf-offsets.h> - - .text -ENTRY(setjmp) - movi r5, 1 - br __sigsetjmp -END(setjmp) - -ENTRY(_setjmp) - mov r5, zero - br __sigsetjmp -END(_setjmp) -libc_hidden_def (_setjmp) - -/* Save the current program position in ENV and return 0. */ -ENTRY(__sigsetjmp) -#ifdef PTR_MANGLE - PTR_MANGLE_GUARD (r9) -#endif - stw r16, (JB_R16*4)(r4) - stw r17, (JB_R17*4)(r4) - stw r18, (JB_R18*4)(r4) - stw r19, (JB_R19*4)(r4) - stw r20, (JB_R20*4)(r4) - stw r21, (JB_R21*4)(r4) - stw r22, (JB_R22*4)(r4) - stw fp, (JB_FP*4)(r4) -#ifdef PTR_MANGLE - PTR_MANGLE (r6, ra, r9) - PTR_MANGLE (r7, sp, r9) - stw r6, (JB_RA*4)(r4) - stw r7, (JB_SP*4)(r4) -#else - stw ra, (JB_RA*4)(r4) - stw sp, (JB_SP*4)(r4) -#endif -#if IS_IN (rtld) - /* In ld.so we never save the signal mask. */ - mov r2, zero - ret -#else - /* Save the signal mask if requested. */ -#if defined(__PIC__) || defined(PIC) - nextpc r2 -1: movhi r3, %hiadj(__sigjmp_save - 1b) - addi r3, r3, %lo(__sigjmp_save - 1b) - add r2, r2, r3 - jmp r2 -#else - jmpi __sigjmp_save -#endif -#endif -END (__sigsetjmp) -libc_hidden_def (__sigsetjmp) diff --git a/sysdeps/nios2/sfp-machine.h b/sysdeps/nios2/sfp-machine.h deleted file mode 100644 index 95eefc1874..0000000000 --- a/sysdeps/nios2/sfp-machine.h +++ /dev/null @@ -1,51 +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 - -/* This is arbitrarily taken from the PowerPC version. */ -#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_TININESS_AFTER_ROUNDING 0 diff --git a/sysdeps/nios2/sotruss-lib.c b/sysdeps/nios2/sotruss-lib.c deleted file mode 100644 index 844e76f1ba..0000000000 --- a/sysdeps/nios2/sotruss-lib.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Override generic sotruss-lib.c to define actual functions for Nios II. - Copyright (C) 2015-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 - <http://www.gnu.org/licenses/>. */ - -#define HAVE_ARCH_PLTENTER -#define HAVE_ARCH_PLTEXIT - -#include <elf/sotruss-lib.c> - -ElfW(Addr) -la_nios2_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)), - unsigned int ndx __attribute__ ((unused)), - uintptr_t *refcook, uintptr_t *defcook, - La_nios2_regs *regs, unsigned int *flags, - const char *symname, long int *framesizep) -{ - print_enter (refcook, defcook, symname, - regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2], - *flags); - - /* No need to copy anything, we will not need the parameters in any case. */ - *framesizep = 0; - - return sym->st_value; -} - -unsigned int -la_nios2_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, - uintptr_t *defcook, - const struct La_nios2_regs *inregs, - struct La_nios2_retval *outregs, const char *symname) -{ - print_exit (refcook, defcook, symname, outregs->lrv_r2); - - return 0; -} diff --git a/sysdeps/nios2/stackguard-macros.h b/sysdeps/nios2/stackguard-macros.h deleted file mode 100644 index 55a5771b62..0000000000 --- a/sysdeps/nios2/stackguard-macros.h +++ /dev/null @@ -1,6 +0,0 @@ -#include <stdint.h> - -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/nios2/stackinfo.h b/sysdeps/nios2/stackinfo.h deleted file mode 100644 index b4ca93f7f0..0000000000 --- a/sysdeps/nios2/stackinfo.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Stack environment definitions for Nios II. - 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 - <http://www.gnu.org/licenses/>. */ - -/* This file contains a bit of information about the stack allocation - of the processor. */ - -#ifndef _STACKINFO_H -#define _STACKINFO_H 1 - -#include <elf.h> - -/* On Nios II the stack grows down. */ -#define _STACK_GROWS_DOWN 1 - -/* Default to a non-executable stack. */ -#define DEFAULT_STACK_PERMS (PF_R|PF_W) - -#endif /* stackinfo.h */ diff --git a/sysdeps/nios2/start.S b/sysdeps/nios2/start.S deleted file mode 100644 index d2eeead20f..0000000000 --- a/sysdeps/nios2/start.S +++ /dev/null @@ -1,146 +0,0 @@ -/* Startup code for Nios II - 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. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -/* 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 - - The stack pointer, sp, will point to the argument count on the stack. - The initial state of the stack when a userspace process is started is: - - Purpose Start Address Length - Unspecified High Addresses - Referenced strings, etc. Varies - Unspecified - Null auxilliary vector entry 4bytes - Auxilliary vector entries 8bytes each - NULL terminator for envp 4bytes - Environment pointers sp+8+4*argc 4bytes each - NULL terminator for argv sp+4+4*argc 4bytes - Argument pointers sp+4 4bytes each - Argument count sp 4bytes - Unspecified Low Addresses - - If the application should register a destructor function with atexit, - the pointer will be placed in r4. Otherwise r4 will be zero. - - The contents of all other registers are unspecified. User code should - set fp to zero to mark the end of the frame chain. - - The auxilliary vector is a series of pairs of 32-bit tag and 32-bit - value, terminated by an AT_NULL tag. -*/ - - .text - .globl _start - .type _start,%function -_start: - /* Set up the global pointer. */ - movhi gp, %hiadj(_gp) - addi gp, gp, %lo(_gp) - - /* Save the stack pointer. */ - mov r2, sp - - /* Create room on the stack for the fini, rtld_fini and stack_end args - to __libc_start_main. */ - subi sp, sp, 12 - - /* Push stack_end */ - stw r2, 8(sp) - - /* Push rtld_fini */ - stw r4, 4(sp) - - /* Set up the GOT pointer. */ - nextpc r22 -1: movhi r2, %hiadj(_gp_got - 1b) - addi r2, r2, %lo(_gp_got - 1b) - add r22, r22, r2 - - /* Push fini */ - movhi r8, %call_hiadj(__libc_csu_fini) - addi r8, r8, %call_lo(__libc_csu_fini) - add r8, r8, r22 - ldw r8, 0(r8) - stw r8, 0(sp) - - /* r7 == init */ - movhi r7, %call_hiadj(__libc_csu_init) - addi r7, r7, %call_lo(__libc_csu_init) - add r7, r7, r22 - ldw r7, 0(r7) - - /* r6 == argv */ - addi r6, sp, 16 - - /* r5 == argc */ - ldw r5, 12(sp) - - /* r4 == main */ - movhi r4, %call_hiadj(main) - addi r4, r4, %call_lo(main) - add r4, r4, r22 - ldw r4, 0(r4) - - /* fp == 0 */ - mov fp, zero - - /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, - stack_end) */ - - /* Let the libc call main and exit with its return code. */ - movhi r2, %call_hiadj(__libc_start_main) - addi r2, r2, %call_lo(__libc_start_main) - add r2, r2, r22 - ldw r2, 0(r2) - callr r2 - - /* should never get here....*/ - movhi r2, %call_hiadj(abort) - addi r2, r2, %call_lo(abort) - add r2, r2, r22 - ldw r2, 0(r2) - callr r2 - -/* 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 diff --git a/sysdeps/nios2/sysdep.h b/sysdeps/nios2/sysdep.h deleted file mode 100644 index c99fefe029..0000000000 --- a/sysdeps/nios2/sysdep.h +++ /dev/null @@ -1,65 +0,0 @@ -/* Assembler macros for Nios II. - Copyright (C) 2015-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 - <http://www.gnu.org/licenses/>. */ - -#include <sysdeps/generic/sysdep.h> - -#ifdef __ASSEMBLER__ - -/* Syntactic details of assembler. */ - -#define ASM_SIZE_DIRECTIVE(name) .size name,.-name - -#define ENTRY(name) \ - .globl C_SYMBOL_NAME(name); \ - .type C_SYMBOL_NAME(name),%function; \ - C_LABEL(name) \ - cfi_startproc; \ - CALL_MCOUNT; - -#undef END -#define END(name) \ - cfi_endproc; \ - ASM_SIZE_DIRECTIVE(name) - -#ifdef PROF - -# ifdef __PIC__ -# define CALL_MCOUNT \ - mov r8, ra; \ - nextpc r2; \ -1: \ - movhi r3, %hiadj(_gp_got - 1b); \ - addi r3, r3, %lo(_gp_got - 1b); \ - add r2, r2, r3; \ - ldw r2, %call(_mcount)(r2); \ - callr r2; \ - mov ra, r8; \ - ret; -# else -# define CALL_MCOUNT \ - mov r8, ra; \ - call _mount; \ - mov ra, r8; \ - ret; -# endif - -#else -# define CALL_MCOUNT /* Do nothing. */ -#endif - -#endif /* __ASSEMBLER__ */ diff --git a/sysdeps/nios2/tls-macros.h b/sysdeps/nios2/tls-macros.h deleted file mode 100644 index 7029530e46..0000000000 --- a/sysdeps/nios2/tls-macros.h +++ /dev/null @@ -1,46 +0,0 @@ -#define TLS_LE(x) \ - ({ int *__result; \ - asm ("addi %0, r23, %%tls_le(" #x ")" \ - : "=r" (__result)); \ - __result; }) - -#define TLS_IE(x) \ - ({ int *__result; \ - int __tmp; \ - asm ("nextpc %0 ; " \ - "1: movhi %1, %%hiadj(_gp_got - 1b) ; " \ - "addi %1, %1, %%lo(_gp_got - 1b) ; " \ - "add %0, %0, %1 ; " \ - "ldw %1, %%tls_ie(" #x ")(%0) ; " \ - "add %1, r23, %1" \ - : "=&r" (__tmp), "=&r" (__result)); \ - __result; }) - -#define TLS_LD(x) \ - ({ char *__result; \ - char *__result2; \ - int *__result3; \ - int __tmp; \ - extern void *__tls_get_addr (void *); \ - asm ("nextpc %0 ; " \ - "1: movhi %1, %%hiadj(_gp_got - 1b) ; " \ - "addi %1, %1, %%lo(_gp_got - 1b) ; " \ - "add %0, %0, %1 ; " \ - "addi %0, %0, %%tls_ldm(" #x ")" \ - : "=r" (__result), "=r" (__tmp)); \ - __result2 = (char *)__tls_get_addr (__result); \ - asm ("addi %0, %1, %%tls_ldo(" #x ")" \ - : "=r" (__result3) : "r" (__result2)); \ - __result3; }) - -#define TLS_GD(x) \ - ({ int *__result; \ - int __tmp; \ - extern void *__tls_get_addr (void *); \ - asm ("nextpc %0 ; " \ - "1: movhi %1, %%hiadj(_gp_got - 1b) ; " \ - "addi %1, %1, %%lo(_gp_got - 1b) ; " \ - "add %0, %0, %1 ; " \ - "addi %0, %0, %%tls_gd(" #x ")" \ - : "=r" (__result), "=r" (__tmp)); \ - (int *)__tls_get_addr (__result); }) diff --git a/sysdeps/nios2/tst-audit.h b/sysdeps/nios2/tst-audit.h deleted file mode 100644 index 25348bb792..0000000000 --- a/sysdeps/nios2/tst-audit.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Definitions for testing PLT entry/exit auditing. Nios II 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 - <http://www.gnu.org/licenses/>. */ - -#define pltenter la_nios2_gnu_pltenter -#define pltexit la_nios2_gnu_pltexit -#define La_regs La_nios2_regs -#define La_retval La_nios2_retval -#define int_retval lrv_r2 |