diff options
| author | Chung-Lin Tang <cltang@codesourcery.com> | 2015-01-17 22:29:12 -0800 |
|---|---|---|
| committer | Chung-Lin Tang <cltang@codesourcery.com> | 2015-01-17 22:29:12 -0800 |
| commit | 522e6ee3b45808ea845ec0ac11d5fffcd737baba (patch) | |
| tree | 3d107705431599279416406a487cd8a905a372af /sysdeps/nios2 | |
| parent | 026eb207eda8cc93f6f7f0980f0a8e51587d8011 (diff) | |
| download | glibc-522e6ee3b45808ea845ec0ac11d5fffcd737baba.tar.xz glibc-522e6ee3b45808ea845ec0ac11d5fffcd737baba.zip | |
Commit nios2 port to master.
Diffstat (limited to 'sysdeps/nios2')
52 files changed, 2785 insertions, 0 deletions
diff --git a/sysdeps/nios2/Implies b/sysdeps/nios2/Implies new file mode 100644 index 0000000000..387a0ca052 --- /dev/null +++ b/sysdeps/nios2/Implies @@ -0,0 +1,3 @@ +wordsize-32 +ieee754/dbl-64 +ieee754/flt-32 diff --git a/sysdeps/nios2/Makefile b/sysdeps/nios2/Makefile new file mode 100644 index 0000000000..e4e88dafc2 --- /dev/null +++ b/sysdeps/nios2/Makefile @@ -0,0 +1,35 @@ +# Copyright (C) 1993-2015 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 new file mode 100644 index 0000000000..87eadf3024 --- /dev/null +++ b/sysdeps/nios2/Subdirs @@ -0,0 +1 @@ +soft-fp diff --git a/sysdeps/nios2/Versions b/sysdeps/nios2/Versions new file mode 100644 index 0000000000..48a23519d9 --- /dev/null +++ b/sysdeps/nios2/Versions @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000000..c5b7e1969e --- /dev/null +++ b/sysdeps/nios2/__longjmp.S @@ -0,0 +1,80 @@ +/* longjmp for Nios II. + Copyright (C) 2015 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 new file mode 100644 index 0000000000..17502e4a70 --- /dev/null +++ b/sysdeps/nios2/abort-instr.h @@ -0,0 +1,2 @@ +/* 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 new file mode 100644 index 0000000000..27ce597b39 --- /dev/null +++ b/sysdeps/nios2/backtrace.c @@ -0,0 +1 @@ +#include <sysdeps/x86_64/backtrace.c> diff --git a/sysdeps/nios2/bits/endian.h b/sysdeps/nios2/bits/endian.h new file mode 100644 index 0000000000..164f9e4d78 --- /dev/null +++ b/sysdeps/nios2/bits/endian.h @@ -0,0 +1,12 @@ +/* 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 new file mode 100644 index 0000000000..1eca40dabe --- /dev/null +++ b/sysdeps/nios2/bits/fenv.h @@ -0,0 +1,44 @@ +/* Copyright (C) 2012-2015 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) diff --git a/sysdeps/nios2/bits/link.h b/sysdeps/nios2/bits/link.h new file mode 100644 index 0000000000..cd44add2da --- /dev/null +++ b/sysdeps/nios2/bits/link.h @@ -0,0 +1,54 @@ +/* Machine-specific declarations for dynamic linker interface, Nios II version. + Copyright (C) 2009-2015 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 new file mode 100644 index 0000000000..d9abeb5ac3 --- /dev/null +++ b/sysdeps/nios2/bits/setjmp.h @@ -0,0 +1,30 @@ +/* Define the machine-dependent type `jmp_buf'. Nios II version. + Copyright (C) 1992-2015 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 |
