Skip to content

Commit

Permalink
Commit nios2 port to master.
Browse files Browse the repository at this point in the history
  • Loading branch information
Chung-Lin Tang committed Jan 18, 2015
1 parent 026eb20 commit 522e6ee
Show file tree
Hide file tree
Showing 98 changed files with 7,681 additions and 0 deletions.
104 changes: 104 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,107 @@
2015-01-18 Chung-Lin Tang <cltang@codesourcery.com>
Sandra Loosemore <sandra@codesourcery.com>
Andrew Jenner <andrew@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>

* NEWS: Mention new Nios II port.
* sysdeps/nios2/Implies: New file.
* sysdeps/nios2/Makefile: New file.
* sysdeps/nios2/Subdirs: New file.
* sysdeps/nios2/Versions: New file.
* sysdeps/nios2/__longjmp.S: New file.
* sysdeps/nios2/abort-instr.h: New file.
* sysdeps/nios2/backtrace.c: New file.
* sysdeps/nios2/bits/endian.h: New file.
* sysdeps/nios2/bits/fenv.h: New file.
* sysdeps/nios2/bits/link.h: New file.
* sysdeps/nios2/bits/setjmp.h: New file.
* sysdeps/nios2/bsd-_setjmp.S: New file.
* sysdeps/nios2/bsd-setjmp.S: New file.
* sysdeps/nios2/configure: New generated file.
* sysdeps/nios2/configure.ac: New file.
* sysdeps/nios2/crti.S: New file.
* sysdeps/nios2/crtn.S: New file.
* sysdeps/nios2/dl-init.c: New file.
* sysdeps/nios2/dl-machine.h: New file.
* sysdeps/nios2/dl-sysdep.h: New file.
* sysdeps/nios2/dl-tls.h: New file.
* sysdeps/nios2/dl-trampoline.S: New file.
* sysdeps/nios2/gccframe.h: New file.
* sysdeps/nios2/gmp-mparam.h: New file.
* sysdeps/nios2/jmpbuf-offsets.h: New file.
* sysdeps/nios2/jmpbuf-unwind.h: New file.
* sysdeps/nios2/ldsodefs.h: New file.
* sysdeps/nios2/libc-tls.c: New file.
* sysdeps/nios2/libm-test-ulps: New file.
* sysdeps/nios2/machine-gmon.h: New file.
* sysdeps/nios2/math-tests.h: New file.
* sysdeps/nios2/math_private.h: New file.
* sysdeps/nios2/memusage.h: New file.
* sysdeps/nios2/nptl/Makefile: New file.
* sysdeps/nios2/nptl/bits/pthreadtypes.h: New file.
* sysdeps/nios2/nptl/bits/semaphore.h: New file.
* sysdeps/nios2/nptl/pthread_spin_lock.c: New file.
* sysdeps/nios2/nptl/pthreaddef.h: New file.
* sysdeps/nios2/nptl/tcb-offsets.sym: New file.
* sysdeps/nios2/nptl/tls.h: New file.
* sysdeps/nios2/preconfigure: New file.
* sysdeps/nios2/s_fma.c: New file.
* sysdeps/nios2/s_fmaf.c: New file.
* sysdeps/nios2/setjmp.S: New file.
* sysdeps/nios2/sfp-machine.h: New file.
* sysdeps/nios2/sotruss-lib.c: New file.
* sysdeps/nios2/stackguard-macros.h: New file.
* sysdeps/nios2/stackinfo.h: New file.
* sysdeps/nios2/start.S: New file.
* sysdeps/nios2/sysdep.h: New file.
* sysdeps/nios2/tls-macros.h: New file.
* sysdeps/nios2/tst-audit.h: New file.
* sysdeps/unix/sysv/linux/nios2/Implies: New file.
* sysdeps/unix/sysv/linux/nios2/Makefile: New file.
* sysdeps/unix/sysv/linux/nios2/Versions: New file.
* sysdeps/unix/sysv/linux/nios2/arch-fork.h: New file.
* sysdeps/unix/sysv/linux/nios2/bits/atomic.h: New file.
* sysdeps/unix/sysv/linux/nios2/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/nios2/cacheflush.c: New file.
* sysdeps/unix/sysv/linux/nios2/clone.S: New file.
* sysdeps/unix/sysv/linux/nios2/configure: New generated file.
* sysdeps/unix/sysv/linux/nios2/configure.ac: New file.
* sysdeps/unix/sysv/linux/nios2/getcontext.S: New file.
* sysdeps/unix/sysv/linux/nios2/kernel-features.h: New file.
* sysdeps/unix/sysv/linux/nios2/kernel_rt_sigframe.h: New file.
* sysdeps/unix/sysv/linux/nios2/makecontext.c: New file.
* sysdeps/unix/sysv/linux/nios2/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/nios2/setcontext.S: New file.
* sysdeps/unix/sysv/linux/nios2/shlib-versions: New file.
* sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h: New file.
* sysdeps/unix/sysv/linux/nios2/swapcontext.S: New file.
* sysdeps/unix/sysv/linux/nios2/sys/cachectl.h: New file.
* sysdeps/unix/sysv/linux/nios2/sys/procfs.h: New file.
* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h: New file.
* sysdeps/unix/sysv/linux/nios2/sys/user.h: New file.
* sysdeps/unix/sysv/linux/nios2/syscall.S: New file.
* sysdeps/unix/sysv/linux/nios2/sysdep-cancel.h: New file.
* sysdeps/unix/sysv/linux/nios2/sysdep.S: New file.
* sysdeps/unix/sysv/linux/nios2/sysdep.h: New file.
* sysdeps/unix/sysv/linux/nios2/ucontext_i.sym: New file.
* sysdeps/unix/sysv/linux/nios2/vfork.S: New file.
* sysdeps/unix/sysv/linux/nios2/c++-types.data: New file.
* sysdeps/unix/sysv/linux/nios2/ld.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libBrokenLocale.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libanl.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libc.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libcrypt.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libdl.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libm.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libnsl.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libpthread.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libresolv.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/librt.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libthread_db.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/libutil.abilist: New file.
* sysdeps/unix/sysv/linux/nios2/localplt.data: New file.

