summaryrefslogtreecommitdiff
path: root/libc/sysdeps
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2017-05-24 20:49:02 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2017-06-23 23:46:04 +0200
commit041cdc2769407c4d3869b218ad7ee7638e1c306e (patch)
tree1ea25250d74dcb230cf5feee99226fc080dbd678 /libc/sysdeps
parent58a5ba12bffad5916d9897c2870fc483f1db8282 (diff)
sparc64: add basic support
No NPTL, no LDSO support. Bootup with Busybox Ash in Qemu working. Testuite shows only two failures, but mksh continue/break support doesn't work.
Diffstat (limited to 'libc/sysdeps')
-rw-r--r--libc/sysdeps/linux/common/bits/kernel_sigaction.h8
-rw-r--r--libc/sysdeps/linux/common/mmap.c2
-rw-r--r--libc/sysdeps/linux/sparc64/Makefile13
-rw-r--r--libc/sysdeps/linux/sparc64/Makefile.arch18
-rw-r--r--libc/sysdeps/linux/sparc64/__longjmp.S40
-rw-r--r--libc/sysdeps/linux/sparc64/__start_context.S35
-rw-r--r--libc/sysdeps/linux/sparc64/__syscall_error.c18
-rw-r--r--libc/sysdeps/linux/sparc64/bits/endian.h12
-rw-r--r--libc/sysdeps/linux/sparc64/bits/epoll.h28
-rw-r--r--libc/sysdeps/linux/sparc64/bits/eventfd.h30
-rw-r--r--libc/sysdeps/linux/sparc64/bits/fcntl.h247
-rw-r--r--libc/sysdeps/linux/sparc64/bits/inotify.h28
-rw-r--r--libc/sysdeps/linux/sparc64/bits/ioctls.h35
-rw-r--r--libc/sysdeps/linux/sparc64/bits/ipc.h53
-rw-r--r--libc/sysdeps/linux/sparc64/bits/kernel_stat.h46
-rw-r--r--libc/sysdeps/linux/sparc64/bits/kernel_types.h43
-rw-r--r--libc/sysdeps/linux/sparc64/bits/mathdef.h40
-rw-r--r--libc/sysdeps/linux/sparc64/bits/mathinline.h197
-rw-r--r--libc/sysdeps/linux/sparc64/bits/mman.h106
-rw-r--r--libc/sysdeps/linux/sparc64/bits/msq.h72
-rw-r--r--libc/sysdeps/linux/sparc64/bits/poll.h48
-rw-r--r--libc/sysdeps/linux/sparc64/bits/resource.h239
-rw-r--r--libc/sysdeps/linux/sparc64/bits/sem.h83
-rw-r--r--libc/sysdeps/linux/sparc64/bits/setjmp.h54
-rw-r--r--libc/sysdeps/linux/sparc64/bits/shm.h99
-rw-r--r--libc/sysdeps/linux/sparc64/bits/sigaction.h77
-rw-r--r--libc/sysdeps/linux/sparc64/bits/sigcontextinfo.h30
-rw-r--r--libc/sysdeps/linux/sparc64/bits/siginfo.h321
-rw-r--r--libc/sysdeps/linux/sparc64/bits/signalfd.h28
-rw-r--r--libc/sysdeps/linux/sparc64/bits/signum.h62
-rw-r--r--libc/sysdeps/linux/sparc64/bits/sigstack.h55
-rw-r--r--libc/sysdeps/linux/sparc64/bits/socket_type.h53
-rw-r--r--libc/sysdeps/linux/sparc64/bits/stackinfo.h26
-rw-r--r--libc/sysdeps/linux/sparc64/bits/stat.h167
-rw-r--r--libc/sysdeps/linux/sparc64/bits/syscalls.h116
-rw-r--r--libc/sysdeps/linux/sparc64/bits/termios.h231
-rw-r--r--libc/sysdeps/linux/sparc64/bits/timerfd.h28
-rw-r--r--libc/sysdeps/linux/sparc64/bits/typesizes.h64
-rw-r--r--libc/sysdeps/linux/sparc64/bits/uClibc_arch_features.h41
-rw-r--r--libc/sysdeps/linux/sparc64/bits/uClibc_page.h17
-rw-r--r--libc/sysdeps/linux/sparc64/bits/wordsize.h4
-rw-r--r--libc/sysdeps/linux/sparc64/brk.S101
-rw-r--r--libc/sysdeps/linux/sparc64/bsd-_setjmp.S1
-rw-r--r--libc/sysdeps/linux/sparc64/bsd-setjmp.S1
-rw-r--r--libc/sysdeps/linux/sparc64/clone.S85
-rw-r--r--libc/sysdeps/linux/sparc64/crt1.S116
-rw-r--r--libc/sysdeps/linux/sparc64/crti.S23
-rw-r--r--libc/sysdeps/linux/sparc64/crtn.S17
-rw-r--r--libc/sysdeps/linux/sparc64/fork.S32
-rw-r--r--libc/sysdeps/linux/sparc64/fpu_control.h72
-rw-r--r--libc/sysdeps/linux/sparc64/getcontext.S63
-rw-r--r--libc/sysdeps/linux/sparc64/jmpbuf-offsets.h20
-rw-r--r--libc/sysdeps/linux/sparc64/jmpbuf-unwind.h28
-rw-r--r--libc/sysdeps/linux/sparc64/makecontext.c56
-rw-r--r--libc/sysdeps/linux/sparc64/pipe.S38
-rw-r--r--libc/sysdeps/linux/sparc64/setcontext.S37
-rw-r--r--libc/sysdeps/linux/sparc64/setjmp.S63
-rw-r--r--libc/sysdeps/linux/sparc64/sigaction.c77
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/Makefile33
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/Versions8
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/double.h323
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/e_ilogbl.c79
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/longlong.h1773
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/op-1.h369
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/op-2.h705
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/op-4.h875
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/op-8.h150
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/op-common.h2134
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_add.c44
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_cmp.c48
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_cmpe.c49
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_div.c44
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_dtoq.c45
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_feq.c48
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_fge.c48
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_fgt.c48
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_fle.c48
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_flt.c48
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_fne.c49
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_itoq.c34
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_mul.c49
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_neg.S30
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_qtod.c48
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_qtoi.c46
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_qtos.c49
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_qtoui.c46
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_qtoux.c46
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_qtox.c46
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_sqrt.c41
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_stoq.c45
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_sub.c44
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_uitoq.c34
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_util.c60
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_uxtoq.c34
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/qp_xtoq.c34
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/quad.h330
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/s_frexpl.c51
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/s_scalblnl.c52
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/s_scalbnl.c52
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/sfp-machine.h147
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/single.h199
-rw-r--r--libc/sysdeps/linux/sparc64/soft-fp/soft-fp.h342
-rw-r--r--libc/sysdeps/linux/sparc64/swapcontext.c46
-rw-r--r--libc/sysdeps/linux/sparc64/sys/procfs.h121
-rw-r--r--libc/sysdeps/linux/sparc64/sys/ptrace.h235
-rw-r--r--libc/sysdeps/linux/sparc64/sys/ucontext.h198
-rw-r--r--libc/sysdeps/linux/sparc64/sys/user.h83
-rw-r--r--libc/sysdeps/linux/sparc64/syscall.S38
-rw-r--r--libc/sysdeps/linux/sparc64/sysdep.h139
-rw-r--r--libc/sysdeps/linux/sparc64/ucontext_i.sym6
-rw-r--r--libc/sysdeps/linux/sparc64/vfork.S36
111 files changed, 13472 insertions, 1 deletions
diff --git a/libc/sysdeps/linux/common/bits/kernel_sigaction.h b/libc/sysdeps/linux/common/bits/kernel_sigaction.h
index 5c8726058..21e4c9296 100644
--- a/libc/sysdeps/linux/common/bits/kernel_sigaction.h
+++ b/libc/sysdeps/linux/common/bits/kernel_sigaction.h
@@ -19,6 +19,14 @@ struct old_kernel_sigaction {
unsigned long sa_flags;
void (*sa_restorer)(void);
};
+
+/* This is the sigaction structure from the Linux 2.1.68 kernel. */
+struct kernel_sigaction {
+ __sighandler_t k_sa_handler;
+ unsigned long sa_flags;
+ void (*sa_restorer) (void);
+ sigset_t sa_mask;
+};
#endif
#endif /* _BITS_SIGACTION_STRUCT_H */
diff --git a/libc/sysdeps/linux/common/mmap.c b/libc/sysdeps/linux/common/mmap.c
index cafe756bf..b74fc19ef 100644
--- a/libc/sysdeps/linux/common/mmap.c
+++ b/libc/sysdeps/linux/common/mmap.c
@@ -21,6 +21,7 @@ static _syscall6(void *, _mmap, void *, addr, size_t, len,
#elif defined __NR_mmap2 && defined _syscall6
+
# include <errno.h>
# include <bits/uClibc_page.h>
# ifndef MMAP2_PAGE_SHIFT
@@ -51,7 +52,6 @@ static void *_mmap(void *addr, size_t len, int prot, int flags,
}
#elif defined __NR_mmap
-
# define __NR___syscall_mmap __NR_mmap
static __inline__ _syscall1(void *, __syscall_mmap, unsigned long *, buffer)
diff --git a/libc/sysdeps/linux/sparc64/Makefile b/libc/sysdeps/linux/sparc64/Makefile
new file mode 100644
index 000000000..633c91f3e
--- /dev/null
+++ b/libc/sysdeps/linux/sparc64/Makefile
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../../../../
+top_builddir=../../../../
+all: objs
+include $(top_builddir)Rules.mak
+include Makefile.arch
+include $(top_srcdir)Makerules
diff --git a/libc/sysdeps/linux/sparc64/Makefile.arch b/libc/sysdeps/linux/sparc64/Makefile.arch
new file mode 100644
index 000000000..37b539b3b
--- /dev/null
+++ b/libc/sysdeps/linux/sparc64/Makefile.arch
@@ -0,0 +1,18 @@
+# Makefile for uClibc-ng
+#
+# Copyright (C) 2017 Waldemar Brodkorb <wbx@uclibc-ng.org>
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+
+CSRC-y := __syscall_error.c sigaction.c
+SSRC-y := __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S fork.S \
+ syscall.S pipe.S vfork.S clone.S
+
+CSRC-y += $(addprefix soft-fp/, \
+ qp_add.c qp_cmp.c qp_cmpe.c qp_div.c qp_dtoq.c qp_feq.c qp_fge.c \
+ qp_fgt.c qp_fle.c qp_flt.c qp_fne.c qp_itoq.c qp_mul.c qp_neg.c \
+ qp_qtod.c qp_qtoi.c qp_qtos.c qp_qtoui.c qp_qtoux.c qp_qtox.c \
+ qp_sqrt.c qp_stoq.c qp_sub.c qp_uitoq.c qp_uxtoq.c qp_xtoq.c qp_util.c)
+
+CSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.c
+SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += getcontext.S setcontext.S swapcontext.S \
+ __start_context.S
diff --git a/libc/sysdeps/linux/sparc64/__longjmp.S b/libc/sysdeps/linux/sparc64/__longjmp.S
new file mode 100644
index 000000000..79cefcc9d
--- /dev/null
+++ b/libc/sysdeps/linux/sparc64/__longjmp.S
@@ -0,0 +1,40 @@
+/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ Contributed by Richard Henderson (rth@tamu.edu).
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along