aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/nios2
diff options
context:
space:
mode:
authorChung-Lin Tang <cltang@codesourcery.com>2015-01-17 22:29:12 -0800
committerChung-Lin Tang <cltang@codesourcery.com>2015-01-17 22:29:12 -0800
commit522e6ee3b45808ea845ec0ac11d5fffcd737baba (patch)
tree3d107705431599279416406a487cd8a905a372af /sysdeps/nios2
parent026eb207eda8cc93f6f7f0980f0a8e51587d8011 (diff)
downloadglibc-522e6ee3b45808ea845ec0ac11d5fffcd737baba.tar.xz
glibc-522e6ee3b45808ea845ec0ac11d5fffcd737baba.zip
Commit nios2 port to master.
Diffstat (limited to 'sysdeps/nios2')
-rw-r--r--sysdeps/nios2/Implies3
-rw-r--r--sysdeps/nios2/Makefile35
-rw-r--r--sysdeps/nios2/Subdirs1
-rw-r--r--sysdeps/nios2/Versions12
-rw-r--r--sysdeps/nios2/__longjmp.S80
-rw-r--r--sysdeps/nios2/abort-instr.h2
-rw-r--r--sysdeps/nios2/backtrace.c1
-rw-r--r--sysdeps/nios2/bits/endian.h12
-rw-r--r--sysdeps/nios2/bits/fenv.h44
-rw-r--r--sysdeps/nios2/bits/link.h54
-rw-r--r--sysdeps/nios2/bits/setjmp.h30
-rw-r--r--sysdeps/nios2/bsd-_setjmp.S1
-rw-r--r--sysdeps/nios2/bsd-setjmp.S1
-rw-r--r--sysdeps/nios2/configure162
-rw-r--r--sysdeps/nios2/configure.ac13
-rw-r--r--sysdeps/nios2/crti.S96
-rw-r--r--sysdeps/nios2/crtn.S49
-rw-r--r--sysdeps/nios2/dl-init.c30
-rw-r--r--sysdeps/nios2/dl-machine.h335
-rw-r--r--sysdeps/nios2/dl-sysdep.h23
-rw-r--r--sysdeps/nios2/dl-tls.h48
-rw-r--r--sysdeps/nios2/dl-trampoline.S79
-rw-r--r--sysdeps/nios2/gccframe.h21
-rw-r--r--sysdeps/nios2/gmp-mparam.h23
-rw-r--r--sysdeps/nios2/jmpbuf-offsets.h48
-rw-r--r--sysdeps/nios2/jmpbuf-unwind.h37
-rw-r--r--sysdeps/nios2/ldsodefs.h43
-rw-r--r--sysdeps/nios2/libc-tls.c32
-rw-r--r--sysdeps/nios2/libm-test-ulps333
-rw-r--r--sysdeps/nios2/machine-gmon.h64
-rw-r--r--sysdeps/nios2/math-tests.h28
-rw-r--r--sysdeps/nios2/math_private.h33
-rw-r--r--sysdeps/nios2/memusage.h23
-rw-r--r--sysdeps/nios2/nptl/Makefile22
-rw-r--r--sysdeps/nios2/nptl/bits/pthreadtypes.h189
-rw-r--r--sysdeps/nios2/nptl/bits/semaphore.h32
-rw-r--r--sysdeps/nios2/nptl/pthread_spin_lock.c24
-rw-r--r--sysdeps/nios2/nptl/pthreaddef.h32
-rw-r--r--sysdeps/nios2/nptl/tcb-offsets.sym14
-rw-r--r--sysdeps/nios2/nptl/tls.h174
-rw-r--r--sysdeps/nios2/preconfigure6
-rw-r--r--sysdeps/nios2/s_fma.c1
-rw-r--r--sysdeps/nios2/s_fmaf.c1
-rw-r--r--sysdeps/nios2/setjmp.S73
-rw-r--r--sysdeps/nios2/sfp-machine.h51
-rw-r--r--sysdeps/nios2/sotruss-lib.c51
-rw-r--r--sysdeps/nios2/stackguard-macros.h6
-rw-r--r--sysdeps/nios2/stackinfo.h33
-rw-r--r--sysdeps/nios2/start.S146
-rw-r--r--sysdeps/nios2/sysdep.h65
-rw-r--r--sysdeps/nios2/tls-macros.h46
-rw-r--r--sysdeps/nios2/tst-audit.h23
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