summaryrefslogtreecommitdiff
path: root/sysdeps/nios2/bits
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/bits
parent026eb207eda8cc93f6f7f0980f0a8e51587d8011 (diff)
downloadglibc-522e6ee3b45808ea845ec0ac11d5fffcd737baba.tar.gz
Commit nios2 port to master.
Diffstat (limited to 'sysdeps/nios2/bits')
-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
4 files changed, 140 insertions, 0 deletions
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
+ 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 */