2015-01-16 Stefan Liebler <stli@linux.vnet.ibm.com>

[BZ #17844]
Expand Down
2 changes: 2 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ Version 2.21
17744, 17745, 17746, 17747, 17748, 17775, 17777, 17780, 17781, 17782,
17791, 17793, 17796, 17797, 17803, 17806, 17834, 17844, 17848

* Port to Altera Nios II has been contributed by Mentor Graphics.

* Optimized strcpy, stpcpy, strncpy, stpncpy, strcmp, and strncmp
implementations for powerpc64/powerpc64le.
Implemented by Adhemerval Zanella (IBM).
Expand Down
3 changes: 3 additions & 0 deletions sysdeps/nios2/Implies
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
wordsize-32
ieee754/dbl-64
ieee754/flt-32
35 changes: 35 additions & 0 deletions sysdeps/nios2/Makefile
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions sysdeps/nios2/Subdirs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
soft-fp
12 changes: 12 additions & 0 deletions sysdeps/nios2/Versions
Original file line number Diff line number Diff line change
@@ -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;
}
}
80 changes: 80 additions & 0 deletions sysdeps/nios2/__longjmp.S
Original file line number Diff line number Diff line change
@@ -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)
2 changes: 2 additions & 0 deletions sysdeps/nios2/abort-instr.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/* An instruction which should crash any program is an unused trap. */
#define ABORT_INSTRUCTION asm ("trap 31")
1 change: 1 addition & 0 deletions sysdeps/nios2/backtrace.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include <sysdeps/x86_64/backtrace.c>
12 changes: 12 additions & 0 deletions sysdeps/nios2/bits/endian.h
Original file line number Diff line number Diff line change
@@ -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
44 changes: 44 additions & 0 deletions sysdeps/nios2/bits/fenv.h
Original file line number Diff line number Diff line change
@@ -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)
54 changes: 54 additions & 0 deletions sysdeps/nios2/bits/link.h
Original file line number Diff line number Diff line change
@@ -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
Loading

0 comments on commit 522e6ee

Please sign in to comment.