diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2017-05-24 20:49:02 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2017-06-23 23:46:04 +0200 |
commit | 041cdc2769407c4d3869b218ad7ee7638e1c306e (patch) | |
tree | 1ea25250d74dcb230cf5feee99226fc080dbd678 | |
parent | 58a5ba12bffad5916d9897c2870fc483f1db8282 (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.
113 files changed, 13498 insertions, 1 deletions
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in index 53dff1c82..59ef31c47 100644 --- a/extra/Configs/Config.in +++ b/extra/Configs/Config.in @@ -38,6 +38,7 @@ choice default TARGET_powerpc if DESIRED_TARGET_ARCH = "powerpc" default TARGET_sh if DESIRED_TARGET_ARCH = "sh" default TARGET_sparc if DESIRED_TARGET_ARCH = "sparc" + default TARGET_sparc64 if DESIRED_TARGET_ARCH = "sparc64" default TARGET_x86_64 if DESIRED_TARGET_ARCH = "x86_64" default TARGET_xtensa if DESIRED_TARGET_ARCH = "xtensa" help @@ -117,6 +118,9 @@ config TARGET_sh config TARGET_sparc bool "sparc" +config TARGET_sparc64 + bool "sparc64" + config TARGET_x86_64 bool "x86_64" @@ -216,6 +220,10 @@ if TARGET_sparc source "extra/Configs/Config.sparc" endif +if TARGET_sparc64 +source "extra/Configs/Config.sparc64" +endif + if TARGET_x86_64 source "extra/Configs/Config.x86_64" endif diff --git a/extra/Configs/Config.sparc64 b/extra/Configs/Config.sparc64 new file mode 100644 index 000000000..8e162263c --- /dev/null +++ b/extra/Configs/Config.sparc64 @@ -0,0 +1,18 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config TARGET_ARCH + string + default "sparc64" + +config FORCE_OPTIONS_FOR_ARCH + bool + default y + select ARCH_BIG_ENDIAN + select ARCH_HAS_UCONTEXT + select ARCH_HAS_MMU + select ARCH_HAS_NO_LDSO + select ARCH_HAS_DEPRECATED_SYSCALLS + 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/Makef |