Compare commits

..

3 Commits

Author SHA1 Message Date
Baligh Uddin
f7a9a681ab Merge "resolved conflicts for merge of 05292dd6 to jb-mr1-dev" into jb-mr1-dev 2013-09-25 02:31:09 +00:00
Elliott Hughes
1d69ab1de9 resolved conflicts for merge of 05292dd6 to jb-mr1-dev
Change-Id: I051cad5dc3c985f11c52708f4487e64ea45ca617
2013-09-24 15:52:16 -07:00
Jean-Baptiste Queru
e5412a9a95 Reconcile with jb-mr1-release - do not merge 2013-03-11 12:15:11 -07:00
1435 changed files with 31168 additions and 28865 deletions

View File

@@ -8,13 +8,68 @@ libc_common_src_files := \
$(syscall_src) \
unistd/abort.c \
unistd/alarm.c \
unistd/brk.c \
unistd/daemon.c \
unistd/eventfd.c \
unistd/exec.c \
unistd/fcntl.c \
unistd/fnmatch.c \
unistd/fstatfs.c \
unistd/ftime.c \
unistd/ftok.c \
unistd/getdtablesize.c \
unistd/gethostname.c \
unistd/getopt_long.c \
unistd/getpgrp.c \
unistd/getpriority.c \
unistd/getpt.c \
unistd/initgroups.c \
unistd/isatty.c \
unistd/issetugid.c \
unistd/killpg.c \
unistd/lseek64.c \
unistd/mmap.c \
unistd/open.c \
unistd/openat.c \
unistd/opendir.c \
unistd/pathconf.c \
unistd/perror.c \
unistd/popen.c \
unistd/pread.c \
unistd/pselect.c \
unistd/ptsname.c \
unistd/ptsname_r.c \
unistd/pwrite.c \
unistd/raise.c \
unistd/reboot.c \
unistd/recv.c \
unistd/sbrk.c \
unistd/send.c \
unistd/setegid.c \
unistd/setuid.c \
unistd/seteuid.c \
unistd/setreuid.c \
unistd/setresuid.c \
unistd/setpgrp.c \
unistd/sigblock.c \
unistd/siginterrupt.c \
unistd/siglist.c \
unistd/signal.c \
unistd/signame.c \
unistd/sigsetmask.c \
unistd/sigsuspend.c \
unistd/sigwait.c \
unistd/sleep.c \
unistd/statfs.c \
unistd/syslog.c \
unistd/system.c \
unistd/tcgetpgrp.c \
unistd/tcsetpgrp.c \
unistd/time.c \
unistd/umount.c \
unistd/unlockpt.c \
unistd/usleep.c \
unistd/wait.c \
stdio/asprintf.c \
stdio/clrerr.c \
stdio/fclose.c \
@@ -29,6 +84,7 @@ libc_common_src_files := \
stdio/fileno.c \
stdio/findfp.c \
stdio/flags.c \
stdio/flockfile.c \
stdio/fopen.c \
stdio/fprintf.c \
stdio/fpurge.c \
@@ -67,6 +123,7 @@ libc_common_src_files := \
stdio/sscanf.c \
stdio/stdio.c \
stdio/tempnam.c \
stdio/tmpfile.c \
stdio/tmpnam.c \
stdio/ungetc.c \
stdio/vasprintf.c \
@@ -79,13 +136,37 @@ libc_common_src_files := \
stdio/vsscanf.c \
stdio/wbuf.c \
stdio/wsetup.c \
stdio/__fgets_chk.c \
stdio/__snprintf_chk.c \
stdio/__sprintf_chk.c \
stdio/__vsnprintf_chk.c \
stdio/__vsprintf_chk.c \
stdlib/_rand48.c \
stdlib/assert.c \
stdlib/atexit.c \
stdlib/atoi.c \
stdlib/atol.c \
stdlib/atoll.c \
stdlib/bsearch.c \
stdlib/ctype_.c \
stdlib/div.c \
stdlib/exit.c \
stdlib/getenv.c \
stdlib/jrand48.c \
stdlib/ldiv.c \
stdlib/lldiv.c \
stdlib/locale.c \
stdlib/lrand48.c \
stdlib/mrand48.c \
stdlib/nrand48.c \
stdlib/putenv.c \
stdlib/qsort.c \
stdlib/seed48.c \
stdlib/setenv.c \
stdlib/setjmperr.c \
stdlib/srand48.c \
stdlib/strntoimax.c \
stdlib/strntoumax.c \
stdlib/strtod.c \
stdlib/strtoimax.c \
stdlib/strtol.c \
@@ -95,28 +176,50 @@ libc_common_src_files := \
stdlib/strtoumax.c \
stdlib/tolower_.c \
stdlib/toupper_.c \
stdlib/wchar.c \
string/index.c \
string/memccpy.c \
string/memchr.c \
string/memmem.c \
string/memrchr.c \
string/memswap.c \
string/strcasecmp.c \
string/strcasestr.c \
string/strcat.c \
string/strchr.c \
string/strcoll.c \
string/strcspn.c \
string/strdup.c \
string/strlcat.c \
string/strlcpy.c \
string/strncat.c \
string/strncpy.c \
string/strndup.c \
string/strnlen.c \
string/strpbrk.c \
string/strrchr.c \
string/strsep.c \
string/strspn.c \
string/strstr.c \
string/strtok.c \
string/strtotimeval.c \
string/__memcpy_chk.c \
string/__memmove_chk.c \
string/__memset_chk.c \
string/__strcat_chk.c \
string/__strcpy_chk.c \
string/__strlcat_chk.c \
string/__strlcpy_chk.c \
string/__strlen_chk.c \
string/__strncat_chk.c \
string/__strncpy_chk.c \
wchar/wcpcpy.c \
wchar/wcpncpy.c \
wchar/wcscasecmp.c \
wchar/wcscat.c \
wchar/wcschr.c \
wchar/wcscmp.c \
wchar/wcscoll.c \
wchar/wcscpy.c \
wchar/wcscspn.c \
wchar/wcsdup.c \
@@ -140,103 +243,64 @@ libc_common_src_files := \
wchar/wmemcpy.c \
wchar/wmemmove.c \
wchar/wmemset.c \
inet/bindresvport.c \
inet/inet_addr.c \
inet/inet_aton.c \
inet/inet_ntoa.c \
inet/inet_ntop.c \
inet/inet_pton.c \
inet/ether_aton.c \
inet/ether_ntoa.c \
tzcode/asctime.c \
tzcode/difftime.c \
tzcode/localtime.c \
tzcode/strftime.c \
tzcode/strptime.c \
bionic/arc4random.c \
bionic/atoi.c \
bionic/atol.c \
bionic/atoll.c \
bionic/bindresvport.c \
bionic/__set_errno.c \
bionic/bionic_clone.c \
bionic/clearenv.c \
bionic/cpuacct.c \
bionic/daemon.c \
bionic/arc4random.c \
bionic/basename.c \
bionic/basename_r.c \
bionic/clearenv.c \
bionic/dirname.c \
bionic/dirname_r.c \
bionic/drand48.c \
bionic/erand48.c \
bionic/err.c \
bionic/ether_aton.c \
bionic/ether_ntoa.c \
bionic/fcntl.c \
bionic/fdprintf.c \
bionic/flockfile.c \
bionic/fork.c \
bionic/fstatfs.c \
bionic/ftime.c \
bionic/ftok.c \
bionic/fts.c \
bionic/getdtablesize.c \
bionic/gethostname.c \
bionic/getpgrp.c \
bionic/getpriority.c \
bionic/getpt.c \
bionic/if_indextoname.c \
bionic/getcwd.cpp \
bionic/if_nametoindex.c \
bionic/initgroups.c \
bionic/if_indextoname.c \
bionic/ioctl.c \
bionic/isatty.c \
bionic/issetugid.c \
bionic/ldexp.c \
bionic/libc_init_common.c \
bionic/logd_write.c \
bionic/lseek64.c \
bionic/md5.c \
bionic/memchr.c \
bionic/memmem.c \
bionic/memmove_words.c \
bionic/memrchr.c \
bionic/memswap.c \
bionic/mmap.c \
bionic/openat.c \
bionic/open.c \
bionic/pathconf.c \
bionic/perror.c \
bionic/pread.c \
bionic/pselect.c \
bionic/ptsname.c \
bionic/ptsname_r.c \
bionic/pututline.c \
bionic/pwrite.c \
bionic/realpath.c \
bionic/reboot.c \
bionic/recv.c \
bionic/sched_cpualloc.c \
bionic/sched_cpucount.c \
bionic/sched_getaffinity.c \
bionic/sched_getcpu.c \
bionic/sched_cpualloc.c \
bionic/sched_cpucount.c \
bionic/semaphore.c \
bionic/send.c \
bionic/setegid.c \
bionic/seteuid.c \
bionic/setpgrp.c \
bionic/setresuid.c \
bionic/setreuid.c \
bionic/setuid.c \
bionic/sigblock.c \
bionic/siginterrupt.c \
bionic/siglist.c \
bionic/signal.c \
bionic/signame.c \
bionic/sigsetmask.c \
bionic/sigsuspend.c \
bionic/sleep.c \
bionic/statfs.c \
bionic/strndup.c \
bionic/strnlen.c \
bionic/strntoimax.c \
bionic/strntoumax.c \
bionic/strtotimeval.c \
bionic/sha1.c \
bionic/strerror.cpp \
bionic/strerror_r.cpp \
bionic/strsignal.cpp \
bionic/stubs.cpp \
bionic/system_properties.c \
bionic/tcgetpgrp.c \
bionic/tcsetpgrp.c \
bionic/thread_atexit.c \
bionic/tdestroy.c \
bionic/time64.c \
bionic/umount.c \
bionic/unlockpt.c \
bionic/usleep.c \
bionic/thread_atexit.c \
bionic/utime.c \
bionic/utmp.c \
bionic/wait.c \
bionic/wcscoll.c \
netbsd/gethnamaddr.c \
netbsd/isc/ev_timers.c \
netbsd/isc/ev_streams.c \
netbsd/inet/nsap_addr.c \
netbsd/resolv/__dn_comp.c \
netbsd/resolv/__res_close.c \
@@ -265,87 +329,20 @@ libc_common_src_files := \
netbsd/nameser/ns_print.c \
netbsd/nameser/ns_samedomain.c \
libc_bionic_src_files := \
bionic/assert.cpp \
bionic/brk.cpp \
bionic/debug_format.cpp \
bionic/dirent.cpp \
bionic/eventfd.cpp \
bionic/__fgets_chk.cpp \
bionic/getauxval.cpp \
bionic/getcwd.cpp \
bionic/libc_init_common.cpp \
bionic/libgen.cpp \
bionic/__memcpy_chk.cpp \
bionic/__memmove_chk.cpp \
bionic/__memset_chk.cpp \
bionic/pthread_sigmask.cpp \
bionic/raise.cpp \
bionic/sbrk.cpp \
bionic/__set_errno.cpp \
bionic/setlocale.cpp \
bionic/signalfd.cpp \
bionic/sigwait.cpp \
bionic/__strcat_chk.cpp \
bionic/__strcpy_chk.cpp \
bionic/strerror.cpp \
bionic/strerror_r.cpp \
bionic/__strlcat_chk.cpp \
bionic/__strlcpy_chk.cpp \
bionic/__strlen_chk.cpp \
bionic/__strncat_chk.cpp \
bionic/__strncpy_chk.cpp \
bionic/strsignal.cpp \
bionic/stubs.cpp \
bionic/tdestroy.cpp \
bionic/tmpfile.cpp \
bionic/__umask_chk.cpp \
bionic/__vsnprintf_chk.cpp \
bionic/__vsprintf_chk.cpp \
bionic/wchar.cpp \
libc_upstream_netbsd_src_files := \
upstream-netbsd/common/lib/libc/hash/sha1/sha1.c \
upstream-netbsd/common/lib/libc/inet/inet_addr.c \
upstream-netbsd/libc/compat-43/creat.c \
upstream-netbsd/libc/gen/ftw.c \
upstream-netbsd/libc/gen/nftw.c \
upstream-netbsd/libc/gen/nice.c \
upstream-netbsd/libc/gen/psignal.c \
upstream-netbsd/libc/gen/setjmperr.c \
upstream-netbsd/libc/gen/utime.c \
upstream-netbsd/libc/inet/inet_ntoa.c \
upstream-netbsd/libc/inet/inet_ntop.c \
upstream-netbsd/libc/inet/inet_pton.c \
upstream-netbsd/libc/isc/ev_streams.c \
upstream-netbsd/libc/isc/ev_timers.c \
upstream-netbsd/libc/regex/regcomp.c \
upstream-netbsd/libc/regex/regerror.c \
upstream-netbsd/libc/regex/regexec.c \
upstream-netbsd/libc/regex/regfree.c \
upstream-netbsd/libc/stdio/getdelim.c \
upstream-netbsd/libc/stdio/getline.c \
upstream-netbsd/libc/stdlib/bsearch.c \
upstream-netbsd/libc/stdlib/div.c \
upstream-netbsd/libc/stdlib/drand48.c \
upstream-netbsd/libc/stdlib/erand48.c \
upstream-netbsd/libc/stdlib/jrand48.c \
upstream-netbsd/libc/stdlib/ldiv.c \
upstream-netbsd/libc/stdlib/lldiv.c \
upstream-netbsd/libc/stdlib/lrand48.c \
upstream-netbsd/libc/stdlib/mrand48.c \
upstream-netbsd/libc/stdlib/nrand48.c \
upstream-netbsd/libc/stdlib/_rand48.c \
upstream-netbsd/libc/stdlib/seed48.c \
upstream-netbsd/libc/stdlib/srand48.c \
upstream-netbsd/libc/stdlib/tdelete.c \
upstream-netbsd/libc/stdlib/tfind.c \
upstream-netbsd/libc/stdlib/tsearch.c \
upstream-netbsd/libc/string/memccpy.c \
upstream-netbsd/libc/string/strcasestr.c \
upstream-netbsd/libc/string/strcoll.c \
upstream-netbsd/libc/string/strxfrm.c \
upstream-netbsd/libc/unistd/killpg.c \
upstream-netbsd/libc/compat-43/creat.c \
upstream-netbsd/libc/gen/ftw.c \
upstream-netbsd/libc/gen/nftw.c \
upstream-netbsd/libc/gen/nice.c \
upstream-netbsd/libc/gen/psignal.c \
upstream-netbsd/libc/regex/regcomp.c \
upstream-netbsd/libc/regex/regerror.c \
upstream-netbsd/libc/regex/regexec.c \
upstream-netbsd/libc/regex/regfree.c \
upstream-netbsd/libc/stdlib/tdelete.c \
upstream-netbsd/libc/stdlib/tfind.c \
upstream-netbsd/libc/stdlib/tsearch.c \
upstream-netbsd/libc/string/strxfrm.c \
# The following files are common, but must be compiled
# with different C flags when building a static C library.
@@ -361,40 +358,40 @@ libc_upstream_netbsd_src_files := \
# below.
#
libc_static_common_src_files := \
unistd/sysconf.c \
bionic/__errno.c \
bionic/sysconf.cpp \
# Architecture specific source files go here
# =========================================================
ifeq ($(TARGET_ARCH),arm)
libc_common_src_files += \
arch-arm/bionic/__get_sp.S \
arch-arm/bionic/_exit_with_stack_teardown.S \
arch-arm/bionic/_setjmp.S \
arch-arm/bionic/abort_arm.S \
arch-arm/bionic/atomics_arm.c \
arch-arm/bionic/clone.S \
arch-arm/bionic/eabi.c \
arch-arm/bionic/_exit_with_stack_teardown.S \
arch-arm/bionic/ffs.S \
arch-arm/bionic/futex_arm.S \
arch-arm/bionic/__get_sp.S \
arch-arm/bionic/kill.S \
arch-arm/bionic/libgcc_compat.c \
arch-arm/bionic/memcmp16.S \
arch-arm/bionic/tkill.S \
arch-arm/bionic/tgkill.S \
arch-arm/bionic/memcmp.S \
arch-arm/bionic/memcmp16.S \
arch-arm/bionic/memcpy.S \
arch-arm/bionic/memset.S \
arch-arm/bionic/_setjmp.S \
arch-arm/bionic/setjmp.S \
arch-arm/bionic/sigsetjmp.S \
arch-arm/bionic/strcmp.S \
arch-arm/bionic/strcpy.S \
arch-arm/bionic/strlen.c.arm \
arch-arm/bionic/strcpy.S \
arch-arm/bionic/strcmp.S \
arch-arm/bionic/syscall.S \
arch-arm/bionic/tgkill.S \
arch-arm/bionic/tkill.S \
bionic/memmove.c.arm \
bionic/socketcalls.c \
string/memmove.c.arm \
string/bcopy.c \
string/strncmp.c \
unistd/socketcalls.c
# These files need to be arm so that gdbserver
# can set breakpoints in them without messing
@@ -406,8 +403,7 @@ libc_common_src_files += \
bionic/ptrace.c.arm
libc_static_common_src_files += \
bionic/pthread.c.arm \
bionic/pthread_key.cpp.arm \
bionic/pthread.c.arm \
# these are used by the static and dynamic versions of the libc
# respectively
@@ -447,8 +443,7 @@ libc_common_src_files += \
bionic/ptrace.c
libc_static_common_src_files += \
bionic/pthread.c \
bionic/pthread_key.cpp \
bionic/pthread.c \
libc_arch_static_src_files := \
bionic/dl_iterate_phdr_static.c
@@ -481,8 +476,8 @@ libc_common_src_files += \
arch-mips/string/mips_strlen.c
libc_common_src_files += \
bionic/memcmp.c \
string/bcopy.c \
string/memcmp.c \
string/strcmp.c \
string/strcpy.c \
string/strncmp.c
@@ -494,8 +489,7 @@ libc_common_src_files += \
bionic/ptrace.c
libc_static_common_src_files += \
bionic/pthread.c \
bionic/pthread_key.cpp \
bionic/pthread.c
libc_arch_static_src_files := \
bionic/dl_iterate_phdr_static.c
@@ -514,6 +508,7 @@ libc_common_cflags := \
-I$(LOCAL_PATH)/private \
-DPOSIX_MISTAKE \
-DLOG_ON_HEAP_ERROR \
-std=gnu99 \
-Wall -Wextra
# these macro definitions are required to implement the
@@ -630,7 +625,7 @@ ifeq ($(TARGET_ARCH),mips)
libc_crt_target_so_cflags := -fPIC
endif
ifeq ($(TARGET_ARCH),x86)
libc_crtbegin_extension := c
libc_crtbegin_extension := S
libc_crt_target_so_cflags := -fPIC
endif
ifeq ($(libc_crtbegin_extension),)
@@ -744,7 +739,7 @@ WITH_MALLOC_CHECK_LIBC_A := $(strip $(WITH_MALLOC_CHECK_LIBC_A))
include $(CLEAR_VARS)
LOCAL_SRC_FILES := bionic/ssp.cpp
LOCAL_SRC_FILES := bionic/ssp.c
LOCAL_CFLAGS := $(libc_common_cflags) -fno-stack-protector
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libbionic_ssp
@@ -767,7 +762,6 @@ LOCAL_SRC_FILES := $(libc_upstream_netbsd_src_files)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-I$(LOCAL_PATH)/upstream-netbsd \
-I$(LOCAL_PATH)/upstream-netbsd/libc/include \
-include upstream-netbsd/netbsd-compat.h
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_netbsd
@@ -777,22 +771,6 @@ LOCAL_SYSTEM_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)
# ========================================================
# libc_bionic.a - home-grown C library code
# ========================================================
#
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_bionic_src_files)
LOCAL_CFLAGS := $(libc_common_cflags) -Werror
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_bionic
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_SYSTEM_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)
# ========================================================
# libc_common.a
# ========================================================
@@ -800,13 +778,11 @@ include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_common_src_files)
LOCAL_CFLAGS := $(libc_common_cflags) \
-std=gnu99 \
-I$(LOCAL_PATH)/upstream-netbsd/libc/include # for netbsd private headers
LOCAL_CFLAGS := $(libc_common_cflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_common
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_WHOLE_STATIC_LIBRARIES := libbionic_ssp libc_bionic libc_netbsd
LOCAL_WHOLE_STATIC_LIBRARIES := libbionic_ssp libc_netbsd
LOCAL_SYSTEM_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)
@@ -827,12 +803,11 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
$(libc_arch_static_src_files) \
$(libc_static_common_src_files) \
bionic/libc_init_static.cpp
bionic/libc_init_static.c
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_CFLAGS := $(libc_common_cflags) \
-DLIBC_STATIC \
-std=gnu99
-DLIBC_STATIC
LOCAL_MODULE := libc_nomalloc
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
@@ -852,11 +827,10 @@ LOCAL_SRC_FILES := \
$(libc_static_common_src_files) \
bionic/dlmalloc.c \
bionic/malloc_debug_common.cpp \
bionic/libc_init_static.cpp
bionic/libc_init_static.c
LOCAL_CFLAGS := $(libc_common_cflags) \
-DLIBC_STATIC \
-std=gnu99
-DLIBC_STATIC
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
@@ -877,7 +851,7 @@ include $(CLEAR_VARS)
# Since this code is experimental it is disabled by default.
# see libc/bionic/pthread_debug.c for details
LOCAL_CFLAGS := $(libc_common_cflags) -std=gnu99 -DPTHREAD_DEBUG -DPTHREAD_DEBUG_ENABLED=0
LOCAL_CFLAGS := $(libc_common_cflags) -DPTHREAD_DEBUG -DPTHREAD_DEBUG_ENABLED=0
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_SRC_FILES := \
@@ -885,8 +859,8 @@ LOCAL_SRC_FILES := \
$(libc_static_common_src_files) \
bionic/dlmalloc.c \
bionic/malloc_debug_common.cpp \
bionic/pthread_debug.cpp \
bionic/libc_init_dynamic.cpp
bionic/pthread_debug.c \
bionic/libc_init_dynamic.c
ifeq ($(TARGET_ARCH),arm)
LOCAL_NO_CRT := true
@@ -901,7 +875,6 @@ endif
LOCAL_MODULE:= libc
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_REQUIRED_MODULES := tzdata
# WARNING: The only library libc.so should depend on is libdl.so! If you add other libraries,
# make sure to add -Wl,--exclude-libs=libgcc.a to the LOCAL_LDFLAGS for those libraries. This
@@ -938,10 +911,10 @@ LOCAL_CFLAGS := \
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_SRC_FILES := \
bionic/debug_mapinfo.cpp \
bionic/debug_stacktrace.cpp \
bionic/malloc_debug_leak.cpp \
bionic/malloc_debug_check.cpp \
bionic/malloc_debug_check_mapinfo.cpp \
bionic/malloc_debug_stacktrace.cpp
LOCAL_MODULE:= libc_malloc_debug_leak
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk

