Update.
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/unix/sysv/linux/s390/Dist: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/Dist: ...here. * sysdeps/unix/sysv/linux/s390/Makefile: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: ...here. * sysdeps/unix/sysv/linux/s390/Versions: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/Versions: ...here. * sysdeps/unix/sysv/linux/s390/alphasort64.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c: ...here. * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/bits/fcntl.h: ...here. * sysdeps/unix/sysv/linux/s390/bits/mman.h: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/bits/mman.h: ...here. * sysdeps/unix/sysv/linux/s390/bits/resource.h: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h: ...here. * sysdeps/unix/sysv/linux/s390/bits/stat.h: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/bits/stat.h: ...here. * sysdeps/unix/sysv/linux/s390/chown.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/chown.c: ...here. * sysdeps/unix/sysv/linux/s390/clone.S: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: ...here. * sysdeps/unix/sysv/linux/s390/fchown.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/fchown.c: ...here. * sysdeps/unix/sysv/linux/s390/fcntl.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/fcntl.c: ...here. * sysdeps/unix/sysv/linux/s390/fxstat.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/fxstat.c: ...here. * sysdeps/unix/sysv/linux/s390/getdents64.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c: ...here. * sysdeps/unix/sysv/linux/s390/getegid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/getegid.c: ...here. * sysdeps/unix/sysv/linux/s390/geteuid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/geteuid.c: ...here. * sysdeps/unix/sysv/linux/s390/getgid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/getgid.c: ...here. * sysdeps/unix/sysv/linux/s390/getgroups.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/getgroups.c: ...here. * sysdeps/unix/sysv/linux/s390/getresgid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/getresgid.c: ...here. * sysdeps/unix/sysv/linux/s390/getresuid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/getresuid.c: ...here. * sysdeps/unix/sysv/linux/s390/getrlimit.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/getrlimit.c: ...here. * sysdeps/unix/sysv/linux/s390/getrlimit64.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/getrlimit64.c: ...here. * sysdeps/unix/sysv/linux/s390/getuid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/getuid.c: ...here. * sysdeps/unix/sysv/linux/s390/lchown.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/lchown.c: ...here. * sysdeps/unix/sysv/linux/s390/lockf64.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/lockf64.c: ...here. * sysdeps/unix/sysv/linux/s390/lxstat.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/lxstat.c: ...here. * sysdeps/unix/sysv/linux/s390/mmap.S: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/mmap.S: ...here. * sysdeps/unix/sysv/linux/s390/mmap64.S: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S: ...here. * sysdeps/unix/sysv/linux/s390/msgctl.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/msgctl.c: ...here. * sysdeps/unix/sysv/linux/s390/oldgetrlimit64.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/oldgetrlimit64.c: ...here. * sysdeps/unix/sysv/linux/s390/readdir64.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/readdir64.c: ...here. * sysdeps/unix/sysv/linux/s390/readdir64_r.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/readdir64_r.c: ...here. * sysdeps/unix/sysv/linux/s390/register-dump.h: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/register-dump.h: ...here. * sysdeps/unix/sysv/linux/s390/scandir64.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/scandir64.c: ...here. * sysdeps/unix/sysv/linux/s390/semctl.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/semctl.c: ...here. * sysdeps/unix/sysv/linux/s390/setegid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setegid.c: ...here. * sysdeps/unix/sysv/linux/s390/seteuid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/seteuid.c: ...here. * sysdeps/unix/sysv/linux/s390/setfsgid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setfsgid.c: ...here. * sysdeps/unix/sysv/linux/s390/setfsuid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setfsuid.c: ...here. * sysdeps/unix/sysv/linux/s390/setgid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setgid.c: ...here. * sysdeps/unix/sysv/linux/s390/setgroups.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setgroups.c: ...here. * sysdeps/unix/sysv/linux/s390/setregid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setregid.c: ...here. * sysdeps/unix/sysv/linux/s390/setresgid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setresgid.c: ...here. * sysdeps/unix/sysv/linux/s390/setresuid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setresuid.c: ...here. * sysdeps/unix/sysv/linux/s390/setreuid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setreuid.c: ...here. * sysdeps/unix/sysv/linux/s390/setrlimit.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setrlimit.c: ...here. * sysdeps/unix/sysv/linux/s390/setuid.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/setuid.c: ...here. * sysdeps/unix/sysv/linux/s390/shmctl.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/shmctl.c: ...here. * sysdeps/unix/sysv/linux/s390/socket.S: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/socket.S: ...here. * sysdeps/unix/sysv/linux/s390/sys/procfs.h: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/sys/procfs.h: ...here. * sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: ...here. * sysdeps/unix/sysv/linux/s390/syscall.S: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S: ...here. * sysdeps/unix/sysv/linux/s390/syscalls.list: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list: ...here. * sysdeps/unix/sysv/linux/s390/sysdep.S: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: ...here. * sysdeps/unix/sysv/linux/s390/sysdep.h: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: ...here. * sysdeps/unix/sysv/linux/s390/versionsort64.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c: ...here. * sysdeps/unix/sysv/linux/s390/xstat.c: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/xstat.c: ...here. 2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/unix/sysv/linux/s390/s390-64/Dist: New file. * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: New file. * sysdeps/unix/sysv/linux/s390/s390-64/fstatfs64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/ftruncate64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/fxstat64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/getdents.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/getdents64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/getrlimit64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/glob.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/glob64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/lxstat64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S: New file. * sysdeps/unix/sysv/linux/s390/s390-64/mmap64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/pread64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/pwrite64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/readdir.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/readdir64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/readdir64_r.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/readdir_r.c : New file. * sysdeps/unix/sysv/linux/s390/s390-64/register-dump.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/setrlimit64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/socket.S: New file. * sysdeps/unix/sysv/linux/s390/s390-64/statfs64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S: New file. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: New file. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: New file. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: New file. * sysdeps/unix/sysv/linux/s390/s390-64/truncate64.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/xstat.c: New file. * sysdeps/unix/sysv/linux/s390/s390-64/xstat64.c: New file. 2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/s390/Dist: Move to... * sysdeps/s390/390-32/Dist: ...here. * sysdeps/s390/Implies: Move to... * sysdeps/s390/s390-32/Implies: ...here. * sysdeps/s390/Makefile: Move to... * sysdeps/s390/s390-32/Makefile: ...here. * sysdeps/s390/Versions: Move to... * sysdeps/s390-32/s390/Versions: ...here. * sysdeps/s390/add_n.S: Move to... * sysdeps/s390/s390-32/add_n.S: ...here. * sysdeps/s390/addmul_1.S: Move to... * sysdeps/s390/s390-32/addmul_1.S: ...here. * sysdeps/s390/atomicity.h: Move to... * sysdeps/s390/s390-32/atomicity.h: ...here. * sysdeps/s390/backtrace.c: Move to... * sysdeps/s390/s390-32/backtrace.c: ...here. * sysdeps/s390/bcopy.S: Move to... * sysdeps/s390/s390-32/bcopy.S: ...here. * sysdeps/s390/bits/byteswap.h: Move to... * sysdeps/s390/s390-32/bits/byteswap.h: ...here. * sysdeps/s390/bits/huge_val.h: Move to... * sysdeps/s390/s390-32/bits/huge_val.h: ...here. * sysdeps/s390/bsd-_setjmp.S: Move to... * sysdeps/s390/s390-32/bsd-_setjmp.S: ...here. * sysdeps/s390/bsd-setjmp.S: Move to... * sysdeps/s390/s390-32/bsd-setjmp.S: ...here. * sysdeps/s390/bzero.S: Move to... * sysdeps/s390/s390-32/bzero.S: ...here. * sysdeps/s390/elf/bsd-_setjmp.S: Move to... * sysdeps/s390/s390-32/elf/bsd-_setjmp.S: ...here. * sysdeps/s390/elf/bsd-setjmp.S: Move to... * sysdeps/s390/s390-32/elf/bsd-setjmp.S: ...here. * sysdeps/s390/elf/start.S: Move to... * sysdeps/s390/s390-32/elf/start.S: ...here. * sysdeps/s390/ffs.c: Move to... * sysdeps/s390/s390-32/ffs.c: ...here. * sysdeps/s390/memchr.S: Move to... * sysdeps/s390/s390-32/memchr.S: ...here. * sysdeps/s390/memcpy.S: Move to... * sysdeps/s390/s390-32/memcpy.S: ...here. * sysdeps/s390/memset.S: Move to... * sysdeps/s390/s390-32/memset.S: ...here. * sysdeps/s390/mul_1.S: Move to... * sysdeps/s390/s390-32/mul_1.S: ...here. * sysdeps/s390/s390-mcount.S: Move to... * sysdeps/s390/s390-32/s390-mcount.S: ...here. * sysdeps/s390/strcpy.S: Move to... * sysdeps/s390/s390-32/strcpy.S: ...here. * sysdeps/s390/strncpy.S: Move to... * sysdeps/s390/s390-32/strncpy.S: ...here. * sysdeps/s390/sub_n.S: Move to... * sysdeps/s390/s390-32/sub_n.S: ...here. 2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/s390/s390-64/Dist: New file. * sysdeps/s390/s390-64/Implies: New file. * sysdeps/s390/s390-64/Makefile: New file. * sysdeps/s390/s390-64/__longjmp.c: New file. * sysdeps/s390/s390-64/add_n.S: New file. * sysdeps/s390/s390-64/atomicity.h: New file. * sysdeps/s390/s390-64/backtrace.c: New file. * sysdeps/s390/s390-64/bcopy.S: New file. * sysdeps/s390/s390-64/bits/byteswap.h: New file. * sysdeps/s390/s390-64/bits/huge_val.h: New file. * sysdeps/s390/s390-64/bits/setjmp.h: New file. * sysdeps/s390/s390-64/bits/string.h: New file. * sysdeps/s390/s390-64/bsd-_setjmp.S: New file. * sysdeps/s390/s390-64/bsd-setjmp.S: New file. * sysdeps/s390/s390-64/bzero.S: New file. * sysdeps/s390/s390-64/dl-machine.h: New file. * sysdeps/s390/s390-64/elf/bsd-_setjmp.S: New file. * sysdeps/s390/s390-64/elf/bsd-setjmp.S: New file. * sysdeps/s390/s390-64/elf/setjmp.S: New file. * sysdeps/s390/s390-64/elf/start.S: New file. * sysdeps/s390/s390-64/ffs.c: New file. * sysdeps/s390/s390-64/initfini.c: New file. * sysdeps/s390/s390-64/memchr.S: New file. * sysdeps/s390/s390-64/memcpy.S: New file. * sysdeps/s390/s390-64/memset.S: New file. * sysdeps/s390/s390-64/s390x-mcount.S: New file. * sysdeps/s390/s390-64/setjmp.S: New file. * sysdeps/s390/s390-64/strcpy.S: New file. * sysdeps/s390/s390-64/strncpy.S: New file. * sysdeps/s390/s390-64/sub_n.S: New file. * sysdeps/s390/s390-64/sysdep.h: New file. 2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com> * scripts/config.guess: Add support for Linux on 64 bit S/390. * scripts/config.sub: Likewise. 2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com> * configure.in: Add support for 64 bit S/390. * elf/elf.h: Add new relocations for 64 bit S/390. * shlib-versions: Add rules for Linux on 64 bit S/390. 2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/s390/__longjmp.c: Move to... * sysdeps/s390/s390-32/__longjmp.c: ...here. Add code to load the floating point registers that should be saved according to the ABI. * sysdeps/s390/bits/setjmp.h: Move to... * sysdeps/s390/s390-32/bits/setjmp.h: ...here. Avoid the use of long long in the __jmp_buf type definition. * sysdeps/s390/bits/string.h: Move to... * sysdeps/s390/s390-32/bits/string.h: ...here. Add several missing #ifndef _FORCE_INLINES. * sysdeps/s390/dl-machine.h: Move to... * sysdeps/s390/s390-32/dl-machine.h: ...here. Add a check for the executables EI_CLASS in elf_machine_matches_host. * sysdeps/s390/elf/setjmp.S: Move to... * sysdeps/s390/s390-32/elf/setjmp.S: ...here. Replace branches to globally defined symbol __sigsetjmp by branches to a local label (this avoids the generation of a R_390_PC16DBL relocation in -fpic code). * sysdeps/s390/gmp-mparam.h: Use defines from <bits/wordsize.h> to calculate BITS_PER_MP_LIMB, BYTES_PER_MP_LIMB and BITS_PER_LONGINT. * sysdeps/s390/initfini.c: Move to... * sysdeps/s390/s390-32/initfini.c: ...here. Replace ALIGN with ".align 4,0x07". * sysdeps/s390/setjmp.S: Move to... * sysdeps/s390/s390-32/setjmp.S: ...here. Add code to store the floating point registers that should be saved according to the ABI. * sysdeps/s390/sys/ucontext.h: Remove since it is unused. * sysdeps/unix/sysv/linux/s390/sysdep.h: Move to... * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: ...here. Include sysdeps/s390/s390-32/sysdep.h instead of sysdeps/s390/sysdep.h. 2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com> * configure.in: Change machine=s390 to machine=s390/s390-32. * elf/elf.h: Correct comment for R_390_PLT16DBL.
This commit is contained in:
parent
136d43328b
commit
ffeac41785
323
ChangeLog
323
ChangeLog
@ -1,3 +1,326 @@
|
||||
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/s390/Dist: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/Dist: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/Makefile: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/Makefile: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/Versions: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/Versions: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/alphasort64.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/bits/fcntl.h: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/bits/mman.h: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/bits/mman.h: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/bits/resource.h: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/bits/stat.h: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/bits/stat.h: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/chown.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/chown.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/clone.S: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/clone.S: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/fchown.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/fchown.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/fcntl.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/fcntl.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/fxstat.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/fxstat.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/getdents64.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/getegid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/getegid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/geteuid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/geteuid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/getgid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/getgid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/getgroups.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/getgroups.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/getresgid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/getresgid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/getresuid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/getresuid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/getrlimit.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/getrlimit.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/getrlimit64.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/getrlimit64.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/getuid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/getuid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/lchown.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/lchown.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/lockf64.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/lockf64.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/lxstat.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/lxstat.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/mmap.S: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/mmap.S: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/mmap64.S: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/msgctl.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/msgctl.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/oldgetrlimit64.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/oldgetrlimit64.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/readdir64.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/readdir64.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/readdir64_r.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/readdir64_r.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/register-dump.h: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/register-dump.h: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/scandir64.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/scandir64.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/semctl.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/semctl.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setegid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setegid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/seteuid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/seteuid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setfsgid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setfsgid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setfsuid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setfsuid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setgid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setgid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setgroups.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setgroups.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setregid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setregid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setresgid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setresgid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setresuid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setresuid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setreuid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setreuid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setrlimit.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setrlimit.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/setuid.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/setuid.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/shmctl.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/shmctl.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/socket.S: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/socket.S: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/sys/procfs.h: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/sys/procfs.h: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/syscall.S: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/syscall.S: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/syscalls.list: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/sysdep.S: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/sysdep.h: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/versionsort64.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c: ...here.
|
||||
* sysdeps/unix/sysv/linux/s390/xstat.c: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/xstat.c: ...here.
|
||||
|
||||
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/Dist: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/fstatfs64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/ftruncate64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/fxstat64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/getdents.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/getdents64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/getrlimit64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/glob.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/glob64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/lxstat64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/mmap.S: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/mmap64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/pread64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/pwrite64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/readdir.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/readdir64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/readdir64_r.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/readdir_r.c : New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/register-dump.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/setrlimit64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/socket.S: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/statfs64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/syscall.S: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/truncate64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/xstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-64/xstat64.c: New file.
|
||||
|
||||
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
* sysdeps/s390/Dist: Move to...
|
||||
* sysdeps/s390/390-32/Dist: ...here.
|
||||
* sysdeps/s390/Implies: Move to...
|
||||
* sysdeps/s390/s390-32/Implies: ...here.
|
||||
* sysdeps/s390/Makefile: Move to...
|
||||
* sysdeps/s390/s390-32/Makefile: ...here.
|
||||
* sysdeps/s390/Versions: Move to...
|
||||
* sysdeps/s390-32/s390/Versions: ...here.
|
||||
* sysdeps/s390/add_n.S: Move to...
|
||||
* sysdeps/s390/s390-32/add_n.S: ...here.
|
||||
* sysdeps/s390/addmul_1.S: Move to...
|
||||
* sysdeps/s390/s390-32/addmul_1.S: ...here.
|
||||
* sysdeps/s390/atomicity.h: Move to...
|
||||
* sysdeps/s390/s390-32/atomicity.h: ...here.
|
||||
* sysdeps/s390/backtrace.c: Move to...
|
||||
* sysdeps/s390/s390-32/backtrace.c: ...here.
|
||||
* sysdeps/s390/bcopy.S: Move to...
|
||||
* sysdeps/s390/s390-32/bcopy.S: ...here.
|
||||
* sysdeps/s390/bits/byteswap.h: Move to...
|
||||
* sysdeps/s390/s390-32/bits/byteswap.h: ...here.
|
||||
* sysdeps/s390/bits/huge_val.h: Move to...
|
||||
* sysdeps/s390/s390-32/bits/huge_val.h: ...here.
|
||||
* sysdeps/s390/bsd-_setjmp.S: Move to...
|
||||
* sysdeps/s390/s390-32/bsd-_setjmp.S: ...here.
|
||||
* sysdeps/s390/bsd-setjmp.S: Move to...
|
||||
* sysdeps/s390/s390-32/bsd-setjmp.S: ...here.
|
||||
* sysdeps/s390/bzero.S: Move to...
|
||||
* sysdeps/s390/s390-32/bzero.S: ...here.
|
||||
* sysdeps/s390/elf/bsd-_setjmp.S: Move to...
|
||||
* sysdeps/s390/s390-32/elf/bsd-_setjmp.S: ...here.
|
||||
* sysdeps/s390/elf/bsd-setjmp.S: Move to...
|
||||
* sysdeps/s390/s390-32/elf/bsd-setjmp.S: ...here.
|
||||
* sysdeps/s390/elf/start.S: Move to...
|
||||
* sysdeps/s390/s390-32/elf/start.S: ...here.
|
||||
* sysdeps/s390/ffs.c: Move to...
|
||||
* sysdeps/s390/s390-32/ffs.c: ...here.
|
||||
* sysdeps/s390/memchr.S: Move to...
|
||||
* sysdeps/s390/s390-32/memchr.S: ...here.
|
||||
* sysdeps/s390/memcpy.S: Move to...
|
||||
* sysdeps/s390/s390-32/memcpy.S: ...here.
|
||||
* sysdeps/s390/memset.S: Move to...
|
||||
* sysdeps/s390/s390-32/memset.S: ...here.
|
||||
* sysdeps/s390/mul_1.S: Move to...
|
||||
* sysdeps/s390/s390-32/mul_1.S: ...here.
|
||||
* sysdeps/s390/s390-mcount.S: Move to...
|
||||
* sysdeps/s390/s390-32/s390-mcount.S: ...here.
|
||||
* sysdeps/s390/strcpy.S: Move to...
|
||||
* sysdeps/s390/s390-32/strcpy.S: ...here.
|
||||
* sysdeps/s390/strncpy.S: Move to...
|
||||
* sysdeps/s390/s390-32/strncpy.S: ...here.
|
||||
* sysdeps/s390/sub_n.S: Move to...
|
||||
* sysdeps/s390/s390-32/sub_n.S: ...here.
|
||||
|
||||
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
* sysdeps/s390/s390-64/Dist: New file.
|
||||
* sysdeps/s390/s390-64/Implies: New file.
|
||||
* sysdeps/s390/s390-64/Makefile: New file.
|
||||
* sysdeps/s390/s390-64/__longjmp.c: New file.
|
||||
* sysdeps/s390/s390-64/add_n.S: New file.
|
||||
* sysdeps/s390/s390-64/atomicity.h: New file.
|
||||
* sysdeps/s390/s390-64/backtrace.c: New file.
|
||||
* sysdeps/s390/s390-64/bcopy.S: New file.
|
||||
* sysdeps/s390/s390-64/bits/byteswap.h: New file.
|
||||
* sysdeps/s390/s390-64/bits/huge_val.h: New file.
|
||||
* sysdeps/s390/s390-64/bits/setjmp.h: New file.
|
||||
* sysdeps/s390/s390-64/bits/string.h: New file.
|
||||
* sysdeps/s390/s390-64/bsd-_setjmp.S: New file.
|
||||
* sysdeps/s390/s390-64/bsd-setjmp.S: New file.
|
||||
* sysdeps/s390/s390-64/bzero.S: New file.
|
||||
* sysdeps/s390/s390-64/dl-machine.h: New file.
|
||||
* sysdeps/s390/s390-64/elf/bsd-_setjmp.S: New file.
|
||||
* sysdeps/s390/s390-64/elf/bsd-setjmp.S: New file.
|
||||
* sysdeps/s390/s390-64/elf/setjmp.S: New file.
|
||||
* sysdeps/s390/s390-64/elf/start.S: New file.
|
||||
* sysdeps/s390/s390-64/ffs.c: New file.
|
||||
* sysdeps/s390/s390-64/initfini.c: New file.
|
||||
* sysdeps/s390/s390-64/memchr.S: New file.
|
||||
* sysdeps/s390/s390-64/memcpy.S: New file.
|
||||
* sysdeps/s390/s390-64/memset.S: New file.
|
||||
* sysdeps/s390/s390-64/s390x-mcount.S: New file.
|
||||
* sysdeps/s390/s390-64/setjmp.S: New file.
|
||||
* sysdeps/s390/s390-64/strcpy.S: New file.
|
||||
* sysdeps/s390/s390-64/strncpy.S: New file.
|
||||
* sysdeps/s390/s390-64/sub_n.S: New file.
|
||||
* sysdeps/s390/s390-64/sysdep.h: New file.
|
||||
|
||||
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
* scripts/config.guess: Add support for Linux on 64 bit S/390.
|
||||
* scripts/config.sub: Likewise.
|
||||
|
||||
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
* configure.in: Add support for 64 bit S/390.
|
||||
|
||||
* elf/elf.h: Add new relocations for 64 bit S/390.
|
||||
|
||||
* shlib-versions: Add rules for Linux on 64 bit S/390.
|
||||
|
||||
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
* sysdeps/s390/__longjmp.c: Move to...
|
||||
* sysdeps/s390/s390-32/__longjmp.c: ...here. Add code
|
||||
to load the floating point registers that should be saved
|
||||
according to the ABI.
|
||||
|
||||
* sysdeps/s390/bits/setjmp.h: Move to...
|
||||
* sysdeps/s390/s390-32/bits/setjmp.h: ...here. Avoid
|
||||
the use of long long in the __jmp_buf type definition.
|
||||
|
||||
* sysdeps/s390/bits/string.h: Move to...
|
||||
* sysdeps/s390/s390-32/bits/string.h: ...here. Add several missing
|
||||
#ifndef _FORCE_INLINES.
|
||||
|
||||
* sysdeps/s390/dl-machine.h: Move to...
|
||||
* sysdeps/s390/s390-32/dl-machine.h: ...here. Add a check for the
|
||||
executables EI_CLASS in elf_machine_matches_host.
|
||||
|
||||
* sysdeps/s390/elf/setjmp.S: Move to...
|
||||
* sysdeps/s390/s390-32/elf/setjmp.S: ...here. Replace
|
||||
branches to globally defined symbol __sigsetjmp by branches to
|
||||
a local label (this avoids the generation of a R_390_PC16DBL
|
||||
relocation in -fpic code).
|
||||
|
||||
* sysdeps/s390/gmp-mparam.h: Use defines from <bits/wordsize.h> to
|
||||
calculate BITS_PER_MP_LIMB, BYTES_PER_MP_LIMB and BITS_PER_LONGINT.
|
||||
|
||||
* sysdeps/s390/initfini.c: Move to...
|
||||
* sysdeps/s390/s390-32/initfini.c: ...here. Replace ALIGN with
|
||||
".align 4,0x07".
|
||||
|
||||
* sysdeps/s390/setjmp.S: Move to...
|
||||
* sysdeps/s390/s390-32/setjmp.S: ...here. Add code to store the
|
||||
floating point registers that should be saved according to the ABI.
|
||||
|
||||
* sysdeps/s390/sys/ucontext.h: Remove since it is unused.
|
||||
|
||||
* sysdeps/unix/sysv/linux/s390/sysdep.h: Move to...
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: ...here. Include
|
||||
sysdeps/s390/s390-32/sysdep.h instead of sysdeps/s390/sysdep.h.
|
||||
|
||||
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
* configure.in: Change machine=s390 to machine=s390/s390-32.
|
||||
|
||||
* elf/elf.h: Correct comment for R_390_PLT16DBL.
|
||||
|
||||
2001-03-12 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
|
||||
|
2
scripts/config.guess
vendored
2
scripts/config.guess
vendored
@ -894,6 +894,8 @@ EOF
|
||||
rm -f $dummy.c $dummy
|
||||
elif test "${UNAME_MACHINE}" = "s390"; then
|
||||
echo s390-ibm-linux && exit 0
|
||||
elif test "${UNAME_MACHINE}" = "s390x"; then
|
||||
echo s390x-ibm-linux && exit 0
|
||||
elif test "${UNAME_MACHINE}" = "x86_64"; then
|
||||
echo x86_64-unknown-linux-gnu && exit 0
|
||||
elif test "${UNAME_MACHINE}" = "parisc" -o "${UNAME_MACHINE}" = "hppa"; then
|
||||
|
2
scripts/config.sub
vendored
2
scripts/config.sub
vendored
@ -259,7 +259,7 @@ case $basic_machine in
|
||||
| mips64el-* | mips64orion-* | mips64orionel-* \
|
||||
| mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
|
||||
| mipstx39-* | mipstx39el-* | mcore-* \
|
||||
| f301-* | armv*-* | s390-* | sv1-* | t3e-* \
|
||||
| f301-* | armv*-* | s390-* | s390x-* | sv1-* | t3e-* \
|
||||
| m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
|
||||
| thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \
|
||||
| bs2000-* | tic54x-* | c54x-* | x86_64-*)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* gmp-mparam.h -- Compiler/machine parameter header file.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
This file is part of the GNU MP Library.
|
||||
@ -19,11 +19,13 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#define BITS_PER_MP_LIMB 32
|
||||
#define BYTES_PER_MP_LIMB 4
|
||||
#define BITS_PER_LONGINT 32
|
||||
#define BITS_PER_INT 32
|
||||
#define BITS_PER_SHORTINT 16
|
||||
#define BITS_PER_CHAR 8
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#define BITS_PER_MP_LIMB __WORDSIZE
|
||||
#define BYTES_PER_MP_LIMB (__WORDSIZE / 8)
|
||||
#define BITS_PER_LONGINT __WORDSIZE
|
||||
#define BITS_PER_INT 32
|
||||
#define BITS_PER_SHORTINT 16
|
||||
#define BITS_PER_CHAR 8
|
||||
|
||||
#define IEEE_DOUBLE_BIG_ENDIAN 0
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
@ -31,10 +31,12 @@ __longjmp (__jmp_buf env, int val)
|
||||
{
|
||||
/* Restore registers and jump back. */
|
||||
asm volatile ("lr %%r2,%0\n\t" /* PUT val in grp 2. */
|
||||
"lm %%r6,%%r15,%1\n\t"
|
||||
"ld %%f6,48(%1)\n\t"
|
||||
"ld %%f4,40(%1)\n\t"
|
||||
"lm %%r6,%%r15,0(%1)\n\t"
|
||||
"br %%r14"
|
||||
: : "r" (val == 0 ? 1 : val),
|
||||
"m" (env->gregs[__JB_GPR6]) : "2" );
|
||||
"a" (env) : "2" );
|
||||
|
||||
/* Avoid `volatile function does return' warnings. */
|
||||
for (;;);
|
@ -1,6 +1,6 @@
|
||||
/* Add two limb vectors of the same length > 0 and store sum in a third
|
||||
limb vector.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU MP Library.
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* S390 __mpn_addmul_1 -- Multiply a limb vector with a limb and add
|
||||
the result to a second limb vector.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU MP Library.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Low-level functions for atomic operations. S390 version.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Return backtrace of current program state.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* bcopy -- copy a block from source to destination. For IBM S390
|
||||
This file is part of the GNU C Library.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software ; you can redistribute it and/or
|
@ -1,5 +1,5 @@
|
||||
/* Macros to swap the order of bytes in integer values. s390 version.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* `HUGE_VAL' constants for s390 (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000, 2001 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
|
||||
@ -39,7 +39,7 @@ typedef struct {
|
||||
long int gregs[10];
|
||||
|
||||
/* We save fpu registers 4 and 6. */
|
||||
long long fpregs[2];
|
||||
long fpregs[4];
|
||||
} __jmp_buf[1];
|
||||
|
||||
#endif
|
@ -40,6 +40,7 @@
|
||||
#endif
|
||||
|
||||
#define _HAVE_STRING_ARCH_strlen 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE size_t
|
||||
strlen (__const char *__str)
|
||||
{
|
||||
@ -55,9 +56,11 @@ strlen (__const char *__str)
|
||||
: "cc", "0" );
|
||||
return __len;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Copy SRC to DEST. */
|
||||
#define _HAVE_STRING_ARCH_strcpy 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE char *
|
||||
strcpy (char *__dest, __const char *__src)
|
||||
{
|
||||
@ -70,8 +73,10 @@ strcpy (char *__dest, __const char *__src)
|
||||
: "cc", "memory", "0" );
|
||||
return tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define _HAVE_STRING_ARCH_strncpy 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE char *
|
||||
strncpy (char *__dest, __const char *__src, size_t __n)
|
||||
{
|
||||
@ -94,9 +99,11 @@ strncpy (char *__dest, __const char *__src, size_t __n)
|
||||
: "cc", "memory", "0" );
|
||||
return tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Append SRC onto DEST. */
|
||||
#define _HAVE_STRING_ARCH_strcat 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE char *
|
||||
strcat(char *__dest, const char *__src)
|
||||
{
|
||||
@ -113,9 +120,11 @@ strcat(char *__dest, const char *__src)
|
||||
: "cc", "memory", "0" );
|
||||
return tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Append no more than N characters from SRC onto DEST. */
|
||||
#define _HAVE_STRING_ARCH_strncat 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE char *
|
||||
strncat (char *__dest, __const char *__src, size_t __n)
|
||||
{
|
||||
@ -140,5 +149,6 @@ strncat (char *__dest, __const char *__src, size_t __n)
|
||||
: "cc", "memory", "0" );
|
||||
return tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* Use string inlines && GNU CC. */
|
@ -1,5 +1,5 @@
|
||||
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. s390 version.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. s390 version.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* bzero -- set a block of memory to zero. IBM S390 version
|
||||
This file is part of the GNU C Library.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
@ -35,7 +35,8 @@
|
||||
static inline int
|
||||
elf_machine_matches_host (const Elf32_Ehdr *ehdr)
|
||||
{
|
||||
return (ehdr->e_machine == EM_S390 || ehdr->e_machine == EM_S390_OLD);
|
||||
return (ehdr->e_machine == EM_S390 || ehdr->e_machine == EM_S390_OLD)
|
||||
&& ehdr->e_ident[EI_CLASS] == ELFCLASS32;
|
||||
}
|
||||
|
||||
|
@ -28,15 +28,20 @@
|
||||
ENTRY (setjmp)
|
||||
.weak C_SYMBOL_NAME (setjmp)
|
||||
lhi %r3,1 /* second argument of one */
|
||||
j __sigsetjmp /* branch relativ to __sigsetjmp */
|
||||
j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
|
||||
END (setjmp)
|
||||
|
||||
/* Binary compatibility entry point. */
|
||||
ENTRY(_setjmp)
|
||||
.weak C_SYMBOL_NAME (_setjmp)
|
||||
ENTRY(__setjmp)
|
||||
lhi %r3,0 /* second argument of zero */
|
||||
|
||||
ENTRY(__sigsetjmp)
|
||||
.Linternal_sigsetjmp:
|
||||
stm %r6,%r15,0(%r2) /* store registers in jmp_buf */
|
||||
std %f4,40(%r2)
|
||||
std %f6,48(%r2)
|
||||
#ifdef PIC
|
||||
/* We cannot use the PLT, because it requires that %r12 be set, but
|
||||
we can't save and restore our caller's value. Instead, we do an
|
@ -1,5 +1,5 @@
|
||||
/* Startup code compliant to the ELF s390 ABI.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* ffs -- find first set bit in a word, counted from least significant end.
|
||||
This file is part of the GNU C Library.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
@ -1,5 +1,5 @@
|
||||
/* Special .init and .fini section support for S/390.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it
|
||||
@ -82,7 +82,7 @@ _init:
|
||||
BASR 14,1
|
||||
.L22:
|
||||
#APP
|
||||
ALIGN
|
||||
.align 4,0x07
|
||||
END_INIT
|
||||
|
||||
/*@_init_PROLOG_ENDS*/
|
||||
@ -127,7 +127,7 @@ _fini:
|
||||
L 12,.LC17-.LT2_0(13)
|
||||
AR 12,13
|
||||
#APP
|
||||
ALIGN
|
||||
.align 4,0x07
|
||||
END_FINI
|
||||
|
||||
/*@_fini_PROLOG_ENDS*/
|
@ -1,5 +1,5 @@
|
||||
/* Search a character in a block of memory. For IBM S390
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
@ -1,5 +1,5 @@
|
||||
/* Set a block of memory to some byte value. For IBM S390
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
@ -1,5 +1,5 @@
|
||||
/* Set a block of memory to some byte value. For IBM S390
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
@ -1,6 +1,6 @@
|
||||
/* i80386 __mpn_mul_1 -- Multiply a limb vector with a limb and store
|
||||
/* __mpn_mul_1 -- Multiply a limb vector with a limb and store
|
||||
the result in a second limb vector.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU MP Library.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* S/390-specific implemetation of profiling support.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
@ -30,6 +30,8 @@
|
||||
|
||||
ENTRY(__sigsetjmp)
|
||||
stm %r6,%r15,0(%r2) /* store registers in jmp_buf */
|
||||
std %f4,40(%r2)
|
||||
std %f6,48(%r2)
|
||||
#ifdef PIC
|
||||
/* We cannot use the PLT, because it requires that %r12 be set, but
|
||||
we can't save and restore our caller's value. Instead, we do an
|
@ -1,6 +1,6 @@
|
||||
/* strcpy - copy a string from source to destination. For IBM S390
|
||||
This file is part of the GNU C Library.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software ; you can redistribute it and/or
|
@ -1,7 +1,7 @@
|
||||
/* strncpy - copy at most n characters from a string from source to
|
||||
destination. For IBM S390
|
||||
This file is part of the GNU C Library.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software ; you can redistribute it and/or
|
@ -1,6 +1,6 @@
|
||||
/* i80386 __mpn_sub_n -- Add two limb vectors of the same length > 0 and store
|
||||
/* __mpn_sub_n -- Add two limb vectors of the same length > 0 and store
|
||||
sum in a third limb vector.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU MP Library.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Assembler macros for s390.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
3
sysdeps/s390/s390-64/Dist
Normal file
3
sysdeps/s390/s390-64/Dist
Normal file
@ -0,0 +1,3 @@
|
||||
s390x-mcount.S
|
||||
machine-gmon.h
|
||||
fpu/fenv_libc.h
|
4
sysdeps/s390/s390-64/Implies
Normal file
4
sysdeps/s390/s390-64/Implies
Normal file
@ -0,0 +1,4 @@
|
||||
wordsize-64
|
||||
ieee754
|
||||
ieee754/dbl-64
|
||||
ieee754/flt-32
|
11
sysdeps/s390/s390-64/Makefile
Normal file
11
sysdeps/s390/s390-64/Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
pic-ccflag = -fPIC
|
||||
|
||||
ifeq ($(subdir),gmon)
|
||||
sysdep_routines += s390x-mcount
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
CFLAGS-rtld.c += -Wno-uninitialized -Wno-unused
|
||||
CFLAGS-dl-load.c += -Wno-unused
|
||||
CFLAGS-dl-reloc.c += -Wno-unused
|
||||
endif
|
46
sysdeps/s390/s390-64/__longjmp.c
Normal file
46
sysdeps/s390/s390-64/__longjmp.c
Normal file
@ -0,0 +1,46 @@
|
||||
/* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <sysdep.h>
|
||||
#include <setjmp.h>
|
||||
#include <bits/setjmp.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/* Jump to the position specified by ENV, causing the
|
||||
setjmp call there to return VAL, or 1 if VAL is 0. */
|
||||
void
|
||||
__longjmp (__jmp_buf env, int val)
|
||||
{
|
||||
/* Restore registers and jump back. */
|
||||
asm volatile ("lgr %%r2,%0\n\t" /* Put val in grp 2. */
|
||||
"ld %%f7,104(%1)\n\t"
|
||||
"ld %%f5,96(%1)\n\t"
|
||||
"ld %%f3,88(%1)\n\t"
|
||||
"ld %%f1,80(%1)\n\t"
|
||||
"lmg %%r6,%%r15,0(%1)\n\t"
|
||||
"br %%r14"
|
||||
: : "r" (val == 0 ? 1 : val),
|
||||
"a" (env) : "2" );
|
||||
|
||||
/* Avoid `volatile function does return' warnings. */
|
||||
for (;;);
|
||||
}
|
||||
|
63
sysdeps/s390/s390-64/add_n.S
Normal file
63
sysdeps/s390/s390-64/add_n.S
Normal file
@ -0,0 +1,63 @@
|
||||
/* Add two limb vectors of the same length > 0 and store sum in a third
|
||||
limb vector.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 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 Library General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with the GNU MP Library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA. */
|
||||
|
||||
/*
|
||||
INPUT PARAMETERS
|
||||
res_ptr %r2
|
||||
s1_ptr %r3
|
||||
s2_ptr %r4
|
||||
size %r5
|
||||
*/
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "asm-syntax.h"
|
||||
|
||||
.text
|
||||
ENTRY(__mpn_add_n)
|
||||
stg %r6,48(%r15) # save register 6
|
||||
slgr %r1,%r1
|
||||
lghi %r0,1 # cannot use ahi to add carry, use alr
|
||||
.L0: lg %r6,0(%r1,%r3) # .L0 -> no carry from last add
|
||||
alg %r6,0(%r1,%r4)
|
||||
stg %r6,0(%r1,%r2)
|
||||
la %r1,8(%r1)
|
||||
brc 3,.L3
|
||||
.L1: brct %r5,.L0
|
||||
slgr %r2,%r2 # no last carry to return
|
||||
j .Lexit
|
||||
.L2: lg %r6,0(%r1,%r3) # .L2 -> carry from last add
|
||||
alg %r6,0(%r1,%r4)
|
||||
brc 3,.L4
|
||||
algr %r6,%r0 # no carry yet, add carry from last add
|
||||
stg %r6,0(%r1,%r2)
|
||||
la %r1,8(%r1)
|
||||
brc 12,.L1 # new carry ?
|
||||
.L3: brct %r5,.L2
|
||||
lgr %r2,%r0 # return last carry
|
||||
j .Lexit
|
||||
.L4: algr %r6,%r0 # already a carry, add carry from last add
|
||||
stg %r6,0(%r1,%r2)
|
||||
la %r1,8(%r1)
|
||||
brct %r5,.L2
|
||||
lgr %r2,%r0 # return last carry
|
||||
.Lexit: lg %r6,48(%r15) # restore register 6
|
||||
br %r14
|
||||
END(__mpn_add_n)
|
76
sysdeps/s390/s390-64/atomicity.h
Normal file
76
sysdeps/s390/s390-64/atomicity.h
Normal file
@ -0,0 +1,76 @@
|
||||
/* Low-level functions for atomic operations. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _ATOMICITY_H
|
||||
#define _ATOMICITY_H 1
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
static inline int
|
||||
__attribute__ ((unused))
|
||||
exchange_and_add (volatile uint32_t *mem, int val)
|
||||
{
|
||||
int result;
|
||||
__asm__ __volatile__(
|
||||
" L %0,%2\n"
|
||||
" LA 2,%1\n"
|
||||
"0: LR 0,%0\n"
|
||||
" AR 0,%3\n"
|
||||
" CS %0,0,0(2)\n"
|
||||
" JL 0b"
|
||||
: "=&d" (result), "=m" (*mem)
|
||||
: "1" (*mem), "d" (val) : "0", "1", "2" );
|
||||
return result;
|
||||
}
|
||||
|
||||
static inline void
|
||||
__attribute__ ((unused))
|
||||
atomic_add (volatile uint32_t *mem, int val)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
" LA 2,%0\n"
|
||||
"0: L 0,%1\n"
|
||||
" LR 1,0\n"
|
||||
" AR 1,%2\n"
|
||||
" CS 0,1,0(2)\n"
|
||||
" JL 0b"
|
||||
: "=m" (*mem) : "0" (*mem), "d" (val) : "0", "1", "2" );
|
||||
}
|
||||
|
||||
static inline int
|
||||
__attribute__ ((unused))
|
||||
compare_and_swap (volatile long int *p, long int oldval, long int newval)
|
||||
{
|
||||
int retval;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" la 1,%1\n"
|
||||
" lgr 0,%2\n"
|
||||
" csg 0,%3,0(1)\n"
|
||||
" ipm %0\n"
|
||||
" srl %0,28\n"
|
||||
"0:"
|
||||
: "=&r" (retval), "+m" (*p)
|
||||
: "d" (oldval) , "d" (newval)
|
||||
: "memory", "0", "1", "cc");
|
||||
return !retval;
|
||||
}
|
||||
|
||||
#endif /* atomicity.h */
|
81
sysdeps/s390/s390-64/backtrace.c
Normal file
81
sysdeps/s390/s390-64/backtrace.c
Normal file
@ -0,0 +1,81 @@
|
||||
/* Return backtrace of current program state. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <execinfo.h>
|
||||
#include <stddef.h>
|
||||
|
||||
|
||||
/* This is a global variable set at program start time. It marks the
|
||||
highest used stack address. */
|
||||
extern void *__libc_stack_end;
|
||||
|
||||
|
||||
/* This is the stack layout we see for every non-leaf function.
|
||||
size offset
|
||||
%r15 -> +------------------+
|
||||
8 | back chain | 0
|
||||
8 | end of stack | 8
|
||||
32 | scratch | 16
|
||||
80 | save area r6-r15 | 48
|
||||
16 | save area f4,f6 | 128
|
||||
16 | empty | 144
|
||||
+------------------+
|
||||
r14 in the save area holds the return address.
|
||||
*/
|
||||
|
||||
struct layout
|
||||
{
|
||||
long back_chain;
|
||||
long end_of_stack;
|
||||
long scratch[4];
|
||||
long save_grps[10];
|
||||
long save_fp[2];
|
||||
long empty[2];
|
||||
};
|
||||
|
||||
int
|
||||
__backtrace (array, size)
|
||||
void **array;
|
||||
int size;
|
||||
{
|
||||
/* We assume that all the code is generated with frame pointers set. */
|
||||
struct layout *stack;
|
||||
int cnt = 0;
|
||||
|
||||
asm ("LGR %0,%%r15" : "=d" (stack) );
|
||||
/* We skip the call to this function, it makes no sense to record it. */
|
||||
stack = (struct layout *) stack->back_chain;
|
||||
while (cnt < size)
|
||||
{
|
||||
if (stack == NULL || (void *) stack > __libc_stack_end)
|
||||
/* This means the address is out of range. Note that for the
|
||||
toplevel we see a frame pointer with value NULL which clearly is
|
||||
out of range. */
|
||||
break;
|
||||
|
||||
array[cnt++] = stack->save_grps[9];
|
||||
|
||||
stack = (struct layout *) stack->back_chain;
|
||||
}
|
||||
|
||||
return cnt;
|
||||
}
|
||||
weak_alias (__backtrace, backtrace)
|
||||
|
61
sysdeps/s390/s390-64/bcopy.S
Normal file
61
sysdeps/s390/s390-64/bcopy.S
Normal file
@ -0,0 +1,61 @@
|
||||
/* bcopy -- copy a block from source to destination. 64 bit S/390 version.
|
||||
This file is part of the GNU C Library.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software ; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation ; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* INPUT PARAMETERS
|
||||
%r2 = address of source
|
||||
%r3 = address of destination
|
||||
%r4 = number of bytes to copy. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "asm-syntax.h"
|
||||
|
||||
.text
|
||||
ENTRY(__bcopy)
|
||||
clgr %r2,%r3 # check against destructive overlap
|
||||
jnl .L0
|
||||
lgr %r1,%r2
|
||||
algr %r1,%r4
|
||||
clgr %r1,%r3
|
||||
jh .L2
|
||||
.L0:
|
||||
lgr %r5,%r4 # source length
|
||||
lgr %r4,%r2 # source address
|
||||
sgr %r1,%r1 # set pad byte to zero
|
||||
lgr %r2,%r3 # set destination
|
||||
lgr %r3,%r5 # destination length = source length
|
||||
.L1: mvcle %r2,%r4,0(%r1) # thats it, MVCLE is your friend
|
||||
jo .L1
|
||||
br %r14
|
||||
.L2: # destructive overlay, can not use mvcle
|
||||
lgr %r1,%r2 # bcopy is called with source,dest
|
||||
lgr %r2,%r3 # memmove with dest,source! Oh, well...
|
||||
lgr %r3,%r1
|
||||
#ifdef PIC
|
||||
jg memmove@PLT
|
||||
#else
|
||||
jg memmove
|
||||
#endif
|
||||
|
||||
END(__bcopy)
|
||||
|
||||
#ifndef NO_WEAK_ALIAS
|
||||
weak_alias (__bcopy, bcopy)
|
||||
#endif
|
||||
|
93
sysdeps/s390/s390-64/bits/byteswap.h
Normal file
93
sysdeps/s390/s390-64/bits/byteswap.h
Normal file
@ -0,0 +1,93 @@
|
||||
/* Macros to swap the order of bytes in integer values. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
|
||||
# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
|
||||
#endif
|
||||
|
||||
#define __bswap_constant_16(x) \
|
||||
((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
|
||||
|
||||
/* Swap bytes in 16 bit value. */
|
||||
#if defined __GNUC__ && __GNUC__ >= 2
|
||||
# define __bswap_16(x) \
|
||||
(__extension__ \
|
||||
({ unsigned short int __v; \
|
||||
if (__builtin_constant_p (x)) \
|
||||
__v = __bswap_constant_16 (x); \
|
||||
else { \
|
||||
unsigned short int __tmp = (unsigned short int) (x); \
|
||||
__asm__ __volatile__ ( \
|
||||
"lrvh %0,%1" \
|
||||
: "=&d" (__v) : "m" (__tmp) ); \
|
||||
} \
|
||||
__v; }))
|
||||
#else
|
||||
/* This is better than nothing. */
|
||||
#define __bswap_16(x) __bswap_constant_16 (x)
|
||||
#endif
|
||||
|
||||
/* Swap bytes in 32 bit value. */
|
||||
#define __bswap_constant_32(x) \
|
||||
((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
|
||||
(((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
|
||||
|
||||
#if defined __GNUC__ && __GNUC__ >= 2
|
||||
# define __bswap_32(x) \
|
||||
(__extension__ \
|
||||
({ unsigned int __v; \
|
||||
if (__builtin_constant_p (x)) \
|
||||
__v = __bswap_constant_32 (x); \
|
||||
else { \
|
||||
unsigned int __tmp = (unsigned int) (x); \
|
||||
__asm__ __volatile__ ( \
|
||||
"lrv %0,%1" \
|
||||
: "=&d" (__v) : "m" (__tmp)); \
|
||||
} \
|
||||
__v; }))
|
||||
#else
|
||||
# define __bswap_32(x) __bswap_constant_32 (x)
|
||||
#endif
|
||||
|
||||
/* Swap bytes in 64 bit value. */
|
||||
#define __bswap_constant_64(x) \
|
||||
((((x)&0xff00000000000000) >> 56) | (((x)&0x00ff000000000000) >> 40) | \
|
||||
(((x)&0x0000ff0000000000) >> 24) | (((x)&0x000000ff00000000) >> 8) | \
|
||||
(((x)&0x00000000ff000000) << 8) | (((x)&0x0000000000ff0000) << 24) | \
|
||||
(((x)&0x000000000000ff00) << 40) | (((x)&0x00000000000000ff) << 56))
|
||||
|
||||
#if defined __GNUC__ && __GNUC__ >= 2
|
||||
# define __bswap_64(x) \
|
||||
(__extension__ \
|
||||
({ unsigned long __w; \
|
||||
if (__builtin_constant_p (x)) \
|
||||
__w = __bswap_constant_64 (x); \
|
||||
else { \
|
||||
unsigned long __tmp = (unsigned long) (x); \
|
||||
__asm__ __volatile__ ( \
|
||||
"lrvg %0,%1" \
|
||||
: "=&d" (__w) : "m" (__tmp)); \
|
||||
} \
|
||||
__w; }))
|
||||
#else
|
||||
# define __bswap_64(x) __bswap_constant_64 (x)
|
||||
#endif
|
||||
|
||||
|
69
sysdeps/s390/s390-64/bits/huge_val.h
Normal file
69
sysdeps/s390/s390-64/bits/huge_val.h
Normal file
@ -0,0 +1,69 @@
|
||||
/* `HUGE_VAL' constants for 64 bit S/390 (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _MATH_H
|
||||
# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#if __GNUC_PREREQ(2,96)
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
#else
|
||||
# define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
|
||||
|
||||
# define __huge_val_t union { unsigned char __c[8]; double __d; }
|
||||
# ifdef __GNUC__
|
||||
# define HUGE_VAL (__extension__ \
|
||||
((__huge_val_t) { __c: __HUGE_VAL_bytes }).__d)
|
||||
# else /* Not GCC. */
|
||||
static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
# endif /* GCC. */
|
||||
#endif /* GCC 2.95 */
|
||||
|
||||
|
||||
/* ISO C 99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
# define HUGE_VALF (__extension__ 0x1.0p255f)
|
||||
# define HUGE_VALL (__extension__ 0x1.0p255f)
|
||||
# else
|
||||
# define __HUGE_VALF_bytes { 0x7f, 0x80, 0, 0 }
|
||||
# define __huge_valf_t union { unsigned char __c[4]; float __f; }
|
||||
# ifdef __GNUC__
|
||||
# define HUGE_VALF (__extension__ \
|
||||
((__huge_valf_t) { __c: __HUGE_VALF_bytes }).__f)
|
||||
# else /* Not GCC. */
|
||||
static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
|
||||
# define HUGE_VALF (__huge_valf.__f)
|
||||
# endif /* GCC. */
|
||||
|
||||
/* On 390 there is no 'long double' format. Make it the same as 'double' */
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
|
||||
# endif /* GCC 2.95 */
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
53
sysdeps/s390/s390-64/bits/setjmp.h
Normal file
53
sysdeps/s390/s390-64/bits/setjmp.h
Normal file
@ -0,0 +1,53 @@
|
||||
/* Copyright (C) 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Define the machine-dependent type `jmp_buf'. 64 bit S/390 version. */
|
||||
|
||||
#ifndef __S390_SETJMP_H__
|
||||
#define __S390_SETJMP_H__
|
||||
|
||||
#define __JB_GPR6 0
|
||||
#define __JB_GPR7 1
|
||||
#define __JB_GPR8 2
|
||||
#define __JB_GPR9 3
|
||||
#define __JB_GPR10 4
|
||||
#define __JB_GPR11 5
|
||||
#define __JB_GPR12 6
|
||||
#define __JB_GPR13 7
|
||||
#define __JB_GPR14 8
|
||||
#define __JB_GPR15 9
|
||||
|
||||
#ifndef _ASM
|
||||
|
||||
typedef struct {
|
||||
/* We save registers 6-15. */
|
||||
long int gregs[10];
|
||||
|
||||
/* We save fpu registers 4 and 6. */
|
||||
long fpregs[8];
|
||||
} __jmp_buf[1];
|
||||
|
||||
#endif
|
||||
|
||||
/* Test if longjmp to JMPBUF would unwind the frame
|
||||
containing a local variable at ADDRESS. */
|
||||
#define _JMPBUF_UNWINDS(jmpbuf, address) \
|
||||
((int) (address) < (jmpbuf)->gregs[__JB_GPR15])
|
||||
|
||||
#endif /* __S390_SETJMP_H__ */
|
||||
|
153
sysdeps/s390/s390-64/bits/string.h
Normal file
153
sysdeps/s390/s390-64/bits/string.h
Normal file
@ -0,0 +1,153 @@
|
||||
/* Optimized, inlined string functions. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _STRING_H
|
||||
# error "Never use <bits/string.h> directly; include <string.h> instead."
|
||||
#endif
|
||||
|
||||
/* The s390 processors can access unaligned multi-byte variables. */
|
||||
#define _STRING_ARCH_unaligned 1
|
||||
|
||||
/* We only provide optimizations if the user selects them and if
|
||||
GNU CC is used. */
|
||||
#if !defined __NO_STRING_INLINES && defined __USE_STRING_INLINES \
|
||||
&& defined __GNUC__ && __GNUC__ >= 2
|
||||
|
||||
#ifndef __STRING_INLINE
|
||||
# ifdef __cplusplus
|
||||
# define __STRING_INLINE inline
|
||||
# else
|
||||
# define __STRING_INLINE extern __inline
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define _HAVE_STRING_ARCH_strlen 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE size_t
|
||||
strlen (__const char *__str)
|
||||
{
|
||||
size_t __len;
|
||||
|
||||
__asm__ __volatile__ (" sgr 0,0\n"
|
||||
" lgr %0,%1\n"
|
||||
"0: srst 0,%0\n"
|
||||
" jo 0b\n"
|
||||
" lgr %0,0\n"
|
||||
" sgr %0,%1"
|
||||
: "=&a" (__len) : "a" (__str)
|
||||
: "cc", "0" );
|
||||
return __len;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Copy SRC to DEST. */
|
||||
#define _HAVE_STRING_ARCH_strcpy 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE char *
|
||||
strcpy (char *__dest, __const char *__src)
|
||||
{
|
||||
char *tmp = __dest;
|
||||
|
||||
__asm__ __volatile__ (" sgr 0,0\n"
|
||||
"0: mvst %0,%1\n"
|
||||
" jo 0b"
|
||||
: "+&a" (__dest), "+&a" (__src) :
|
||||
: "cc", "memory", "0" );
|
||||
return tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define _HAVE_STRING_ARCH_strncpy 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE char *
|
||||
strncpy (char *__dest, __const char *__src, size_t __n)
|
||||
{
|
||||
char *tmp = __dest;
|
||||
|
||||
if (__n <= 0)
|
||||
return tmp;
|
||||
__asm__ __volatile (" slgr %0,%1\n"
|
||||
"0: icm 0,1,0(%1)\n"
|
||||
" stc 0,0(%0,%1)\n"
|
||||
" jz 2f\n"
|
||||
" la %1,1(%1)\n"
|
||||
" brct %2,0b\n"
|
||||
" j 3f\n"
|
||||
"1: la %1,1(%1)\n"
|
||||
" stc 0,0(%0,%1)\n"
|
||||
"2: brct %2,1b\n"
|
||||
"3:"
|
||||
: "+&a" (__dest), "+&a" (__src), "+&d" (__n) :
|
||||
: "cc", "memory", "0" );
|
||||
return tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Append SRC onto DEST. */
|
||||
#define _HAVE_STRING_ARCH_strcat 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE char *
|
||||
strcat(char *__dest, const char *__src)
|
||||
{
|
||||
char *tmp = __dest;
|
||||
|
||||
__asm__ __volatile__ (" sgr 0,0\n"
|
||||
"0: srst 0,%0\n"
|
||||
" jo 0b\n"
|
||||
" lgr %0,0\n"
|
||||
" sgr 0,0\n"
|
||||
"1: mvst %0,%1\n"
|
||||
" jo 1b"
|
||||
: "+&a" (__dest), "+&a" (__src) :
|
||||
: "cc", "memory", "0" );
|
||||
return tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Append no more than N characters from SRC onto DEST. */
|
||||
#define _HAVE_STRING_ARCH_strncat 1
|
||||
#ifndef _FORCE_INLINES
|
||||
__STRING_INLINE char *
|
||||
strncat (char *__dest, __const char *__src, size_t __n)
|
||||
{
|
||||
char *tmp = __dest;
|
||||
|
||||
if (__n <= 0)
|
||||
return tmp;
|
||||
__asm__ __volatile__ (" sgr 0,0\n"
|
||||
"0: srst 0,%0\n"
|
||||
" jo 0b\n"
|
||||
" lgr %0,0\n"
|
||||
" slgr %0,%1\n"
|
||||
"1: icm 0,1,0(%1)\n"
|
||||
" stc 0,0(%0,%1)\n"
|
||||
" jz 2f\n"
|
||||
" la %1,1(%1)\n"
|
||||
" brct %2,1b\n"
|
||||
" la %0,0(%0,%1)\n"
|
||||
" xc 0(1,%0),0(%0)\n"
|
||||
"2:"
|
||||
: "+&a" (__dest), "+&a" (__src), "+&d" (__n) :
|
||||
: "cc", "memory", "0" );
|
||||
return tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* Use string inlines && GNU CC. */
|
35
sysdeps/s390/s390-64/bsd-_setjmp.S
Normal file
35
sysdeps/s390/s390-64/bsd-_setjmp.S
Normal file
@ -0,0 +1,35 @@
|
||||
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation ; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
|
||||
We cannot do it in C because it must be a tail-call, so frame-unwinding
|
||||
in setjmp doesn't clobber the state restored by longjmp. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
ENTRY(_setjmp)
|
||||
slgr %r3,%r3 /* Second argument of zero. */
|
||||
#ifdef PIC
|
||||
jg __sigsetjmp@PLT /* Branch to PLT of __sigsetjmp. */
|
||||
#else
|
||||
jg __sigsetjmp /* Branch to __sigsetjmp. */
|
||||
#endif
|
||||
END (_setjmp)
|
||||
|
34
sysdeps/s390/s390-64/bsd-setjmp.S
Normal file
34
sysdeps/s390/s390-64/bsd-setjmp.S
Normal file
@ -0,0 +1,34 @@
|
||||
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation ; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
|
||||
We cannot do it in C because it must be a tail-call, so frame-unwinding
|
||||
in setjmp doesn't clobber the state restored by longjmp. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
ENTRY(setjmp)
|
||||
lghi %r1,1 /* Second argument of one. */
|
||||
#ifdef PIC
|
||||
jg __sigsetjmp@PLT /* Branch to PLT of __sigsetjmp. */
|
||||
#else
|
||||
jg __sigsetjmp /* Branch to __sigsetjmp. */
|
||||
#endif
|
||||
END (setjmp)
|
42
sysdeps/s390/s390-64/bzero.S
Normal file
42
sysdeps/s390/s390-64/bzero.S
Normal file
@ -0,0 +1,42 @@
|
||||
/* bzero -- set a block of memory to zero. 64 bit S/390 version.
|
||||
This file is part of the GNU C Library.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* INPUT PARAMETERS
|
||||
%r2 = address of memory area
|
||||
%r3 = number of bytes to fill. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "asm-syntax.h"
|
||||
|
||||
.text
|
||||
ENTRY(__bzero)
|
||||
ltgr %r3,%r3
|
||||
jz .L1
|
||||
sgr %r1,%r1 # set pad byte to zero
|
||||
sgr %r4,%r4 # no source for MVCLE, only a pad byte
|
||||
sgr %r5,%r5
|
||||
.L0: mvcle %r2,%r4,0(%r1) # thats it, MVCLE is your friend
|
||||
jo .L0
|
||||
.L1: br %r14
|
||||
END(__bzero)
|
||||
|
||||
#ifndef NO_WEAK_ALIAS
|
||||
weak_alias (__bzero, bzero)
|
||||
#endif
|
434
sysdeps/s390/s390-64/dl-machine.h
Normal file
434
sysdeps/s390/s390-64/dl-machine.h
Normal file
@ -0,0 +1,434 @@
|
||||
/* Machine-dependent ELF dynamic relocation inline functions.
|
||||
64 bit S/390 Version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef dl_machine_h
|
||||
#define dl_machine_h
|
||||
|
||||
#define ELF_MACHINE_NAME "s390x"
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <string.h>
|
||||
#include <link.h>
|
||||
|
||||
/* This is an older, now obsolete value. */
|
||||
#define EM_S390_OLD 0xA390
|
||||
|
||||
/* Return nonzero iff E_MACHINE is compatible with the running host. */
|
||||
static inline int
|
||||
elf_machine_matches_host (const Elf64_Ehdr *ehdr)
|
||||
{
|
||||
return (ehdr->e_machine == EM_S390 || ehdr->e_machine == EM_S390_OLD)
|
||||
&& ehdr->e_ident[EI_CLASS] == ELFCLASS64;
|
||||
}
|
||||
|
||||
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
|
||||
first element of the GOT. This must be inlined in a function which
|
||||
uses global data. */
|
||||
|
||||
static inline Elf64_Addr
|
||||
elf_machine_dynamic (void)
|
||||
{
|
||||
register Elf64_Addr *got;
|
||||
|
||||
asm( " larl %0,_GLOBAL_OFFSET_TABLE_\n"
|
||||
: "=&a" (got) : : "0" );
|
||||
|
||||
return *got;
|
||||
}
|
||||
|
||||
/* Return the run-time load address of the shared object. */
|
||||
static inline Elf64_Addr
|
||||
elf_machine_load_address (void)
|
||||
{
|
||||
Elf64_Addr addr;
|
||||
|
||||
asm( " larl %0,_dl_start\n"
|
||||
" larl 1,_GLOBAL_OFFSET_TABLE_\n"
|
||||
" lghi 2,_dl_start@GOT\n"
|
||||
" slg %0,0(2,1)"
|
||||
: "=&d" (addr) : : "1", "2" );
|
||||
return addr;
|
||||
}
|
||||
|
||||
/* 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__ ((unused))
|
||||
elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
|
||||
{
|
||||
extern void _dl_runtime_resolve (Elf64_Word);
|
||||
extern void _dl_runtime_profile (Elf64_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 push an
|
||||
offset into the .rela.plt section, push _GLOBAL_OFFSET_TABLE_[1],
|
||||
and then jump to _GLOBAL_OFFSET_TABLE[2]. */
|
||||
Elf64_Addr *got;
|
||||
got = (Elf64_Addr *) D_PTR (l, l_info[DT_PLTGOT]);
|
||||
got[1] = (Elf64_Addr) l; /* Identify this shared object. */
|
||||
|
||||
/* The got[2] entry contains the address of a function which gets
|
||||
called to get the address of a so far unresolved function and
|
||||
jump to it. The profiling extension of the dynamic linker allows
|
||||
to intercept the calls to collect information. In this case we
|
||||
don't store the address in the GOT so that all future calls also
|
||||
end in this function. */
|
||||
if (__builtin_expect (profile, 0))
|
||||
{
|
||||
got[2] = (Elf64_Addr) &_dl_runtime_profile;
|
||||
|
||||
if (_dl_name_match_p (_dl_profile, l))
|
||||
/* This is the object we are looking for. Say that we really
|
||||
want profiling and the timers are started. */
|
||||
_dl_profile_map = l;
|
||||
}
|
||||
else
|
||||
/* 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] = (Elf64_Addr) &_dl_runtime_resolve;
|
||||
}
|
||||
|
||||
return lazy;
|
||||
}
|
||||
|
||||
/* This code is used in dl-runtime.c to call the `fixup' function
|
||||
and then redirect to the address it returns. */
|
||||
|
||||
/* s390:
|
||||
Arguments are in register.
|
||||
r2 - r7 holds the original parameters for the function call, fixup
|
||||
and trampoline code use r0-r5 and r14-15. For the correct function
|
||||
call r2-r5 and r14-15 must be restored.
|
||||
Arguments from the PLT are stored at 48(r15) and 56(r15)
|
||||
and must be moved to r2 and r3 for the fixup call (see elf32-s390.c
|
||||
in the binutils for the PLT code).
|
||||
Fixup function address in r2.
|
||||
*/
|
||||
#ifndef PROF
|
||||
#define ELF_MACHINE_RUNTIME_TRAMPOLINE \
|
||||
asm ( "\
|
||||
.text\n\
|
||||
.globl _dl_runtime_resolve\n\
|
||||
.type _dl_runtime_resolve, @function\n\
|
||||
.align 16\n\
|
||||
_dl_runtime_resolve:\n\
|
||||
# save registers\n\
|
||||
stmg 2,5,64(15)\n\
|
||||
stg 14,96(15)\n\
|
||||
lgr 0,15\n\
|
||||
aghi 15,-160\n\
|
||||
stg 0,0(15)\n\
|
||||
# load args saved by PLT\n\
|
||||
lmg 2,3,208(15)\n\
|
||||
brasl 14,fixup # call fixup
|
||||
lgr 1,2 # function addr returned in r2\n\
|
||||
# restore registers\n\
|
||||
aghi 15,160\n\
|
||||
lg 14,96(15)\n\
|
||||
lmg 2,5,64(15)\n\
|
||||
br 1\n\
|
||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
||||
\n\
|
||||
.globl _dl_runtime_profile\n\
|
||||
.type _dl_runtime_profile, @function\n\
|
||||
.align 16\n\
|
||||
_dl_runtime_profile:\n\
|
||||
# save registers\n\
|
||||
stmg 2,5,64(15)\n\
|
||||
stg 14,96(15)\n\
|
||||
lgr 0,15\n\
|
||||
aghi 15,-160\n\
|
||||
stg 0,0(15)\n\
|
||||
# load args saved by PLT\n\
|
||||
lmg 2,3,208(15)\n\
|
||||
# load return address as third parameter\n\
|
||||
lgr 4,14\n\
|
||||
brasl 14,profile_fixup # call fixup\n\
|
||||
lgr 1,2 # function addr returned in r2\n\
|
||||
# restore registers\n\
|
||||
aghi 15,160\n\
|
||||
lg 14,96(15)\n\
|
||||
lmg 2,5,64(15)\n\
|
||||
br 1\n\
|
||||
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
||||
");
|
||||
#else
|
||||
#define ELF_MACHINE_RUNTIME_TRAMPOLINE \
|
||||
asm ( "\
|
||||
.text\n\
|
||||
.globl _dl_runtime_resolve\n\
|
||||
.globl _dl_runtime_profile\n\
|
||||
.type _dl_runtime_resolve, @function\n\
|
||||
.type _dl_runtime_profile, @function\n\
|
||||
.align 16\n\
|
||||
_dl_runtime_resolve:\n\
|
||||
_dl_runtime_profile:\n\
|
||||
# save registers\n\
|
||||
stmg 2,5,64(15)\n\
|
||||
stg 14,96(15)\n\
|
||||
lgr 0,15\n\
|
||||
aghi 15,-160\n\
|
||||
stg 0,0(15)\n\
|
||||
# load args saved by PLT\n\
|
||||
lmg 2,3,208(15)\n\
|
||||
# load return address as third parameter\n\
|
||||
lgr 4,14\n\
|
||||
brasl 14,profile_fixup # call fixup\n\
|
||||
lgr 1,2 # function addr returned in r2\n\
|
||||
# restore registers\n\
|
||||
aghi 15,160\n\
|
||||
lg 14,96(15)\n\
|
||||
lmg 2,5,64(15)\n\
|
||||
br 1\n\
|
||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
||||
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
||||
");
|
||||
#endif
|
||||
|
||||
/* 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 ("\n\
|
||||
.text\n\
|
||||
.align 4\n\
|
||||
.globl _start\n\
|
||||
.globl _dl_start_user\n\
|
||||
_start:\n\
|
||||
lgr %r2,%r15\n\
|
||||
# Alloc stack frame\n\
|
||||
aghi %r15,-160\n\
|
||||
# Set the back chain to zero\n\
|
||||
xc 0(8,%r15),0(%r15)\n\
|
||||
# Call _dl_start with %r2 pointing to arg on stack\n\
|
||||
brasl %r14,_dl_start # call _dl_start\n\
|
||||
_dl_start_user:\n\
|
||||
# Save the user entry point address in %r8.\n\
|
||||
lgr %r8,%r2\n\
|
||||
# Point %r12 at the GOT.\n\
|
||||
larl %r12,_GLOBAL_OFFSET_TABLE_\n\
|
||||
# Store the highest stack address\n\
|
||||
lghi %r1,__libc_stack_end@GOT
|
||||
lg %r1,0(%r1,%r12)\n\
|
||||
stg %r15, 0(%r1)\n\
|
||||
# See if we were run as a command with the executable file\n\
|
||||
# name as an extra leading argument.\n\
|
||||
lghi %r1,_dl_skip_args@GOT
|
||||
lg %r1,0(%r1,%r12)\n\
|
||||
lgf %r1,0(%r1) # load _dl_skip_args\n\
|
||||
# Get the original argument count.\n\
|
||||
lg %r0,160(%r15)\n\
|
||||
# Subtract _dl_skip_args from it.\n\
|
||||
sgr %r0,%r1\n\
|
||||
# Adjust the stack pointer to skip _dl_skip_args words.\n\
|
||||
sllg %r1,%r1,3\n\
|
||||
agr %r15,%r1\n\
|
||||
# Set the back chain to zero again\n\
|
||||
xc 0(8,%r15),0(%r15)\n\
|
||||
# Store back the modified argument count.\n\
|
||||
stg %r0,160(%r15)\n\
|
||||
# The special initializer gets called with the stack just\n\
|
||||
# as the application's entry point will see it; it can\n\
|
||||
# switch stacks if it moves these contents over.\n\
|
||||
" RTLD_START_SPECIAL_INIT "\n\
|
||||
# Call the function to run the initializers.\n\
|
||||
# Load the parameters:\n\
|
||||
# (%r2, %r3, %r4, %r5) = (_dl_loaded, argc, argv, envp)\n\
|
||||
lghi %r2,_dl_loaded@GOT
|
||||
lg %r2,0(%r2,%r12)\n\
|
||||
lg %r2,0(%r2)\n\
|
||||
lg %r3,160(%r15)\n\
|
||||
la %r4,168(%r15)\n\
|
||||
lgr %r5,%r3\n\
|
||||
sllg %r5,%r5,3\n\
|
||||
la %r5,176(%r5,%r15)\n\
|
||||
brasl %r14,_dl_init@PLT\n
|
||||
# Pass our finalizer function to the user in %r14, as per ELF ABI.\n\
|
||||
lghi %r14,_dl_fini@GOT
|
||||
lg %r14,0(%r14,%r12)\n\
|
||||
# Free stack frame\n\
|
||||
aghi %r15,160\n\
|
||||
# Jump to the user's entry point (saved in %r8).\n\
|
||||
br %r8\n\
|
||||
");
|
||||
|
||||
#ifndef RTLD_START_SPECIAL_INIT
|
||||
#define RTLD_START_SPECIAL_INIT /* nothing */
|
||||
#endif
|
||||
|
||||
/* Nonzero iff TYPE should not be allowed to resolve to one of
|
||||
the main executable's symbols, as for a COPY reloc. */
|
||||
#define elf_machine_lookup_noexec_p(type) ((type) == R_390_COPY)
|
||||
|
||||
/* Nonzero iff TYPE describes relocation of a PLT entry, so
|
||||
PLT entries should not be allowed to define the value. */
|
||||
#define elf_machine_lookup_noplt_p(type) ((type) == R_390_JMP_SLOT)
|
||||
|
||||
/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
|
||||
#define ELF_MACHINE_JMP_SLOT R_390_JMP_SLOT
|
||||
|
||||
/* The 64 bit S/390 never uses Elf64_Rel relocations. */
|
||||
#define ELF_MACHINE_NO_REL 1
|
||||
|
||||
/* We define an initialization functions. This is called very early in
|
||||
_dl_sysdep_start. */
|
||||
#define DL_PLATFORM_INIT dl_platform_init ()
|
||||
|
||||
extern const char *_dl_platform;
|
||||
|
||||
static inline void __attribute__ ((unused))
|
||||
dl_platform_init (void)
|
||||
{
|
||||
if (_dl_platform != NULL && *_dl_platform == '\0')
|
||||
/* Avoid an empty string which would disturb us. */
|
||||
_dl_platform = NULL;
|
||||
}
|
||||
|
||||
static inline Elf64_Addr
|
||||
elf_machine_fixup_plt (struct link_map *map, lookup_t t,
|
||||
const Elf64_Rela *reloc,
|
||||
Elf64_Addr *reloc_addr, Elf64_Addr value)
|
||||
{
|
||||
return *reloc_addr = value;
|
||||
}
|
||||
|
||||
/* Return the final value of a plt relocation. */
|
||||
static inline Elf64_Addr
|
||||
elf_machine_plt_value (struct link_map *map, const Elf64_Rela *reloc,
|
||||
Elf64_Addr value)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
#endif /* !dl_machine_h */
|
||||
|
||||
#ifdef RESOLVE
|
||||
|
||||
/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
|
||||
MAP is the object containing the reloc. */
|
||||
|
||||
static inline void
|
||||
elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
|
||||
const Elf64_Sym *sym, const struct r_found_version *version,
|
||||
Elf64_Addr *const reloc_addr)
|
||||
{
|
||||
if (ELF64_R_TYPE (reloc->r_info) == R_390_RELATIVE) {
|
||||
#ifndef RTLD_BOOTSTRAP
|
||||
weak_extern (_dl_rtld_map);
|
||||
if (map != &_dl_rtld_map) /* Already done in rtld itself. */
|
||||
#endif
|
||||
*reloc_addr = map->l_addr + reloc->r_addend;
|
||||
}
|
||||
else if (ELF64_R_TYPE (reloc->r_info) != R_390_NONE)
|
||||
{
|
||||
const Elf64_Sym *const refsym = sym;
|
||||
Elf64_Addr value = RESOLVE (&sym, version, ELF64_R_TYPE (reloc->r_info));
|
||||
if (sym)
|
||||
value += sym->st_value;
|
||||
|
||||
switch (ELF64_R_TYPE (reloc->r_info))
|
||||
{
|
||||
case R_390_GLOB_DAT:
|
||||
case R_390_JMP_SLOT:
|
||||
*reloc_addr = value + reloc->r_addend;
|
||||
break;
|
||||
#ifndef RTLD_BOOTSTRAP
|
||||
case R_390_COPY:
|
||||
if (sym == NULL)
|
||||
/* This can happen in trace mode if an object could not be
|
||||
found. */
|
||||
break;
|
||||
if (__builtin_expect (sym->st_size > refsym->st_size, 0)
|
||||
|| (__builtin_expect (sym->st_size < refsym->st_size, 0)
|
||||
&& __builtin_expect (_dl_verbose, 0)))
|
||||
{
|
||||
const char *strtab;
|
||||
|
||||
strtab = (const char *) D_PTR (map,l_info[DT_STRTAB]);
|
||||
_dl_error_printf ("\
|
||||
%s: Symbol `%s' has different size in shared object, consider re-linking\n",
|
||||
_dl_argv[0] ?: "<program name unknown>",
|
||||
strtab + refsym->st_name);
|
||||
}
|
||||
memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
|
||||
refsym->st_size));
|
||||
break;
|
||||
case R_390_64:
|
||||
*reloc_addr = value + reloc->r_addend;
|
||||
break;
|
||||
case R_390_32:
|
||||
*(unsigned int *) reloc_addr = value + reloc->r_addend;
|
||||
break;
|
||||
case R_390_16:
|
||||
*(unsigned short *) reloc_addr = value + reloc->r_addend;
|
||||
break;
|
||||
case R_390_8:
|
||||
*(char *) reloc_addr = value + reloc->r_addend;
|
||||
break;
|
||||
case R_390_PC64:
|
||||
*reloc_addr = value +reloc->r_addend - (Elf64_Addr) reloc_addr;
|
||||
break;
|
||||
case R_390_PC32DBL:
|
||||
case R_390_PLT32DBL:
|
||||
*(unsigned int *) reloc_addr = (unsigned int)
|
||||
((int) (value + reloc->r_addend - (Elf64_Addr) reloc_addr) >> 1);
|
||||
break;
|
||||
case R_390_PC32:
|
||||
*(unsigned int *) reloc_addr =
|
||||
value + reloc->r_addend - (Elf64_Addr) reloc_addr;
|
||||
break;
|
||||
case R_390_PC16DBL:
|
||||
case R_390_PLT16DBL:
|
||||
*(unsigned short *) reloc_addr = (unsigned short)
|
||||
((short) (value + reloc->r_addend - (Elf64_Addr) reloc_addr) >> 1);
|
||||
break;
|
||||
case R_390_PC16:
|
||||
*(unsigned short *) reloc_addr =
|
||||
value + reloc->r_addend - (Elf64_Addr) reloc_addr;
|
||||
break;
|
||||
#endif
|
||||
#if !defined(RTLD_BOOTSTRAP) || defined(_NDEBUG)
|
||||
default:
|
||||
/* We add these checks in the version to relocate ld.so only
|
||||
if we are still debugging. */
|
||||
_dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 0);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void
|
||||
elf_machine_lazy_rel (struct link_map *map,
|
||||
Elf64_Addr l_addr, const Elf64_Rela *reloc)
|
||||
{
|
||||
Elf64_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
|
||||
/* Check for unexpected PLT reloc type. */
|
||||
if (__builtin_expect (ELF64_R_TYPE (reloc->r_info), R_390_JMP_SLOT)
|
||||
== R_390_JMP_SLOT)
|
||||
*reloc_addr += l_addr;
|
||||
else
|
||||
_dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 1);
|
||||
}
|
||||
|
||||
#endif /* RESOLVE */
|
1
sysdeps/s390/s390-64/elf/bsd-_setjmp.S
Normal file
1
sysdeps/s390/s390-64/elf/bsd-_setjmp.S
Normal file
@ -0,0 +1 @@
|
||||
/* We don't need any code here since the setjmp.S file contains it. */
|
1
sysdeps/s390/s390-64/elf/bsd-setjmp.S
Normal file
1
sysdeps/s390/s390-64/elf/bsd-setjmp.S
Normal file
@ -0,0 +1 @@
|
||||
/* We don't need any code here since the setjmp.S file contains it. */
|
53
sysdeps/s390/s390-64/elf/setjmp.S
Normal file
53
sysdeps/s390/s390-64/elf/setjmp.S
Normal file
@ -0,0 +1,53 @@
|
||||
/* setjmp for 64 bit S/390, ELF version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ASM
|
||||
#define _SETJMP_H
|
||||
#include <bits/setjmp.h>
|
||||
|
||||
/* We include the BSD entry points here as well but we make
|
||||
them weak. */
|
||||
ENTRY (setjmp)
|
||||
.weak C_SYMBOL_NAME (setjmp)
|
||||
lghi %r3,1 /* Second argument of one. */
|
||||
j .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp. */
|
||||
END (setjmp)
|
||||
|
||||
/* Binary compatibility entry point. */
|
||||
ENTRY(_setjmp)
|
||||
.weak C_SYMBOL_NAME (_setjmp)
|
||||
ENTRY(__setjmp)
|
||||
slgr %r3,%r3 /* Second argument of zero. */
|
||||
|
||||
ENTRY(__sigsetjmp)
|
||||
.Linternal_sigsetjmp:
|
||||
stmg %r6,%r15,0(%r2) /* Store registers in jmp_buf. */
|
||||
std %f1,80(%r2)
|
||||
std %f3,88(%r2)
|
||||
std %f5,96(%r2)
|
||||
std %f7,104(%r2)
|
||||
#ifdef PIC
|
||||
jg __sigjmp_save@PLT /* Branch to PLT of __sigsetjmp. */
|
||||
#else
|
||||
jg __sigjmp_save
|
||||
#endif
|
||||
END (__sigsetjmp)
|
||||
|
84
sysdeps/s390/s390-64/elf/start.S
Normal file
84
sysdeps/s390/s390-64/elf/start.S
Normal file
@ -0,0 +1,84 @@
|
||||
/* Startup code compliant to the 64 bit S/390 ELF ABI.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/*
|
||||
This is the canonical entry point, usually the first thing in the text
|
||||
segment. Most registers' values are unspecified, except for:
|
||||
|
||||
%r14 Contains a function pointer to be registered with `atexit'.
|
||||
This is how the dynamic linker arranges to have DT_FINI
|
||||
functions called for shared libraries that have been loaded
|
||||
before this code runs.
|
||||
|
||||
%r15 The stack contains the arguments and environment:
|
||||
0(%r15) argc
|
||||
8(%r15) argv[0]
|
||||
...
|
||||
(8*argc)(%r15) NULL
|
||||
(8*(argc+1))(%r15) envp[0]
|
||||
...
|
||||
NULL
|
||||
*/
|
||||
|
||||
.text
|
||||
.globl _start
|
||||
_start:
|
||||
/* Load argc and argv from stack. */
|
||||
la %r4,8(%r15) # get argv
|
||||
lg %r3,0(%r15) # get argc
|
||||
|
||||
/* Align the stack to a double word boundary. */
|
||||
lghi %r0,-16
|
||||
ngr %r15,%r0
|
||||
|
||||
/* Setup a stack frame and a parameter area. */
|
||||
aghi %r15,-176 # make room on stack
|
||||
xc 0(8,%r15),0(%r15) # clear back-chain
|
||||
|
||||
/* Set up arguments for __libc_start_main:
|
||||
main, argc, argv, envp, _init, _fini, rtld_fini, stack_end
|
||||
Note that envp will be determined later in __libc_start_main.
|
||||
*/
|
||||
stmg %r14,%r15,160(%r15) # store rtld_fini/stack_end to parameter area
|
||||
la %r7,160(%r15)
|
||||
larl %r6,_fini # load pointer to _fini
|
||||
larl %r5,_init # load pointer to _init
|
||||
larl %r2,main # load pointer to main
|
||||
|
||||
/* Ok, now branch to the libc main routine. */
|
||||
brasl %r14,__libc_start_main
|
||||
|
||||
/* Crash if __libc_start_main returns. */
|
||||
.word 0
|
||||
|
||||
/* FIXME: FPU flags or what ?!? */
|
||||
|
||||
.section .rodata
|
||||
.globl _fp_hw
|
||||
.long 3
|
||||
.size _fp_hw, 4
|
||||
|
||||
/* 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
|
68
sysdeps/s390/s390-64/ffs.c
Normal file
68
sysdeps/s390/s390-64/ffs.c
Normal file
@ -0,0 +1,68 @@
|
||||
/* ffs -- find first set bit in a word, counted from least significant end.
|
||||
64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#define ffsl __something_else
|
||||
#include <string.h>
|
||||
|
||||
#undef ffs
|
||||
|
||||
/* ffs: find first bit set. This is defined the same way as
|
||||
the libc and compiler builtin ffs routines, therefore
|
||||
differs in spirit from the above ffz (man ffs). */
|
||||
|
||||
int
|
||||
__ffs (x)
|
||||
int x;
|
||||
{
|
||||
int r;
|
||||
|
||||
if (x == 0)
|
||||
return 0;
|
||||
__asm__(" lr %%r1,%1\n"
|
||||
" sr %0,%0\n"
|
||||
" tml %%r1,0xFFFF\n"
|
||||
" jnz 0f\n"
|
||||
" ahi %0,16\n"
|
||||
" srl %%r1,16\n"
|
||||
"0: tml %%r1,0x00FF\n"
|
||||
" jnz 1f\n"
|
||||
" ahi %0,8\n"
|
||||
" srl %%r1,8\n"
|
||||
"1: tml %%r1,0x000F\n"
|
||||
" jnz 2f\n"
|
||||
" ahi %0,4\n"
|
||||
" srl %%r1,4\n"
|
||||
"2: tml %%r1,0x0003\n"
|
||||
" jnz 3f\n"
|
||||
" ahi %0,2\n"
|
||||
" srl %%r1,2\n"
|
||||
"3: tml %%r1,0x0001\n"
|
||||
" jnz 4f\n"
|
||||
" ahi %0,1\n"
|
||||
"4:"
|
||||
: "=&d" (r) : "d" (x) : "cc", "1" );
|
||||
return r+1;
|
||||
}
|
||||
|
||||
weak_alias (__ffs, ffs)
|
||||
#undef ffsl
|
||||
weak_alias (__ffs, ffsl)
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* Special .init and .fini section support for S/390.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
/* Special .init and .fini section support for 64 bit S/390.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it
|
||||
@ -62,29 +63,16 @@ _init:
|
||||
# has varargs 0
|
||||
# incoming args (stack) 0
|
||||
# function length 36
|
||||
STM 6,15,24(15)
|
||||
BRAS 13,.LTN1_0
|
||||
.LT1_0:
|
||||
.LC13:
|
||||
.long __pthread_initialize_minimal@PLT-.LT1_0
|
||||
.LC14:
|
||||
.long __gmon_start__@GOT
|
||||
.LC15:
|
||||
.long _GLOBAL_OFFSET_TABLE_-.LT1_0
|
||||
.LTN1_0:
|
||||
LR 1,15
|
||||
AHI 15,-96
|
||||
ST 1,0(15)
|
||||
L 12,.LC15-.LT1_0(13)
|
||||
AR 12,13
|
||||
L 1,.LC13-.LT1_0(13)
|
||||
LA 1,0(1,13)
|
||||
BASR 14,1
|
||||
L 1,.LC14-.LT1_0(13)
|
||||
L 1,0(1,12)
|
||||
LTR 1,1
|
||||
JE .L22
|
||||
BASR 14,1
|
||||
STMG 6,15,48(15)
|
||||
LGR 1,15
|
||||
AGHI 15,-160
|
||||
STG 1,0(15)
|
||||
LARL 12,_GLOBAL_OFFSET_TABLE_
|
||||
LGHI 1,__gmon_start__@GOT
|
||||
LG 1,0(1,12)
|
||||
LTGR 1,1
|
||||
JE .L22
|
||||
BASR 14,1
|
||||
.L22:
|
||||
#APP
|
||||
.align 4,0x07
|
||||
@ -97,8 +85,8 @@ _init:
|
||||
.section .init
|
||||
#NO_APP
|
||||
.align 4
|
||||
L 4,152(15)
|
||||
LM 6,15,120(15)
|
||||
LG 4,272(15)
|
||||
LMG 6,15,208(15)
|
||||
BR 4
|
||||
#APP
|
||||
END_INIT
|
||||
@ -120,17 +108,11 @@ _fini:
|
||||
# has varargs 0
|
||||
# incoming args (stack) 0
|
||||
# function length 30
|
||||
STM 6,15,24(15)
|
||||
BRAS 13,.LTN2_0
|
||||
.LT2_0:
|
||||
.LC17:
|
||||
.long _GLOBAL_OFFSET_TABLE_-.LT2_0
|
||||
.LTN2_0:
|
||||
LR 1,15
|
||||
AHI 15,-96
|
||||
ST 1,0(15)
|
||||
L 12,.LC17-.LT2_0(13)
|
||||
AR 12,13
|
||||
STMG 6,15,48(15)
|
||||
LGR 1,15
|
||||
AGHI 15,-160
|
||||
STG 1,0(15)
|
||||
LARL 12,_GLOBAL_OFFSET_TABLE_
|
||||
#APP
|
||||
.align 4,0x07
|
||||
END_FINI
|
||||
@ -142,8 +124,8 @@ _fini:
|
||||
.section .fini
|
||||
#NO_APP
|
||||
.align 4
|
||||
L 4,152(15)
|
||||
LM 6,15,120(15)
|
||||
LG 4,272(15)
|
||||
LMG 6,15,208(15)
|
||||
BR 4
|
||||
#APP
|
||||
END_FINI
|
40
sysdeps/s390/s390-64/memchr.S
Normal file
40
sysdeps/s390/s390-64/memchr.S
Normal file
@ -0,0 +1,40 @@
|
||||
/* Search a character in a block of memory. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* INPUT PARAMETERS
|
||||
%r2 = address to memory area
|
||||
%r3 = character to find
|
||||
%r4 = number of bytes to search. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "asm-syntax.h"
|
||||
|
||||
.text
|
||||
ENTRY(memchr)
|
||||
lghi %r0,0xff
|
||||
ngr %r0,%r3
|
||||
lgr %r1,%r2
|
||||
la %r2,0(%r4,%r1)
|
||||
0: srst %r2,%r1
|
||||
jo 0b
|
||||
brc 13,1f
|
||||
slgr %r2,%r2
|
||||
1: br %r14
|
||||
END(memchr)
|
41
sysdeps/s390/s390-64/memcpy.S
Normal file
41
sysdeps/s390/s390-64/memcpy.S
Normal file
@ -0,0 +1,41 @@
|
||||
/* Set a block of memory to some byte value. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* INPUT PARAMETERS
|
||||
%r2 = address to destination memory area
|
||||
%r3 = address to source memory area
|
||||
%r4 = number of bytes to copy. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "asm-syntax.h"
|
||||
|
||||
.text
|
||||
ENTRY(memcpy)
|
||||
ltgr %r5,%r4
|
||||
jz .L1
|
||||
lgr %r4,%r3 # %r4/%r5 = source ptr/len
|
||||
lgr %r3,%r5 # %r2/%r3 = dest ptr/len
|
||||
lgr %r0,%r2 # save source address
|
||||
.L0: mvcle %r2,%r4,0 # thats it, MVCLE is your friend
|
||||
jo .L0
|
||||
lgr %r2,%r0 # return value is source address
|
||||
.L1:
|
||||
br %r14
|
||||
END(memset)
|
43
sysdeps/s390/s390-64/memset.S
Normal file
43
sysdeps/s390/s390-64/memset.S
Normal file
@ -0,0 +1,43 @@
|
||||
/* Set a block of memory to some byte value. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* INPUT PARAMETERS
|
||||
%r2 = address of memory area
|
||||
%r3 = byte to fill memory with
|
||||
%r4 = number of bytes to fill. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "asm-syntax.h"
|
||||
|
||||
.text
|
||||
ENTRY(memset)
|
||||
ltgr %r4,%r4
|
||||
jz .L1
|
||||
lgr %r0,%r2 # save source address
|
||||
lgr %r1,%r3 # move pad byte to R1
|
||||
lgr %r3,%r4
|
||||
sgr %r4,%r4 # no source for MVCLE, only a pad byte
|
||||
sgr %r5,%r5
|
||||
.L0: mvcle %r2,%r4,0(%r1) # thats it, MVCLE is your friend
|
||||
jo .L0
|
||||
lgr %r2,%r0 # return value is source address
|
||||
.L1:
|
||||
br %r14
|
||||
END(memset)
|
72
sysdeps/s390/s390-64/s390x-mcount.S
Normal file
72
sysdeps/s390/s390-64/s390x-mcount.S
Normal file
@ -0,0 +1,72 @@
|
||||
/* 64 bit S/390-specific implemetation of profiling support.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
/* How profiling works on 64 bit S/390:
|
||||
On the start of each function _mcount is called with the address of a
|
||||
data word in %r1 (initialized to 0, used for counting). The compiler
|
||||
with the option -p generates code of the form:
|
||||
|
||||
STM 6,15,24(15)
|
||||
BRAS 13,.LTN0_0
|
||||
.LT0_0:
|
||||
.LC13: .long .LP0
|
||||
.data
|
||||
.align 4
|
||||
.LP0: .long 0
|
||||
.text
|
||||
# function profiler
|
||||
stg 14,4(15)
|
||||
lg 1,.LC13-.LT0_0(13)
|
||||
brasl 14,_mcount
|
||||
lg 14,4(15)
|
||||
|
||||
The _mcount implementation now has to call __mcount_internal with the
|
||||
address of .LP0 as first parameter and the return address as second
|
||||
parameter. &.LP0 was loaded to %r1 and the return address is in %r14.
|
||||
_mcount may not modify any register. */
|
||||
|
||||
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(_mcount)
|
||||
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
|
||||
.align ALIGNARG(4)
|
||||
C_LABEL(_mcount)
|
||||
/* Save the caller-clobbered registers. */
|
||||
aghi %r15,-224
|
||||
stmg %r14,%r5,160(%r15)
|
||||
lg %r2,232(%r15) # callers address = first parameter
|
||||
la %r2,0(%r2) # clear bit 0
|
||||
la %r3,0(%r14) # callees address = second parameter
|
||||
|
||||
#ifdef PIC
|
||||
brasl %r14,__mcount_internal@PLT
|
||||
#else
|
||||
brasl %r14,__mcount_internal
|
||||
#endif
|
||||
|
||||
/* Pop the saved registers. Please note that `mcount' has no
|
||||
return value. */
|
||||
lmg %r14,%r5,160(%r15)
|
||||
ahi %r15,224
|
||||
br %r14
|
||||
ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount))
|
||||
|
||||
#undef mcount
|
||||
weak_alias(_mcount, mcount)
|
43
sysdeps/s390/s390-64/setjmp.S
Normal file
43
sysdeps/s390/s390-64/setjmp.S
Normal file
@ -0,0 +1,43 @@
|
||||
/* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _ASM
|
||||
#define _ASM
|
||||
#endif
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <bits/setjmp.h>
|
||||
|
||||
/* Save the current program position in ENV and return 0. */
|
||||
/* R2 = pointer to jmp_buf, R3 = savemask. */
|
||||
|
||||
ENTRY(__sigsetjmp)
|
||||
stmg %r6,%r15,0(%r2) /* Store registers in jmp_buf. */
|
||||
std %f1,80(%r2)
|
||||
std %f3,88(%r2)
|
||||
std %f5,96(%r2)
|
||||
std %f7,104(%r2)
|
||||
#ifdef PIC
|
||||
jg __sigjmp_save@PLT /* Tail-call __sigjmp_save. */
|
||||
#else
|
||||
jg __sigjmp_save /* Tail-call __sigjmp_save. */
|
||||
#endif
|
||||
END (__sigsetjmp)
|
||||
|
||||
|
35
sysdeps/s390/s390-64/strcpy.S
Normal file
35
sysdeps/s390/s390-64/strcpy.S
Normal file
@ -0,0 +1,35 @@
|
||||
/* strcpy - copy a string from source to destination. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation ; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* INPUT PARAMETERS
|
||||
%r2 = address of destination
|
||||
%r3 = address of source. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "asm-syntax.h"
|
||||
|
||||
.text
|
||||
ENTRY(strcpy)
|
||||
slgr %r0,%r0
|
||||
lgr %r1,%r2
|
||||
0: mvst %r1,%r3
|
||||
jo 0b
|
||||
br %r14
|
||||
END(strcpy)
|
90
sysdeps/s390/s390-64/strncpy.S
Normal file
90
sysdeps/s390/s390-64/strncpy.S
Normal file
@ -0,0 +1,90 @@
|
||||
/* strncpy - copy at most n characters from a string from source to
|
||||
destination. 64 bit S/390 version
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* INPUT PARAMETERS
|
||||
%r2 = address of destination (dst)
|
||||
%r3 = address of source (src)
|
||||
%r4 = max of bytes to copy. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "asm-syntax.h"
|
||||
|
||||
ENTRY(strncpy)
|
||||
.text
|
||||
stg %r2,48(%r15) # save dst pointer
|
||||
slgr %r2,%r3 # %r3 points to src, %r2+%r3 to dst
|
||||
lghi %r1,7
|
||||
ngr %r1,%r4 # last 3 bits of # bytes
|
||||
srlg %r4,%r4,3
|
||||
ltgr %r4,%r4 # less than 8 bytes to copy ?
|
||||
jz .L1
|
||||
bras %r5,.L0 # enter loop & load address of a 0
|
||||
.long 0
|
||||
.L0: icmh %r0,8,0(%r3) # first byte
|
||||
jz .L3
|
||||
icmh %r0,4,1(%r3) # second byte
|
||||
jz .L4
|
||||
icmh %r0,2,2(%r3) # third byte
|
||||
jz .L5
|
||||
icmh %r0,1,3(%r3) # fourth byte
|
||||
jz .L6
|
||||
icm %r0,8,4(%r3) # fifth byte
|
||||
jz .L7
|
||||
icm %r0,4,5(%r3) # sixth byte
|
||||
jz .L8
|
||||
icm %r0,2,6(%r3) # seventh byte
|
||||
jz .L9
|
||||
icm %r0,1,7(%r3) # eigth byte
|
||||
jz .L10
|
||||
stg %r0,0(%r2,%r3) # store all eight to dest.
|
||||
la %r3,8(%r3)
|
||||
brct %r4,.L0
|
||||
.L1: ltgr %r1,%r1
|
||||
jz .Lexit
|
||||
.L2: icm %r0,1,0(%r3)
|
||||
stc %r0,0(%r2,%r3)
|
||||
la %r3,1(%r3)
|
||||
jz .L11
|
||||
brct %r1,.L2
|
||||
j .Lexit
|
||||
.L3: icmh %r0,4,0(%r5)
|
||||
.L4: icmh %r0,2,0(%r5)
|
||||
.L5: icmh %r0,1,0(%r5)
|
||||
.L6: icm %r0,8,0(%r5)
|
||||
.L7: icm %r0,4,0(%r5)
|
||||
.L8: icm %r0,2,0(%r5)
|
||||
.L9: icm %r0,1,0(%r5)
|
||||
.L10: stg %r0,0(%r2,%r3)
|
||||
la %r3,8(%r3)
|
||||
aghi %r4,-1
|
||||
j .L12
|
||||
.L11: aghi %r1,-1
|
||||
.L12: sllg %r4,%r4,3
|
||||
algr %r4,%r1
|
||||
algr %r2,%r3 # start of dst area to be zeroed
|
||||
lgr %r3,%r4
|
||||
slgr %r4,%r4
|
||||
slgr %r5,%r5
|
||||
.L13: mvcle %r2,%r4,0 # pad dst with zeroes
|
||||
jo .L13
|
||||
.Lexit: lg %r2,48(%r15) # return dst pointer
|
||||
br %r14
|
||||
END(strncpy)
|
60
sysdeps/s390/s390-64/sub_n.S
Normal file
60
sysdeps/s390/s390-64/sub_n.S
Normal file
@ -0,0 +1,60 @@
|
||||
/* __mpn_sub_n -- Add two limb vectors of the same length > 0 and store
|
||||
sum in a third limb vector. 64 bit S/390 version.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU MP Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* INPUT PARAMETERS
|
||||
%r2 = res_ptr
|
||||
%r3 = s1_ptr
|
||||
%r4 = s2_ptr
|
||||
%r5 = size. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "asm-syntax.h"
|
||||
|
||||
ENTRY(__mpn_sub_n)
|
||||
stg %r6,48(%r15) # save register 6
|
||||
sgr %r1,%r1
|
||||
lghi %r0,1 # cannot use ahi to add carry, use slr
|
||||
.L0: lg %r6,0(%r1,%r3) # .L0 -> no carry from last sub
|
||||
slg %r6,0(%r1,%r4)
|
||||
stg %r6,0(%r1,%r2)
|
||||
la %r1,8(%r1)
|
||||
brc 4,.L3
|
||||
.L1: brct %r5,.L0
|
||||
slgr %r2,%r2 # no last carry to return
|
||||
j .Lexit
|
||||
.L2: lg %r6,0(%r1,%r3) # .L2 -> carry from last sub
|
||||
slg %r6,0(%r1,%r4)
|
||||
brc 4,.L4
|
||||
slgr %r6,%r0 # no carry yet, add carry from last sub
|
||||
stg %r6,0(%r1,%r2)
|
||||
la %r1,8(%r1)
|
||||
brc 11,.L1 # new carry ?
|
||||
.L3: brct %r5,.L2
|
||||
lgr %r2,%r0 # return last carry
|
||||
j .Lexit
|
||||
.L4: slgr %r6,%r0 # already a carry, add carry from last sub
|
||||
stg %r6,0(%r1,%r2)
|
||||
la %r1,8(%r1)
|
||||
brct %r5,.L2
|
||||
lgr %r2,%r0 # return last carry
|
||||
.Lexit: lg %r6,48(%r15) # restore register 6
|
||||
br %r14
|
||||
END(__mpn_sub_n)
|
112
sysdeps/s390/s390-64/sysdep.h
Normal file
112
sysdeps/s390/s390-64/sysdep.h
Normal file
@ -0,0 +1,112 @@
|
||||
/* Assembler macros for 64 bit S/390.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdeps/generic/sysdep.h>
|
||||
|
||||
#ifdef __ASSEMBLER__
|
||||
|
||||
/* Syntactic details of assembler. */
|
||||
|
||||
#ifdef HAVE_ELF
|
||||
|
||||
/* ELF uses byte-counts for .align, most others use log2 of count of bytes. */
|
||||
#define ALIGNARG(log2) 1<<log2
|
||||
/* For ELF we need the `.type' directive to make shared libs work right. */
|
||||
#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
|
||||
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name;
|
||||
|
||||
/* In ELF C symbols are asm symbols. */
|
||||
#undef NO_UNDERSCORES
|
||||
#define NO_UNDERSCORES
|
||||
|
||||
#else
|
||||
|
||||
#define ALIGNARG(log2) log2
|
||||
#define ASM_TYPE_DIRECTIVE(name,type) /* Nothing is specified. */
|
||||
#define ASM_SIZE_DIRECTIVE(name) /* Nothing is specified. */
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Define an entry point visible from C. */
|
||||
#define ENTRY(name) \
|
||||
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||
.align ALIGNARG(2); \
|
||||
C_LABEL(name) \
|
||||
CALL_MCOUNT
|
||||
|
||||
#undef END
|
||||
#define END(name) \
|
||||
ASM_SIZE_DIRECTIVE(name) \
|
||||
|
||||
/* If compiled for profiling, call `mcount' at the start of each function. */
|
||||
#ifdef PROF
|
||||
#ifdef PIC
|
||||
#define CALL_MCOUNT \
|
||||
lgr 0,14 ; larl 1,0f ; brasl 14,_mcount@PLT ; lgr 14,0 ; \
|
||||
.data ; .align 4 ; 0: .long 0 ; .text ;
|
||||
#else
|
||||
#define CALL_MCOUNT \
|
||||
lgr 0,14 ; larl 1,0f ; brasl 14,_mcount ; lgr 14,0 ; \
|
||||
.data ; .align 4 ; 0: .long 0 ; .text ;
|
||||
#endif
|
||||
#else
|
||||
#define CALL_MCOUNT /* Do nothing. */
|
||||
#endif
|
||||
|
||||
#ifdef NO_UNDERSCORES
|
||||
/* Since C identifiers are not normally prefixed with an underscore
|
||||
on this system, the asm identifier `syscall_error' intrudes on the
|
||||
C name space. Make sure we use an innocuous name. */
|
||||
#define syscall_error __syscall_error
|
||||
#define mcount _mcount
|
||||
#endif
|
||||
|
||||
#define PSEUDO(name, syscall_name, args) \
|
||||
lose: SYSCALL_PIC_SETUP \
|
||||
JUMPTARGET(syscall_error) \
|
||||
.globl syscall_error; \
|
||||
ENTRY (name) \
|
||||
DO_CALL (syscall_name, args); \
|
||||
jm lose
|
||||
|
||||
#undef PSEUDO_END
|
||||
#define PSEUDO_END(name) \
|
||||
END (name)
|
||||
|
||||
#ifdef PIC
|
||||
#define JUMPTARGET(name) \
|
||||
brasl name##@PLT
|
||||
#define SYSCALL_PIC_SETUP \
|
||||
larl %r12,_GLOBAL_OFFSET_TABLE_
|
||||
#else
|
||||
#define JUMPTARGET(name) \
|
||||
brasl name
|
||||
#define SYSCALL_PIC_SETUP /* Nothing. */
|
||||
#endif
|
||||
|
||||
/* Local label name for asm code. */
|
||||
#ifndef L
|
||||
#define L(name) name
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
@ -1,95 +0,0 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* System V/s390 ABI compliant context switching support. */
|
||||
|
||||
#ifndef _SYS_UCONTEXT_H
|
||||
#define _SYS_UCONTEXT_H 1
|
||||
|
||||
#include <features.h>
|
||||
#include <signal.h>
|
||||
|
||||
/* Type for general register. */
|
||||
typedef int greg_t;
|
||||
|
||||
/* Number of general registers. */
|
||||
#define NGREG 16
|
||||
|
||||
/* Number of each register is the `greg_t gregs[NREG]' array. */
|
||||
enum
|
||||
{
|
||||
R_GPR0 = 0,
|
||||
#define R_GPR0 R_GPR0
|
||||
R_GPR1 = 1,
|
||||
#define R_GPR1 R_GPR1
|
||||
R_GPR2 = 2,
|
||||
#define R_GPR2 R_GPR2
|
||||
R_GPR3 = 3,
|
||||
#define R_GPR3 R_GPR3
|
||||
R_GPR4 = 4,
|
||||
#define R_GPR4 R_GPR4
|
||||
R_GPR5 = 5,
|
||||
#define R_GPR5 R_GPR5
|
||||
R_GPR6 = 6,
|
||||
#define R_GPR6 R_GPR6
|
||||
R_GPR7 = 7,
|
||||
#define R_GPR7 R_GPR7
|
||||
R_GPR8 = 8,
|
||||
#define R_GPR8 R_GPR8
|
||||
R_GPR9 = 9,
|
||||
#define R_GPR9 R_GPR9
|
||||
R_GPRA = 10,
|
||||
#define R_GPRA R_GPRA
|
||||
R_GPRB = 11,
|
||||
#define R_GPRB R_GPRB
|
||||
R_GPRC = 12,
|
||||
#define R_GPRC R_GPRC
|
||||
R_GPRD = 13,
|
||||
#define R_GPRD R_GPRD
|
||||
R_GPRE = 14,
|
||||
#define R_GPRE R_GPRE
|
||||
R_GPRF = 15
|
||||
#define R_GPRF R_GPRF
|
||||
};
|
||||
|
||||
/* Structure to describe FPU registers. */
|
||||
typedef long long fpreg_t;
|
||||
|
||||
/* Context to describe whole processor state. */
|
||||
typedef struct
|
||||
{
|
||||
int version;
|
||||
greg_t gregs[NGREG];
|
||||
fpreg_t fpregs[16];
|
||||
} mcontext_t;
|
||||
|
||||
#define MCONTEXT_VERSION 1
|
||||
|
||||
/* Userlevel context. */
|
||||
typedef struct ucontext
|
||||
{
|
||||
unsigned long int uc_flags;
|
||||
struct ucontext *uc_links;
|
||||
__sigset_t uc_sigmask;
|
||||
stack_t uc_stack;
|
||||
mcontext_t uc_mcontext;
|
||||
long int uc_filler[170];
|
||||
} ucontext_t;
|
||||
|
||||
#endif /* sys/ucontext.h */
|
@ -1,5 +1,5 @@
|
||||
/* O_*, F_*, FD_* bit values for Linux.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 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
|
@ -1,5 +1,5 @@
|
||||
/* Definitions for POSIX memory map interface. Linux/s390 version.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 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
|
@ -1,5 +1,5 @@
|
||||
/* Bit values & structures for resource limits. Linux version.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 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
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000, 2001 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
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000, 2001 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
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#define EINVAL 22
|
||||
#define EINVAL 22
|
||||
|
||||
.text
|
||||
ENTRY(__mmap)
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
This file is part of the GNU C Library.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user