View File

@@ -37,40 +37,6 @@ SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (C) 2004, 2005, 2008 Internet Systems Consortium, Inc. ("ISC")
Copyright (C) 1995-1999, 2001, 2003 Internet Software Consortium.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
-------------------------------------------------------------------
Copyright (C) 2004, 2005, 2008 Internet Systems Consortium, Inc. ("ISC")
Copyright (C) 1997-2001 Internet Software Consortium.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
-------------------------------------------------------------------
Copyright (C) 2006 The Android Open Source Project
All rights reserved.
@@ -99,6 +65,22 @@ SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (C) 2007 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-------------------------------------------------------------------
Copyright (C) 2008 The Android Open Source Project
All rights reserved.
@@ -346,50 +328,6 @@ SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-------------------------------------------------------------------
Copyright (C) 2013 The Android Open Source Project
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 1980, 1983, 1988, 1993
The Regents of the University of California. All rights reserved.
@@ -500,40 +438,6 @@ SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 1982, 1986, 1993
The Regents of the University of California. All rights reserved.
(c) UNIX System Laboratories, Inc.
All or some portions of this file are derived from material licensed
to the University of California by American Telephone and Telegraph
Co. or Unix System Laboratories, Inc. and are reproduced herein with
the permission of UNIX System Laboratories, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 1983, 1987, 1989
The Regents of the University of California. All rights reserved.
@@ -665,11 +569,7 @@ are met:
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed by the University of
California, Berkeley and its contributors.
4. Neither the name of the University nor the names of its contributors
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
@@ -685,6 +585,24 @@ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Portions Copyright (c) 1993 by Digital Equipment Corporation.
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies, and that
the name of Digital Equipment Corporation not be used in advertising or
publicity pertaining to distribution of the document or software without
specific, written prior permission.
THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
-------------------------------------------------------------------
Copyright (c) 1983, 1993
@@ -1488,6 +1406,38 @@ SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 1990 Regents of the University of California.
All rights reserved.
This code is derived from software contributed to Berkeley by
Chris Torek.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 1990 The Regents of the University of California.
All rights reserved.
@@ -1641,6 +1591,35 @@ SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 1990, 1993
The Regents of the University of California. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
4. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 1990, 1993
The Regents of the University of California. All rights reserved.
@@ -2397,35 +2376,6 @@ to anyone/anything when using this software.
-------------------------------------------------------------------
Copyright (c) 1994 The NetBSD Foundation, Inc.
All rights reserved.
This code is derived from software contributed to The NetBSD Foundation
by Christos Zoulas.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan
(Royal Institute of Technology, Stockholm, Sweden).
All rights reserved.
@@ -2513,6 +2463,32 @@ rights to redistribute these changes.
-------------------------------------------------------------------
Copyright (c) 1995, 1996 Erik Theisen. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 1996 by Internet Software Consortium.
Permission to use, copy, modify, and distribute this software for any
@@ -3620,6 +3596,23 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-------------------------------------------------------------------
Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
Copyright (c) 1997-1999 by Internet Software Consortium.
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-------------------------------------------------------------------
Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
Copyright (c) 1999 by Internet Software Consortium.
@@ -3680,23 +3673,6 @@ SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 2005 by Internet Systems Consortium, Inc. ("ISC")
Copyright (c) 1995-1999 by Internet Software Consortium
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-------------------------------------------------------------------
Copyright (c) 2007-2008 Michael G Schwern
This software originally derived from Paul Sheer's pivotal_gmtime_r.c.
@@ -3857,33 +3833,6 @@ SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 2009 The NetBSD Foundation, Inc.
This code is derived from software contributed to The NetBSD Foundation
by Roy Marples.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------------------------------------------------------
Copyright (c) 2010 MIPS Technologies, Inc.
All rights reserved.

View File

@@ -62,7 +62,7 @@ int getgroups:getgroups32(int, gid_t *) 205,205,-1
int getgroups:getgroups(int, gid_t *) -1,-1,80
pid_t getpgid(pid_t) 132
pid_t getppid() 64
pid_t getsid(pid_t) 147,147,151
pid_t getsid(pid_t) 147
pid_t setsid() 66
int setgid:setgid32(gid_t) 214,214,-1
int setgid:setgid(gid_t) -1,-1,46
@@ -225,7 +225,6 @@ int __rt_sigaction:rt_sigaction (int sig, const struct sigaction *act, struc
int __rt_sigprocmask:rt_sigprocmask (int how, const sigset_t *set, sigset_t *oset, size_t sigsetsize) 175,175,195
int __rt_sigtimedwait:rt_sigtimedwait(const sigset_t *set, struct siginfo_t *info, struct timespec_t *timeout, size_t sigset_size) 177,177,197
int sigpending(sigset_t *) 73
int signalfd4(int fd, const sigset_t *mask, size_t sizemask, int flags) 355,327,324
# sockets
int socket(int, int, int) 281,-1,183
@@ -289,7 +288,7 @@ int delete_module(const char*, unsigned int) 129
int klogctl:syslog(int, char *, int) 103
int sysinfo(struct sysinfo *) 116
int personality(unsigned long) 136
long perf_event_open(struct perf_event_attr *attr_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags) 364,336,333
long perf_event_open(struct perf_event_attr *attr_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags) 364
# futex
int futex(void *, int, int, void *, void *, int) 240,240,238

View File

@@ -25,10 +25,10 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
.global __get_sp
.type __get_sp, %function
#include <machine/asm.h>
__get_sp:
mov r0, sp
bx lr
ENTRY(__get_sp)
mov r0, sp
bx lr
END(__get_sp)

View File

@@ -25,20 +25,27 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <asm/unistd.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
// void _exit_with_stack_teardown(void* stackBase, int stackSize, int retCode)
@ void _exit_with_stack_teardown(void * stackBase, int stackSize, int retCode)
ENTRY(_exit_with_stack_teardown)
#if __ARM_EABI__
mov lr, r2
ldr r7, =__NR_munmap
swi #0 // the stack is destroyed by this call
swi #0 @ the stack is destroyed by this call
mov r0, lr
ldr r7, =__NR_exit
swi #0
#else
mov lr, r2
swi # __NR_munmap @ the stack is destroyed by this call
mov r0, lr
swi # __NR_exit
#endif
// exit() should never return, cause a crash if it does
mov r0, #0
ldr r0, [r0]
@ exit() should never return, cause a crash if it does
mov r0, #0
ldr r0, [r0]
END(_exit_with_stack_teardown)

View File

@@ -50,9 +50,10 @@ atexit(void (*func)(void))
* calling library may have been dlclose()'d, causing the program to
* crash.
*/
static char const warning[] = "WARNING: generic atexit() called from legacy shared library\n";
static char const warning[] =
"WARNING: generic atexit() called from legacy shared library\n";
__libc_android_log_write(ANDROID_LOG_WARN, "libc", warning);
__libc_android_log_print(ANDROID_LOG_WARN, "libc", warning);
fprintf(stderr, warning);
return (__cxa_atexit((void (*)(void *))func, NULL, NULL));

View File

@@ -25,39 +25,47 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
#include <machine/asm.h>
// int __pthread_clone(int (*fn)(void*), void* child_stack, int flags, void* arg);
ENTRY(__pthread_clone)
# Copy the args onto the new stack.
@ insert the args onto the new stack
stmdb r1!, {r0, r3}
# The sys_clone system call only takes two arguments: 'flags' and 'child_stack'.
# 'child_stack' is already in r1, but we need to move 'flags' into position.
mov r0, r2
stmfd sp!, {r4, r7}
@ do the system call
@ get flags
# System call.
mov r0, r2
@ new sp is already in r1
#if __ARM_EABI__
stmfd sp!, {r4, r7}
ldr r7, =__NR_clone
swi #0
#else
swi #__NR_clone
#endif
movs r0, r0
beq 1f
# In parent, reload saved registers then either exit or set errno.
ldmfd sp!, {r4, r7}
#if __ARM_EABI__
ldmnefd sp!, {r4, r7}
#endif
blt __error
bxne lr
b __set_syscall_errno
1: # The child.
# pick the function arg and call address off the stack and jump
# to the C __thread_entry function which does some setup and then
# calls the thread's start function
@ pick the function arg and call address off the stack and jump
@ to the C __thread_entry function which does some setup and then
@ calls the thread's start function
pop {r0, r1}
# __thread_entry needs the TLS pointer
mov r2, sp
mov r2, sp @ __thread_entry needs the TLS pointer
b __thread_entry
__error:
mov r0, #-1
bx lr
END(__pthread_clone)
@@ -68,8 +76,8 @@ END(__pthread_clone)
# pid_t *pid, void *tls, pid_t *ctid,
# int (*fn)(void *), void* arg );
#
# NOTE: This is not the same signature as the glibc
# __clone function. Placing 'fn' and 'arg'
# NOTE: This is not the same signature than the GLibc
# __clone function here !! Placing 'fn' and 'arg'
# at the end of the parameter list makes the
# implementation much simpler.
#
@@ -88,18 +96,20 @@ ENTRY(__bionic_clone)
str r5, [r1, #-4]
str r6, [r1, #-8]
# System call
# system call
ldr r7, =__NR_clone
swi #0
movs r0, r0
beq 1f
# In the parent, reload saved registers then either exit or set errno.
# in parent, reload saved registers
# then either exit or error
#
ldmfd sp!, {r4, r5, r6, r7}
bxne lr
b __set_syscall_errno
1: # The child.
1: # in the child - pick arguments
ldr r0, [sp, #-4]
ldr r1, [sp, #-8]
b __bionic_clone_entry

View File

@@ -26,9 +26,21 @@
* SUCH DAMAGE.
*/
#include "../../bionic/libc_init_common.h"
#include <stddef.h>
#include <stdint.h>
typedef struct
{
void (**preinit_array)(void);
void (**init_array)(void);
void (**fini_array)(void);
} structors_array_t;
extern int main(int argc, char **argv, char **env);
extern void __libc_init(
unsigned int *elfdata,
void (*onexit)(void),
int (*slingshot)(int, char**, char**),
structors_array_t const * const structors
);
__attribute__ ((section (".preinit_array")))
void (*__PREINIT_ARRAY__)(void) = (void (*)(void)) -1;
@@ -39,14 +51,17 @@ void (*__INIT_ARRAY__)(void) = (void (*)(void)) -1;
__attribute__ ((section (".fini_array")))
void (*__FINI_ARRAY__)(void) = (void (*)(void)) -1;
__LIBC_HIDDEN__ void _start() {
__attribute__((visibility("hidden")))
void _start() {
structors_array_t array;
array.preinit_array = &__PREINIT_ARRAY__;
array.init_array = &__INIT_ARRAY__;
array.fini_array = &__FINI_ARRAY__;
void *elfdata;
void* raw_args = (void*) ((uintptr_t) __builtin_frame_address(0) + sizeof(void*));
__libc_init(raw_args, NULL, &main, &array);
array.preinit_array = &__PREINIT_ARRAY__;
array.init_array = &__INIT_ARRAY__;
array.fini_array = &__FINI_ARRAY__;
elfdata = __builtin_frame_address(0) + sizeof(void *);
__libc_init(elfdata, (void *) 0, &main, &array);
}
#include "__dso_handle.h"

View File

@@ -25,14 +25,32 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/linux-syscalls.h>
#include <machine/asm.h>
#include <machine/cpu-features.h>
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
// __futex_syscall3(*ftx, op, val)
/* __futex_wait(*ftx, val, *timespec) */
/* __futex_wake(*ftx, counter) */
/* __futex_syscall3(*ftx, op, val) */
/* __futex_syscall4(*ftx, op, val, *timespec) */
.global __futex_wait
.type __futex_wait, %function
.global __futex_wake
.type __futex_wake, %function
.global __futex_syscall3
.type __futex_syscall3, %function
.global __futex_syscall4
.type __futex_syscall4, %function
#if __ARM_EABI__
ENTRY(__futex_syscall3)
stmdb sp!, {r4, r7}
.save {r4, r7}
@@ -42,12 +60,6 @@ ENTRY(__futex_syscall3)
bx lr
END(__futex_syscall3)
// __futex_syscall4(*ftx, op, val, *timespec)
ENTRY(__futex_syscall4)
b __futex_syscall3
END(__futex_syscall4)
// __futex_wait(*ftx, val, *timespec)
ENTRY(__futex_wait)
stmdb sp!, {r4, r7}
.save {r4, r7}
@@ -60,7 +72,6 @@ ENTRY(__futex_wait)
bx lr
END(__futex_wait)
// __futex_wake(*ftx, counter)
ENTRY(__futex_wake)
.save {r4, r7}
stmdb sp!, {r4, r7}
@@ -71,3 +82,31 @@ ENTRY(__futex_wake)
ldmia sp!, {r4, r7}
bx lr
END(__futex_wake)
#else
ENTRY(__futex_syscall3)
swi #__NR_futex
bx lr
END(__futex_syscall3)
ENTRY(__futex_wait)
mov r3, r2
mov r2, r1
mov r1, #FUTEX_WAIT
swi #__NR_futex
bx lr
END(__futex_wait)
ENTRY(__futex_wake)
mov r2, r1
mov r1, #FUTEX_WAKE
swi #__NR_futex
bx lr
END(__futex_wake)
#endif
ENTRY(__futex_syscall4)
b __futex_syscall3
END(__futex_syscall4)

View File

@@ -110,7 +110,6 @@
XX(__aeabi_fsub) \
XX(__aeabi_i2d) \
XX(__aeabi_i2f) \
XX(__aeabi_idiv) \
XX(__aeabi_l2d) \
XX(__aeabi_l2f) \
XX(__aeabi_lmul) \

View File

@@ -29,93 +29,44 @@
#include <machine/cpu-features.h>
#include <machine/asm.h>
#ifdef HAVE_32_BYTE_CACHE_LINE
#define CACHE_LINE_SIZE 32
#else
#define CACHE_LINE_SIZE 64
#endif
/*
* Optimized memcmp() for Cortex-A9.
* Optimized memcmp() for ARM9.
* This would not be optimal on XScale or ARM11, where more prefetching
* and use of PLD will be needed.
* The 2 major optimzations here are
* (1) The main loop compares 16 bytes at a time
* (2) The loads are scheduled in a way they won't stall
*/
ENTRY(memcmp)
pld [r0, #(CACHE_LINE_SIZE * 0)]
pld [r0, #(CACHE_LINE_SIZE * 1)]
PLD (r0, #0)
PLD (r1, #0)
/* take of the case where length is 0 or the buffers are the same */
cmp r0, r1
cmpne r2, #0
moveq r0, #0
bxeq lr
pld [r1, #(CACHE_LINE_SIZE * 0)]
pld [r1, #(CACHE_LINE_SIZE * 1)]
/* make sure we have at least 8+4 bytes, this simplify things below
* and avoid some overhead for small blocks
*/
cmp r2, #(8+4)
bmi 10f
/*
* Neon optimization
* Comparing 32 bytes at a time
*/
#if defined(__ARM_NEON__) && defined(NEON_UNALIGNED_ACCESS)
subs r2, r2, #32
blo 3f
/* preload all the cache lines we need. */
pld [r0, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 2)]
1: /* The main loop compares 32 bytes at a time */
vld1.8 {d0 - d3}, [r0]!
pld [r0, #(CACHE_LINE_SIZE * 2)]
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(CACHE_LINE_SIZE * 2)]
/* Start subtracting the values and merge results */
vsub.i8 q0, q2
vsub.i8 q1, q3
vorr q2, q0, q1
vorr d4, d5
vmov r3, ip, d4
/* Check if there are any differences among the 32 bytes */
orrs r3, ip
bne 2f
subs r2, r2, #32
bhs 1b
b 3f
2:
/* Check if the difference was in the first or last 16 bytes */
sub r0, #32
vorr d0, d1
sub r1, #32
vmov r3, ip, d0
orrs r3, ip
/* if the first 16 bytes are equal, we only have to rewind 16 bytes */
ittt eq
subeq r2, #16
addeq r0, #16
addeq r1, #16
3: /* fix-up the remaining count */
add r2, r2, #32
cmp r2, #(8+4)
bmi 10f
#endif
.save {r4, lr}
/* save registers */
stmfd sp!, {r4, lr}
PLD (r0, #32)
PLD (r1, #32)
/* since r0 hold the result, move the first source
* pointer somewhere else
*/
mov r4, r0
/* make sure we have at least 8+4 bytes, this simplify things below
* and avoid some overhead for small blocks
*/
cmp r2, #(8+4)
bmi 8f
/* align first pointer to word boundary
* offset = -src & 3
*/
@@ -152,8 +103,8 @@ ENTRY(memcmp)
subs r2, r2, #(32 + 4)
bmi 1f
0: pld [r4, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 2)]
0: PLD (r4, #64)
PLD (r1, #64)
ldr r0, [r4], #4
ldr lr, [r1, #4]!
eors r0, r0, ip
@@ -219,24 +170,12 @@ ENTRY(memcmp)
9: /* restore registers and return */
ldmfd sp!, {r4, lr}
bx lr
10: /* process less than 12 bytes */
cmp r2, #0
moveq r0, #0
bxeq lr
mov r3, r0
11:
ldrb r0, [r3], #1
ldrb ip, [r1], #1
subs r0, ip
bxne lr
subs r2, r2, #1
bne 11b
bx lr
END(memcmp)
5: /*************** non-congruent case ***************/
and r0, r1, #3
cmp r0, #2
@@ -253,8 +192,8 @@ END(memcmp)
bic r1, r1, #3
ldr lr, [r1], #4
6: pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r4, #(CACHE_LINE_SIZE * 2)]
6: PLD (r1, #64)
PLD (r4, #64)
mov ip, lr, lsr #16
ldr lr, [r1], #4
ldr r0, [r4], #4

View File

@@ -37,35 +37,28 @@
#ifdef HAVE_32_BYTE_CACHE_LINE
/* a prefetch distance of 2 cache-lines */
#define CACHE_LINE_SIZE 32
#define PREFETCH_DISTANCE (CACHE_LINE_SIZE*2)
#else
/* a prefetch distance of 4 cache-lines works best experimentally */
#define CACHE_LINE_SIZE 64
#define PREFETCH_DISTANCE (CACHE_LINE_SIZE*4)
#endif
ENTRY(memcpy)
.save {r0, lr}
/* start preloading as early as possible */
pld [r1, #(CACHE_LINE_SIZE * 0)]
pld [r1, #(CACHE_LINE_SIZE*0)]
stmfd sp!, {r0, lr}
pld [r1, #(CACHE_LINE_SIZE * 1)]
pld [r1, #(CACHE_LINE_SIZE*1)]
/* If Neon supports unaligned access then remove the align code,
* unless a size limit has been specified.
*/
#ifndef NEON_UNALIGNED_ACCESS
/* do we have at least 16-bytes to copy (needed for alignment below) */
cmp r2, #16
blo 5f
/* check if buffers are aligned. If so, run arm-only version */
eor r3, r0, r1
ands r3, r3, #0x3
beq 11f
/* align destination to cache-line for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 2f
beq 0f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
@@ -86,9 +79,10 @@ ENTRY(memcpy)
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2:
/* preload immediately the next cache line, which we may need */
pld [r1, #(CACHE_LINE_SIZE * 0)]
pld [r1, #(CACHE_LINE_SIZE * 1)]
0: /* preload immediately the next cache line, which we may need */
pld [r1, #(CACHE_LINE_SIZE*0)]
pld [r1, #(CACHE_LINE_SIZE*1)]
#ifdef HAVE_32_BYTE_CACHE_LINE
/* make sure we have at least 32 bytes to copy */
@@ -114,22 +108,23 @@ ENTRY(memcpy)
subs r2, r2, #64
blo 2f
/* preload all the cache lines we need. */
pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 3)]
/* preload all the cache lines we need.
* NOTE: the number of pld below depends on PREFETCH_DISTANCE,
* ideally would would increase the distance in the main loop to
* avoid the goofy code below. In practice this doesn't seem to make
* a big difference.
*/
pld [r1, #(CACHE_LINE_SIZE*2)]
pld [r1, #(CACHE_LINE_SIZE*3)]
pld [r1, #(PREFETCH_DISTANCE)]
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
#ifdef HAVE_32_BYTE_CACHE_LINE
pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 3)]
#else
pld [r1, #(CACHE_LINE_SIZE * 3)]
#endif
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(PREFETCH_DISTANCE)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
@@ -138,9 +133,9 @@ ENTRY(memcpy)
blo 4f
3: /* 32 bytes at a time. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d0 - d3}, [r1]!
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d0 - d3}, [r0, :128]!
bhs 3b
#endif
4: /* less than 32 left */
@@ -150,6 +145,7 @@ ENTRY(memcpy)
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0, :128]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
@@ -168,164 +164,6 @@ ENTRY(memcpy)
ldmfd sp!, {r0, lr}
bx lr
#else /* NEON_UNALIGNED_ACCESS */
// Check so divider is at least 16 bytes, needed for alignment code.
cmp r2, #16
blo 5f
#ifdef NEON_MEMCPY_ALIGNMENT_DIVIDER
/* Check the upper size limit for Neon unaligned memory access in memcpy */
#if NEON_MEMCPY_ALIGNMENT_DIVIDER >= 16
cmp r2, #NEON_MEMCPY_ALIGNMENT_DIVIDER
blo 3f
#endif
/* check if buffers are aligned. If so, run arm-only version */
eor r3, r0, r1
ands r3, r3, #0x3
beq 11f
/* align destination to 16 bytes for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 3f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
ldrmib lr, [r1], #1
strmib lr, [r0], #1
ldrcsb ip, [r1], #1
ldrcsb lr, [r1], #1
strcsb ip, [r0], #1
strcsb lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// copies 4 bytes, destination 32-bits aligned
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0, :32]!
1: bcc 2f
// copies 8 bytes, destination 64-bits aligned
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2:
/* preload immediately the next cache line, which we may need */
pld [r1, #(CACHE_LINE_SIZE * 0)]
pld [r1, #(CACHE_LINE_SIZE * 1)]
3:
#endif
/* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
/* preload all the cache lines we need */
pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 3)]
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
#ifdef HAVE_32_BYTE_CACHE_LINE
pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 3)]
#else
pld [r1, #(CACHE_LINE_SIZE * 3)]
#endif
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0]!
vst1.8 {d4 - d7}, [r0]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
add r2, r2, #64
subs r2, r2, #32
blo 4f
3: /* 32 bytes at a time. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0]!
bhs 3b
4: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 5f
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
ldrmib r3, [r1], #1
ldrcsb ip, [r1], #1
ldrcsb lr, [r1], #1
strmib r3, [r0], #1
strcsb ip, [r0], #1
strcsb lr, [r0], #1
ldmfd sp!, {r0, lr}
bx lr
#endif /* NEON_UNALIGNED_ACCESS */
11:
/* Simple arm-only copy loop to handle aligned copy operations */
stmfd sp!, {r4, r5, r6, r7, r8}
pld [r1, #(CACHE_LINE_SIZE * 2)]
/* Check alignment */
rsb r3, r1, #0
ands r3, #3
beq 2f
/* align source to 32 bits. We need to insert 2 instructions between
* a ldr[b|h] and str[b|h] because byte and half-word instructions
* stall 2 cycles.
*/
movs r12, r3, lsl #31
sub r2, r2, r3 /* we know that r3 <= r2 because r2 >= 4 */
ldrmib r3, [r1], #1
ldrcsb r4, [r1], #1
ldrcsb r5, [r1], #1
strmib r3, [r0], #1
strcsb r4, [r0], #1
strcsb r5, [r0], #1
2:
subs r2, #32
blt 5f
pld [r1, #(CACHE_LINE_SIZE * 3)]
3: /* Main copy loop, copying 32 bytes at a time */
pld [r1, #(CACHE_LINE_SIZE * 4)]
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
subs r2, r2, #32
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
bge 3b
5: /* Handle any remaining bytes */
adds r2, #32
beq 6f
movs r12, r2, lsl #28
ldmcsia r1!, {r3, r4, r5, r6} /* 16 bytes */
ldmmiia r1!, {r7, r8} /* 8 bytes */
stmcsia r0!, {r3, r4, r5, r6}
stmmiia r0!, {r7, r8}
movs r12, r2, lsl #30
ldrcs r3, [r1], #4 /* 4 bytes */
ldrmih r4, [r1], #2 /* 2 bytes */
strcs r3, [r0], #4
strmih r4, [r0], #2
tst r2, #0x1
ldrneb r3, [r1] /* last byte */
strneb r3, [r0]
6:
ldmfd sp!, {r4, r5, r6, r7, r8}
ldmfd sp!, {r0, pc}
END(memcpy)

View File

@@ -26,7 +26,6 @@
* SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
/*
@@ -35,104 +34,15 @@
* memset() returns its first argument.
*/
#if defined(__ARM_NEON__)
.fpu neon
#endif
ENTRY(bzero)
mov r2, r1
mov r1, #0
END(bzero)
ENTRY(memset)
#if defined(__ARM_NEON__)
#ifdef NEON_MEMSET_DIVIDER
cmp r2, #NEON_MEMSET_DIVIDER
bhi 11f
#endif
.save {r0}
stmfd sp!, {r0}
vdup.8 q0, r1
#ifndef NEON_UNALIGNED_ACCESS
/* do we have at least 16-bytes to write (needed for alignment below) */
cmp r2, #16
blo 3f
/* align destination to 16 bytes for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 2f
/* write up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
strmib r1, [r0], #1
strcsb r1, [r0], #1
strcsb r1, [r0], #1
movs ip, r3, lsl #29
bge 1f
// writes 4 bytes, 32-bits aligned
vst1.32 {d0[0]}, [r0, :32]!
1: bcc 2f
// writes 8 bytes, 64-bits aligned
vst1.8 {d0}, [r0, :64]!
2:
#endif
/* make sure we have at least 32 bytes to write */
subs r2, r2, #32
blo 2f
vmov q1, q0
1: /* The main loop writes 32 bytes at a time */
subs r2, r2, #32
#ifndef NEON_UNALIGNED_ACCESS
vst1.8 {d0 - d3}, [r0, :128]!
#else
vst1.8 {d0 - d3}, [r0]!
#endif
bhs 1b
2: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 3f
// writes 16 bytes, 128-bits aligned
#ifndef NEON_UNALIGNED_ACCESS
vst1.8 {d0, d1}, [r0, :128]!
#else
vst1.8 {d0, d1}, [r0]!
#endif
3: /* write up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vst1.8 {d0}, [r0]!
1: bge 2f
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
strmib r1, [r0], #1
strcsb r1, [r0], #1
strcsb r1, [r0], #1
ldmfd sp!, {r0}
bx lr
11:
#endif
/*
* Optimized memset() for ARM.
*
* memset() returns its first argument.
*/
/* compute the offset to align the destination
* offset = (4-(src&3))&3 = -src & 3
*/
.save {r0, r4-r7, lr}
stmfd sp!, {r0, r4-r7, lr}
rsb r3, r0, #0
@@ -168,7 +78,7 @@ ENTRY(memset)
andhi r3, r2, #0x1C
sub r2, r2, r3
/* conditionally writes 0 to 7 words (length in r3) */
/* conditionnaly writes 0 to 7 words (length in r3) */
movs r3, r3, lsl #28
stmcsia r0!, {r1, lr}
stmcsia r0!, {r1, lr}
@@ -185,7 +95,7 @@ ENTRY(memset)
bhs 1b
2: add r2, r2, #32
/* conditionally stores 0 to 31 bytes */
/* conditionnaly stores 0 to 31 bytes */
movs r2, r2, lsl #28
stmcsia r0!, {r1,r3,r12,lr}
stmmiia r0!, {r1, lr}

View File

@@ -25,21 +25,47 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(syscall)
.text
.align 4
.type syscall,#function
.globl syscall
.text
.align
#if __ARM_EABI__
syscall:
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7}
mov r7, r0
mov r0, r1
mov r1, r2
mov r2, r3
ldmfd ip, {r3, r4, r5, r6}
ldmfd ip, {r3, r4, r5, r6}
swi #0
ldmfd sp!, {r4, r5, r6, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
END(syscall)
#else
#ifndef __NR_syscall
#define __NR_syscall 113
#endif
syscall:
stmfd sp!, {r4, r5, lr}
ldr r4, [sp, #12]
ldr r5, [sp, #16]
swi __NR_syscall
ldmfd sp!, {r4, r5, lr}
movs r0, r0
bxpl lr
b __set_syscall_errno
#endif

View File

@@ -77,7 +77,7 @@
#endif /* __ARM_ARCH__ */
#endif /* __GNUC__ */
#if defined(__ARMEB__)
#ifdef __ARMEB__
#define _BYTE_ORDER _BIG_ENDIAN
#else
#define _BYTE_ORDER _LITTLE_ENDIAN

View File

@@ -35,6 +35,17 @@
#ifndef _ARM__TYPES_H_
#define _ARM__TYPES_H_
#if !defined(__ARM_EABI__)
/* the kernel defines size_t as unsigned int, but g++ wants it to be unsigned long */
#define _SIZE_T
#define _SSIZE_T
#define _PTRDIFF_T
typedef unsigned long size_t;
typedef long ssize_t;
typedef long ptrdiff_t;
#endif
/* 7.18.1.1 Exact-width integer types */
typedef __signed char __int8_t;
typedef unsigned char __uint8_t;
@@ -87,8 +98,6 @@ typedef unsigned long __psize_t;
/* Standard system types */
typedef int __clock_t;
typedef int __clockid_t;
typedef double __double_t;
typedef float __float_t;
typedef long __ptrdiff_t;
typedef int __time_t;
typedef int __timer_t;
@@ -107,4 +116,10 @@ typedef int __rune_t;
typedef void * __wctrans_t;
typedef void * __wctype_t;
#ifdef __ARMEB__
#define _BYTE_ORDER _BIG_ENDIAN
#else
#define _BYTE_ORDER _LITTLE_ENDIAN
#endif
#endif /* _ARM__TYPES_H_ */

View File

@@ -1,138 +0,0 @@
/* $NetBSD: elf_machdep.h,v 1.10 2012/08/05 04:12:46 matt Exp $ */
#ifndef _ARM_ELF_MACHDEP_H_
#define _ARM_ELF_MACHDEP_H_
#if defined(__ARMEB__)
#define ELF32_MACHDEP_ENDIANNESS ELFDATA2MSB
#else
#define ELF32_MACHDEP_ENDIANNESS ELFDATA2LSB
#endif
#define ELF64_MACHDEP_ENDIANNESS XXX /* break compilation */
#define ELF64_MACHDEP_ID_CASES \
/* no 64-bit ELF machine types supported */
/* Processor specific flags for the ELF header e_flags field. */
#define EF_ARM_RELEXEC 0x00000001
#define EF_ARM_HASENTRY 0x00000002
#define EF_ARM_INTERWORK 0x00000004 /* GNU binutils 000413 */
#define EF_ARM_SYMSARESORTED 0x00000004 /* ARM ELF A08 */
#define EF_ARM_APCS_26 0x00000008 /* GNU binutils 000413 */
#define EF_ARM_DYNSYMSUSESEGIDX 0x00000008 /* ARM ELF B01 */
#define EF_ARM_APCS_FLOAT 0x00000010 /* GNU binutils 000413 */
#define EF_ARM_MAPSYMSFIRST 0x00000010 /* ARM ELF B01 */
#define EF_ARM_PIC 0x00000020
#define EF_ARM_ALIGN8 0x00000040 /* 8-bit structure alignment. */
#define EF_ARM_NEW_ABI 0x00000080
#define EF_ARM_OLD_ABI 0x00000100
#define EF_ARM_SOFT_FLOAT 0x00000200
#define EF_ARM_EABIMASK 0xff000000
#define EF_ARM_EABI_VER1 0x01000000
#define EF_ARM_EABI_VER2 0x02000000
#define EF_ARM_EABI_VER3 0x03000000
#define EF_ARM_EABI_VER4 0x04000000
#define EF_ARM_EABI_VER5 0x05000000
#define ELF32_MACHDEP_ID_CASES \
case EM_ARM: \
break;
#define ELF32_MACHDEP_ID EM_ARM
#define ARCH_ELFSIZE 32 /* MD native binary size */
/* Processor specific relocation types */
#define R_ARM_NONE 0
#define R_ARM_PC24 1
#define R_ARM_ABS32 2
#define R_ARM_REL32 3
#define R_ARM_PC13 4
#define R_ARM_ABS16 5
#define R_ARM_ABS12 6
#define R_ARM_THM_ABS5 7
#define R_ARM_ABS8 8
#define R_ARM_SBREL32 9
#define R_ARM_THM_PC22 10
#define R_ARM_THM_PC8 11
#define R_ARM_AMP_VCALL9 12
#define R_ARM_SWI24 13
#define R_ARM_THM_SWI8 14
#define R_ARM_XPC25 15
#define R_ARM_THM_XPC22 16
/* TLS relocations */
#define R_ARM_TLS_DTPMOD32 17 /* ID of module containing symbol */
#define R_ARM_TLS_DTPOFF32 18 /* Offset in TLS block */
#define R_ARM_TLS_TPOFF32 19 /* Offset in static TLS block */
/* 20-31 are reserved for ARM Linux. */
#define R_ARM_COPY 20
#define R_ARM_GLOB_DAT 21
#define R_ARM_JUMP_SLOT 22
#define R_ARM_RELATIVE 23
#define R_ARM_GOTOFF 24
#define R_ARM_GOTPC 25
#define R_ARM_GOT32 26
#define R_ARM_PLT32 27
#define R_ARM_ALU_PCREL_7_0 32
#define R_ARM_ALU_PCREL_15_8 33
#define R_ARM_ALU_PCREL_23_15 34
#define R_ARM_ALU_SBREL_11_0 35
#define R_ARM_ALU_SBREL_19_12 36
#define R_ARM_ALU_SBREL_27_20 37
/* 96-111 are reserved to G++. */
#define R_ARM_GNU_VTENTRY 100
#define R_ARM_GNU_VTINHERIT 101
#define R_ARM_THM_PC11 102
#define R_ARM_THM_PC9 103
/* More TLS relocations */
#define R_ARM_TLS_GD32 104 /* PC-rel 32 bit for global dynamic */
#define R_ARM_TLS_LDM32 105 /* PC-rel 32 bit for local dynamic */
#define R_ARM_TLS_LDO32 106 /* 32 bit offset relative to TLS */
#define R_ARM_TLS_IE32 107 /* PC-rel 32 bit for GOT entry of */
#define R_ARM_TLS_LE32 108
#define R_ARM_TLS_LDO12 109
#define R_ARM_TLS_LE12 110
#define R_ARM_TLS_IE12GP 111
/* 112-127 are reserved for private experiments. */
#define R_ARM_RXPC25 249
#define R_ARM_RSBREL32 250
#define R_ARM_THM_RPC22 251
#define R_ARM_RREL32 252
#define R_ARM_RABS32 253
#define R_ARM_RPC24 254
#define R_ARM_RBASE 255
#define R_TYPE(name) __CONCAT(R_ARM_,name)
/* Processor specific program header flags */
#define PF_ARM_SB 0x10000000
#define PF_ARM_PI 0x20000000
#define PF_ARM_ENTRY 0x80000000
/* Processor specific section header flags */
#define SHF_ENTRYSECT 0x10000000
#define SHF_COMDEF 0x80000000
/* Processor specific symbol types */
#define STT_ARM_TFUNC STT_LOPROC
#ifdef _KERNEL
#ifdef ELFSIZE
#define ELF_MD_PROBE_FUNC ELFNAME2(arm_netbsd,probe)
#endif
struct exec_package;
int arm_netbsd_elf32_probe(struct lwp *, struct exec_package *, void *, char *,
vaddr_t *);
#endif
#endif /* _ARM_ELF_MACHDEP_H_ */

View File

@@ -150,7 +150,6 @@ syscall_src += arch-arm/syscalls/__rt_sigaction.S
syscall_src += arch-arm/syscalls/__rt_sigprocmask.S
syscall_src += arch-arm/syscalls/__rt_sigtimedwait.S
syscall_src += arch-arm/syscalls/sigpending.S
syscall_src += arch-arm/syscalls/signalfd4.S
syscall_src += arch-arm/syscalls/socket.S
syscall_src += arch-arm/syscalls/socketpair.S
syscall_src += arch-arm/syscalls/bind.S

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__brk)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_brk
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__fcntl)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fcntl
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__fcntl64)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fcntl64
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__fork)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fork
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__fstatfs64)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fstatfs64
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__getcpu)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getcpu
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__getcwd)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getcwd
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__getpriority)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getpriority
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__ioctl)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_ioctl
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__open)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_open
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__openat)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_openat
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__ptrace)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_ptrace
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__reboot)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_reboot
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__rt_sigaction)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_rt_sigaction
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__rt_sigprocmask)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_rt_sigprocmask
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__rt_sigtimedwait)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_rt_sigtimedwait
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__sched_getaffinity)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_sched_getaffinity
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__set_tls)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_ARM_set_tls
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__setresuid)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_setresuid32
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__setreuid)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_setreuid32
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__setuid)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_setuid32
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__sigsuspend)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_sigsuspend
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__statfs64)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_statfs64
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__syslog)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_syslog
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_create)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_create
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_delete)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_delete
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_getoverrun)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_getoverrun
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_gettime)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_gettime
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_settime)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_settime
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(__wait4)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_wait4
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(_exit)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_exit_group
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(_exit_thread)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_exit
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(accept)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_accept
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(access)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_access
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(acct)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_acct
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(bind)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_bind
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(cacheflush)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_ARM_cacheflush
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(capget)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_capget
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(capset)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_capset
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(chdir)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_chdir
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(chmod)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_chmod
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(chown)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_chown32
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(chroot)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_chroot
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(clock_getres)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_clock_getres
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(clock_gettime)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_clock_gettime
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(clock_nanosleep)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_clock_nanosleep
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(clock_settime)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_clock_settime
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(close)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_close
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(connect)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_connect
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(delete_module)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_delete_module
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(dup)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_dup
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(dup2)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_dup2
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(epoll_create)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_epoll_create
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(epoll_ctl)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_epoll_ctl
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(epoll_wait)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_epoll_wait
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(eventfd)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_eventfd2
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(execve)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_execve
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(faccessat)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_faccessat
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fchdir)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fchdir
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fchmod)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fchmod
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fchmodat)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fchmodat
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fchown)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fchown32
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fdatasync)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fdatasync
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fgetxattr)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fgetxattr
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(flistxattr)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_flistxattr
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(flock)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_flock
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fremovexattr)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fremovexattr
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fstat)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fstat64
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fstatat)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fstatat64
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(fsync)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_fsync
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(ftruncate)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_ftruncate
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(ftruncate64)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_ftruncate64
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(getdents)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getdents64
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(getegid)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getegid32
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(geteuid)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_geteuid32
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(getgid)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getgid32
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(getgroups)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getgroups32
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(getitimer)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getitimer
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(getpeername)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getpeername
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(getpgid)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getpgid
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(getpid)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getpid
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

View File

@@ -3,10 +3,11 @@
#include <sys/linux-syscalls.h>
ENTRY(getppid)
mov ip, r7
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getppid
swi #0
mov r7, ip
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno

Some files were not shown because too many files have changed in this diff Show More