Compare commits

..

3 Commits

Author SHA1 Message Date
Elliott Hughes
2c222c4906 Merge "Update to tzdata2011n." into gingerbread 2011-11-16 10:47:37 -08:00
Elliott Hughes
f0e5b680ba Update to tzdata2011n.
This is a bumper update from tzdata2010k, affecting many time zones, including:

2011c: Chile and Annette Island, Alaska.
2011d: Cuba, Samoa, and Turkey.
2011e: Chile and Morocco.
2011g: Egypt.
2011h: Russia and Curacao.
2011i: South Sudan (Africa/Juba), Samoa, Europe/Kalingrad, Newfoundland,
    America/Resolute, Metlakatla, America/Honolulu, America/Goose_Bay and
    America/St_Johns.
2011j: Samoa, Kenya, Uganda, and Tanzania.
2011k: Palestine, Gaza, Hebron, Belarus, Ukraine, and Russia.
2011l: Asia/Hebron and Pacific/Fiji (and historical data for
    America/Sitka).
2011m: Europe/Tiraspol (Moldova) and all four Ukrainian zones.
2011n: Cuba (America/Havana), Europe/Tiraspol (Moldova), Fiji.

(This list is not comprehensive.)

Bug: 5530615
Change-Id: I599250a1c19c2897425e4a5418b925b2f8f88e14
2011-11-15 18:29:40 -08:00
Elliott Hughes
30983c9ab9 Backport ICS' tzdata update script to Gingerbread.
Bug: 5530615
Change-Id: I1aff3e33bc5f746f0defe1aca4453379455c8c1b
2011-11-15 18:24:08 -08:00
444 changed files with 3476 additions and 11708 deletions

View File

@@ -16,4 +16,9 @@
LOCAL_PATH := $(call my-dir) LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles) ifneq ($(TARGET_SIMULATOR),true)
include $(call all-subdir-makefiles)
else
# The host dalvikvm needs Android's concatenated & indexed timezone data.
include $(LOCAL_PATH)/libc/zoneinfo/Android.mk
endif

View File

@@ -187,6 +187,7 @@ libc_common_src_files := \
string/strcat.c \ string/strcat.c \
string/strchr.c \ string/strchr.c \
string/strcoll.c \ string/strcoll.c \
string/strcpy.c \
string/strcspn.c \ string/strcspn.c \
string/strdup.c \ string/strdup.c \
string/strerror.c \ string/strerror.c \
@@ -229,7 +230,6 @@ libc_common_src_files := \
wchar/wcsstr.c \ wchar/wcsstr.c \
wchar/wcstok.c \ wchar/wcstok.c \
wchar/wcswidth.c \ wchar/wcswidth.c \
wchar/wcsxfrm.c \
wchar/wmemchr.c \ wchar/wmemchr.c \
wchar/wmemcmp.c \ wchar/wmemcmp.c \
wchar/wmemcpy.c \ wchar/wmemcpy.c \
@@ -241,14 +241,13 @@ libc_common_src_files := \
inet/inet_ntoa.c \ inet/inet_ntoa.c \
inet/inet_ntop.c \ inet/inet_ntop.c \
inet/inet_pton.c \ inet/inet_pton.c \
inet/ether_aton.c \
inet/ether_ntoa.c \
tzcode/asctime.c \ tzcode/asctime.c \
tzcode/difftime.c \ tzcode/difftime.c \
tzcode/localtime.c \ tzcode/localtime.c \
tzcode/strftime.c \ tzcode/strftime.c \
tzcode/strptime.c \ tzcode/strptime.c \
bionic/__set_errno.c \ bionic/__set_errno.c \
bionic/_rand48.c \
bionic/cpuacct.c \ bionic/cpuacct.c \
bionic/arc4random.c \ bionic/arc4random.c \
bionic/basename.c \ bionic/basename.c \
@@ -269,13 +268,8 @@ libc_common_src_files := \
bionic/libc_init_common.c \ bionic/libc_init_common.c \
bionic/logd_write.c \ bionic/logd_write.c \
bionic/md5.c \ bionic/md5.c \
bionic/memmove_words.c \
bionic/pututline.c \ bionic/pututline.c \
bionic/realpath.c \ bionic/realpath.c \
bionic/sched_getaffinity.c \
bionic/sched_getcpu.c \
bionic/sched_cpualloc.c \
bionic/sched_cpucount.c \
bionic/semaphore.c \ bionic/semaphore.c \
bionic/sha1.c \ bionic/sha1.c \
bionic/ssp.c \ bionic/ssp.c \
@@ -360,11 +354,10 @@ libc_common_src_files += \
arch-arm/bionic/setjmp.S \ arch-arm/bionic/setjmp.S \
arch-arm/bionic/sigsetjmp.S \ arch-arm/bionic/sigsetjmp.S \
arch-arm/bionic/strlen.c.arm \ arch-arm/bionic/strlen.c.arm \
arch-arm/bionic/strcpy.S \
arch-arm/bionic/strcmp.S \
arch-arm/bionic/syscall.S \ arch-arm/bionic/syscall.S \
string/memmove.c.arm \ string/memmove.c.arm \
string/bcopy.c \ string/bcopy.c \
string/strcmp.c \
string/strncmp.c \ string/strncmp.c \
unistd/socketcalls.c unistd/socketcalls.c
@@ -372,7 +365,6 @@ libc_common_src_files += \
# can set breakpoints in them without messing # can set breakpoints in them without messing
# up any thumb code. # up any thumb code.
libc_common_src_files += \ libc_common_src_files += \
bionic/pthread-atfork.c.arm \
bionic/pthread-rwlocks.c.arm \ bionic/pthread-rwlocks.c.arm \
bionic/pthread-timers.c.arm \ bionic/pthread-timers.c.arm \
bionic/ptrace.c.arm bionic/ptrace.c.arm
@@ -399,7 +391,6 @@ libc_common_src_files += \
arch-x86/bionic/_exit_with_stack_teardown.S \ arch-x86/bionic/_exit_with_stack_teardown.S \
arch-x86/bionic/setjmp.S \ arch-x86/bionic/setjmp.S \
arch-x86/bionic/_setjmp.S \ arch-x86/bionic/_setjmp.S \
arch-x86/bionic/sigsetjmp.S \
arch-x86/bionic/vfork.S \ arch-x86/bionic/vfork.S \
arch-x86/bionic/syscall.S \ arch-x86/bionic/syscall.S \
arch-x86/string/bcopy_wrapper.S \ arch-x86/string/bcopy_wrapper.S \
@@ -411,8 +402,6 @@ libc_common_src_files += \
arch-x86/string/strcmp_wrapper.S \ arch-x86/string/strcmp_wrapper.S \
arch-x86/string/strncmp_wrapper.S \ arch-x86/string/strncmp_wrapper.S \
arch-x86/string/strlen_wrapper.S \ arch-x86/string/strlen_wrapper.S \
string/strcpy.c \
bionic/pthread-atfork.c \
bionic/pthread-rwlocks.c \ bionic/pthread-rwlocks.c \
bionic/pthread-timers.c \ bionic/pthread-timers.c \
bionic/ptrace.c bionic/ptrace.c
@@ -452,8 +441,6 @@ libc_common_src_files += \
string/strncmp.c \ string/strncmp.c \
string/memcmp.c \ string/memcmp.c \
string/strlen.c \ string/strlen.c \
string/strcpy.c \
bionic/pthread-atfork.c \
bionic/pthread-rwlocks.c \ bionic/pthread-rwlocks.c \
bionic/pthread-timers.c \ bionic/pthread-timers.c \
bionic/ptrace.c \ bionic/ptrace.c \
@@ -480,8 +467,7 @@ libc_common_cflags := \
-DINET6 \ -DINET6 \
-I$(LOCAL_PATH)/private \ -I$(LOCAL_PATH)/private \
-DUSE_DL_PREFIX \ -DUSE_DL_PREFIX \
-DPOSIX_MISTAKE \ -DPOSIX_MISTAKE
-DLOG_ON_HEAP_ERROR \
# these macro definitions are required to implement the # these macro definitions are required to implement the
# 'timezone' and 'daylight' global variables, as well as # 'timezone' and 'daylight' global variables, as well as
@@ -541,10 +527,6 @@ libc_common_c_includes := \
$(LOCAL_PATH)/string \ $(LOCAL_PATH)/string \
$(LOCAL_PATH)/stdio $(LOCAL_PATH)/stdio
# Needed to access private/__dso_handle.S from
# crtbegin_xxx.S and crtend_xxx.S
#
libc_crt_target_cflags += -I$(LOCAL_PATH)/private
# Define the libc run-time (crt) support object files that must be built, # Define the libc run-time (crt) support object files that must be built,
# which are needed to build all other objects (shared/static libs and # which are needed to build all other objects (shared/static libs and
@@ -735,7 +717,8 @@ LOCAL_SHARED_LIBRARIES := libc
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
LOCAL_SYSTEM_SHARED_LIBRARIES := LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
# Don't prelink
LOCAL_PRELINK_MODULE := false
# Don't install on release build # Don't install on release build
LOCAL_MODULE_TAGS := eng debug LOCAL_MODULE_TAGS := eng debug
@@ -761,7 +744,8 @@ LOCAL_MODULE:= libc_malloc_debug_qemu
LOCAL_SHARED_LIBRARIES := libc LOCAL_SHARED_LIBRARIES := libc
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
LOCAL_SYSTEM_SHARED_LIBRARIES := LOCAL_SYSTEM_SHARED_LIBRARIES :=
# Don't prelink
LOCAL_PRELINK_MODULE := false
# Don't install on release build # Don't install on release build
LOCAL_MODULE_TAGS := eng debug LOCAL_MODULE_TAGS := eng debug

View File

@@ -1,5 +1,5 @@
Copyright (c) 2005-2010, The Android Open Source Project Copyright (c) 2005-2008, The Android Open Source Project
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

View File

@@ -76,8 +76,6 @@ int setpgid(pid_t, pid_t) 57
pid_t vfork(void) 190,-1,190 pid_t vfork(void) 190,-1,190
int setregid:setregid32(gid_t, gid_t) 204 int setregid:setregid32(gid_t, gid_t) 204
int chroot(const char *) 61 int chroot(const char *) 61
# IMPORTANT: Even though <sys/prctl.h> declares prctl(int,...), the syscall stub must take 6 arguments
# to match the kernel implementation.
int prctl(int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5) 172 int prctl(int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5) 172
int capget(cap_user_header_t header, cap_user_data_t data) 184 int capget(cap_user_header_t header, cap_user_data_t data) 184
int capset(cap_user_header_t header, const cap_user_data_t data) 185 int capset(cap_user_header_t header, const cap_user_data_t data) 185
@@ -87,8 +85,8 @@ int acct(const char* filepath) 51
# file descriptors # file descriptors
ssize_t read (int, void*, size_t) 3 ssize_t read (int, void*, size_t) 3
ssize_t write (int, const void*, size_t) 4 ssize_t write (int, const void*, size_t) 4
ssize_t pread64 (int, void *, size_t, off64_t) 180 ssize_t __pread64:pread64 (int, void *, size_t, off_t, off_t) 180
ssize_t pwrite64 (int, void *, size_t, off64_t) 181 ssize_t __pwrite64:pwrite64 (int, void *, size_t, off_t, off_t) 181
int __open:open (const char*, int, mode_t) 5 int __open:open (const char*, int, mode_t) 5
int __openat:openat (int, const char*, int, mode_t) 322,295 int __openat:openat (int, const char*, int, mode_t) 322,295
int close (int) 6 int close (int) 6
@@ -118,7 +116,6 @@ int pipe2(int *, int) 359,331
int dup2(int, int) 63 int dup2(int, int) 63
int select:_newselect(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *) 142 int select:_newselect(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *) 142
int ftruncate(int, off_t) 93 int ftruncate(int, off_t) 93
int ftruncate64(int, off64_t) 194
int getdents:getdents64(unsigned int, struct dirent *, unsigned int) 217,220 int getdents:getdents64(unsigned int, struct dirent *, unsigned int) 217,220
int fsync(int) 118 int fsync(int) 118
int fdatasync(int) 148 int fdatasync(int) 148
@@ -176,7 +173,6 @@ int __timer_gettime:timer_gettime(timer_t, struct itimerspec*)
int __timer_getoverrun:timer_getoverrun(timer_t) 260,262 int __timer_getoverrun:timer_getoverrun(timer_t) 260,262
int __timer_delete:timer_delete(timer_t) 261,263 int __timer_delete:timer_delete(timer_t) 261,263
int utimes(const char*, const struct timeval tvp[2]) 269, 271 int utimes(const char*, const struct timeval tvp[2]) 269, 271
int utimensat(int, const char *, const struct timespec times[2], int) 348, 320, 320
# signals # signals
int sigaction(int, const struct sigaction *, struct sigaction *) 67 int sigaction(int, const struct sigaction *, struct sigaction *) 67
@@ -222,7 +218,7 @@ int sendmsg:socketcall:16(int, const struct msghdr *, unsigned int) -
int recvmsg:socketcall:17(int, struct msghdr *, unsigned int) -1,102,-1 int recvmsg:socketcall:17(int, struct msghdr *, unsigned int) -1,102,-1
# sockets for sh. # sockets for sh.
int __socketcall:socketcall(int, unsigned long*) -1,-1,102 int __socketcall:__socketcall(int, unsigned long*) -1,-1,102
# scheduler & real-time # scheduler & real-time
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param) 156 int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param) 156
@@ -233,9 +229,6 @@ int sched_getparam(pid_t pid, struct sched_param *param) 155
int sched_get_priority_max(int policy) 159 int sched_get_priority_max(int policy) 159
int sched_get_priority_min(int policy) 160 int sched_get_priority_min(int policy) 160
int sched_rr_get_interval(pid_t pid, struct timespec *interval) 161 int sched_rr_get_interval(pid_t pid, struct timespec *interval) 161
int sched_setaffinity(pid_t pid, size_t setsize, const cpu_set_t* set) 241
int __sched_getaffinity:sched_getaffinity(pid_t pid, size_t setsize, cpu_set_t* set) 242
int __getcpu:getcpu(unsigned *cpu, unsigned *node, void *unused) 345,318,318
# io priorities # io priorities
int ioprio_set(int which, int who, int ioprio) 314,289,288 int ioprio_set(int which, int who, int ioprio) 314,289,288

View File

@@ -26,10 +26,15 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#include <asm/unistd.h> #include <asm/unistd.h>
#include <machine/asm.h>
.text
.type _exit_with_stack_teardown, #function
.globl _exit_with_stack_teardown
.align 4
@ 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)
_exit_with_stack_teardown:
#if __ARM_EABI__ #if __ARM_EABI__
mov lr, r2 mov lr, r2
@@ -48,4 +53,3 @@ ENTRY(_exit_with_stack_teardown)
@ exit() should never return, cause a crash if it does @ exit() should never return, cause a crash if it does
mov r0, #0 mov r0, #0
ldr r0, [r0] ldr r0, [r0]
END(_exit_with_stack_teardown)

View File

@@ -70,7 +70,6 @@ ENTRY(_setjmp)
mov r0, #0x00000000 mov r0, #0x00000000
bx lr bx lr
END(_setjmp)
.L_setjmp_magic: .L_setjmp_magic:
.word _JB_MAGIC__SETJMP .word _JB_MAGIC__SETJMP
@@ -110,4 +109,3 @@ botch:
bl PIC_SYM(_C_LABEL(longjmperror), PLT) bl PIC_SYM(_C_LABEL(longjmperror), PLT)
bl PIC_SYM(_C_LABEL(abort), PLT) bl PIC_SYM(_C_LABEL(abort), PLT)
b . - 8 /* Cannot get here */ b . - 8 /* Cannot get here */
END(_longjmp)

View File

@@ -26,9 +26,17 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
#include <machine/asm.h>
#include <machine/cpu-features.h> #include <machine/cpu-features.h>
.global __atomic_cmpxchg
.type __atomic_cmpxchg, %function
.global __atomic_swap
.type __atomic_swap, %function
.global __atomic_dec
.type __atomic_dec, %function
.global __atomic_inc
.type __atomic_inc, %function
#define FUTEX_WAIT 0 #define FUTEX_WAIT 0
#define FUTEX_WAKE 1 #define FUTEX_WAKE 1
@@ -40,7 +48,8 @@
*/ */
/* r0(addr) -> r0(old) */ /* r0(addr) -> r0(old) */
ENTRY(__atomic_dec) __atomic_dec:
.fnstart
mov r1, r0 @ copy addr so we don't clobber it mov r1, r0 @ copy addr so we don't clobber it
1: ldrex r0, [r1] @ load current value into r0 1: ldrex r0, [r1] @ load current value into r0
sub r2, r0, #1 @ generate new value into r2 sub r2, r0, #1 @ generate new value into r2
@@ -48,10 +57,11 @@ ENTRY(__atomic_dec)
cmp r3, #0 @ success? cmp r3, #0 @ success?
bxeq lr @ yes, return bxeq lr @ yes, return
b 1b @ no, retry b 1b @ no, retry
END(__atomic_dec) .fnend
/* r0(addr) -> r0(old) */ /* r0(addr) -> r0(old) */
ENTRY(__atomic_inc) __atomic_inc:
.fnstart
mov r1, r0 mov r1, r0
1: ldrex r0, [r1] 1: ldrex r0, [r1]
add r2, r0, #1 add r2, r0, #1
@@ -59,10 +69,11 @@ ENTRY(__atomic_inc)
cmp r3, #0 cmp r3, #0
bxeq lr bxeq lr
b 1b b 1b
END(__atomic_inc) .fnend
/* r0(old) r1(new) r2(addr) -> r0(zero_if_succeeded) */ /* r0(old) r1(new) r2(addr) -> r0(zero_if_succeeded) */
ENTRY(__atomic_cmpxchg) __atomic_cmpxchg:
.fnstart
1: mov ip, #2 @ ip=2 means "new != old" 1: mov ip, #2 @ ip=2 means "new != old"
ldrex r3, [r2] @ load current value into r3 ldrex r3, [r2] @ load current value into r3
teq r0, r3 @ new == old? teq r0, r3 @ new == old?
@@ -71,17 +82,18 @@ ENTRY(__atomic_cmpxchg)
beq 1b @ yes, retry beq 1b @ yes, retry
mov r0, ip @ return 0 on success, 2 on failure mov r0, ip @ return 0 on success, 2 on failure
bx lr bx lr
END(__atomic_cmpxchg) .fnend
/* r0(new) r1(addr) -> r0(old) */ /* r0(new) r1(addr) -> r0(old) */
ENTRY(__atomic_swap) __atomic_swap:
.fnstart
1: ldrex r2, [r1] 1: ldrex r2, [r1]
strex r3, r0, [r1] strex r3, r0, [r1]
teq r3, #0 teq r3, #0
bne 1b bne 1b
mov r0, r2 mov r0, r2
bx lr bx lr
END(__atomic_swap) .fnend
#else /*not defined __ARM_HAVE_LDREX_STREX*/ #else /*not defined __ARM_HAVE_LDREX_STREX*/
/* /*
@@ -95,7 +107,8 @@ END(__atomic_swap)
.equ kernel_atomic_base, 0xFFFF0FFF .equ kernel_atomic_base, 0xFFFF0FFF
/* r0(addr) -> r0(old) */ /* r0(addr) -> r0(old) */
ENTRY(__atomic_dec) __atomic_dec:
.fnstart
.save {r4, lr} .save {r4, lr}
stmdb sp!, {r4, lr} stmdb sp!, {r4, lr}
mov r2, r0 mov r2, r0
@@ -109,10 +122,11 @@ ENTRY(__atomic_dec)
add r0, r1, #1 add r0, r1, #1
ldmia sp!, {r4, lr} ldmia sp!, {r4, lr}
bx lr bx lr
END(__atomic_dec) .fnend
/* r0(addr) -> r0(old) */ /* r0(addr) -> r0(old) */
ENTRY(__atomic_inc) __atomic_inc:
.fnstart
.save {r4, lr} .save {r4, lr}
stmdb sp!, {r4, lr} stmdb sp!, {r4, lr}
mov r2, r0 mov r2, r0
@@ -126,10 +140,11 @@ ENTRY(__atomic_inc)
sub r0, r1, #1 sub r0, r1, #1
ldmia sp!, {r4, lr} ldmia sp!, {r4, lr}
bx lr bx lr
END(__atomic_inc) .fnend
/* r0(old) r1(new) r2(addr) -> r0(zero_if_succeeded) */ /* r0(old) r1(new) r2(addr) -> r0(zero_if_succeeded) */
ENTRY(__atomic_cmpxchg) __atomic_cmpxchg:
.fnstart
.save {r4, lr} .save {r4, lr}
stmdb sp!, {r4, lr} stmdb sp!, {r4, lr}
mov r4, r0 /* r4 = save oldvalue */ mov r4, r0 /* r4 = save oldvalue */
@@ -145,13 +160,14 @@ ENTRY(__atomic_cmpxchg)
2: @ atomic_cmpxchg 2: @ atomic_cmpxchg
ldmia sp!, {r4, lr} ldmia sp!, {r4, lr}
bx lr bx lr
END(__atomic_cmpxchg) .fnend
/* r0(new) r1(addr) -> r0(old) */ /* r0(new) r1(addr) -> r0(old) */
ENTRY(__atomic_swap) __atomic_swap:
.fnstart
swp r0, r0, [r1] swp r0, r0, [r1]
bx lr bx lr
END(__atomic_swap) .fnend
#endif /*not defined __ARM_HAVE_LDREX_STREX*/ #endif /*not defined __ARM_HAVE_LDREX_STREX*/
@@ -175,16 +191,18 @@ END(__atomic_swap)
#if __ARM_EABI__ #if __ARM_EABI__
ENTRY(__futex_syscall3) __futex_syscall3:
.fnstart
stmdb sp!, {r4, r7} stmdb sp!, {r4, r7}
.save {r4, r7} .save {r4, r7}
ldr r7, =__NR_futex ldr r7, =__NR_futex
swi #0 swi #0
ldmia sp!, {r4, r7} ldmia sp!, {r4, r7}
bx lr bx lr
END(__futex_syscall3) .fnend
ENTRY(__futex_wait) __futex_wait:
.fnstart
stmdb sp!, {r4, r7} stmdb sp!, {r4, r7}
.save {r4, r7} .save {r4, r7}
mov r3, r2 mov r3, r2
@@ -194,9 +212,10 @@ ENTRY(__futex_wait)
swi #0 swi #0
ldmia sp!, {r4, r7} ldmia sp!, {r4, r7}
bx lr bx lr
END(__futex_wait) .fnend
ENTRY(__futex_wake) __futex_wake:
.fnstart
.save {r4, r7} .save {r4, r7}
stmdb sp!, {r4, r7} stmdb sp!, {r4, r7}
mov r2, r1 mov r2, r1
@@ -205,32 +224,28 @@ ENTRY(__futex_wake)
swi #0 swi #0
ldmia sp!, {r4, r7} ldmia sp!, {r4, r7}
bx lr bx lr
END(__futex_wake) .fnend
#else #else
ENTRY(__futex_syscall3) __futex_syscall3:
swi #__NR_futex swi #__NR_futex
bx lr bx lr
END(__futex_syscall3)
ENTRY(__futex_wait) __futex_wait:
mov r3, r2 mov r3, r2
mov r2, r1 mov r2, r1
mov r1, #FUTEX_WAIT mov r1, #FUTEX_WAIT
swi #__NR_futex swi #__NR_futex
bx lr bx lr
END(__futex_wait)
ENTRY(__futex_wake) __futex_wake:
mov r2, r1 mov r2, r1
mov r1, #FUTEX_WAKE mov r1, #FUTEX_WAKE
swi #__NR_futex swi #__NR_futex
bx lr bx lr
END(__futex_wake)
#endif #endif
ENTRY(__futex_syscall4) __futex_syscall4:
b __futex_syscall3 b __futex_syscall3
END(__futex_syscall4)

View File

@@ -26,9 +26,14 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
#include <machine/asm.h>
ENTRY(__pthread_clone) .text
.type __pthread_clone, #function
.global __pthread_clone
.align 4
.fnstart
__pthread_clone:
@ insert the args onto the new stack @ insert the args onto the new stack
str r0, [r1, #-4] str r0, [r1, #-4]
str r3, [r1, #-8] str r3, [r1, #-8]
@@ -68,7 +73,7 @@ ENTRY(__pthread_clone)
__error: __error:
mov r0, #-1 mov r0, #-1
bx lr bx lr
END(__pthread_clone) .fnend
# #
@@ -83,8 +88,12 @@ END(__pthread_clone)
# at the end of the parameter list makes the # at the end of the parameter list makes the
# implementation much simpler. # implementation much simpler.
# #
.type __bionic_clone, #function
.globl __bionic_clone
.align 4
.fnstart
ENTRY(__bionic_clone) __bionic_clone:
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7} .save {r4, r5, r6, r7}
@@ -115,4 +124,5 @@ ENTRY(__bionic_clone)
ldr r0, [sp, #-4] ldr r0, [sp, #-4]
ldr r1, [sp, #-8] ldr r1, [sp, #-8]
b __bionic_clone_entry b __bionic_clone_entry
END(__bionic_clone)
.fnend

View File

@@ -29,7 +29,6 @@
*/ */
#include <machine/asm.h> #include <machine/asm.h>
#include <machine/cpu-features.h>
/* /*
* ffs - find first set bit, this algorithm isolates the first set * ffs - find first set bit, this algorithm isolates the first set
@@ -37,8 +36,8 @@
* 6 bits as an index into the table. This algorithm should be a win * 6 bits as an index into the table. This algorithm should be a win
* over the checking each bit in turn as per the C compiled version. * over the checking each bit in turn as per the C compiled version.
* *
* Some newer ARM architectures have an instruction named * under ARMv5 there's an instruction called CLZ (count leading Zero's) that
* CLZ (count leading Zero's) that is used * could be used
* *
* This is the ffs algorithm devised by d.seal and posted to comp.sys.arm on * This is the ffs algorithm devised by d.seal and posted to comp.sys.arm on
* 16 Feb 1994. * 16 Feb 1994.
@@ -48,7 +47,7 @@ ENTRY(ffs)
/* Standard trick to isolate bottom bit in r0 or 0 if r0 = 0 on entry */ /* Standard trick to isolate bottom bit in r0 or 0 if r0 = 0 on entry */
rsb r1, r0, #0 rsb r1, r0, #0
ands r0, r0, r1 ands r0, r0, r1
#ifndef __ARM_HAVE_CLZ #ifndef __ARM_ARCH_5__
/* /*
* now r0 has at most one set bit, call this X * now r0 has at most one set bit, call this X
* if X = 0, all further instructions are skipped * if X = 0, all further instructions are skipped
@@ -62,7 +61,6 @@ ENTRY(ffs)
ldrneb r0, [ r2, r0, lsr #26 ] ldrneb r0, [ r2, r0, lsr #26 ]
bx lr bx lr
END(ffs)
.text; .text;
.type .L_ffs_table, _ASM_TYPE_OBJECT; .type .L_ffs_table, _ASM_TYPE_OBJECT;
@@ -76,10 +74,9 @@ END(ffs)
.byte 10, 0, 0, 25, 0, 0, 21, 27 /* 40-47 */ .byte 10, 0, 0, 25, 0, 0, 21, 27 /* 40-47 */
.byte 31, 0, 0, 0, 0, 24, 0, 20 /* 48-55 */ .byte 31, 0, 0, 0, 0, 24, 0, 20 /* 48-55 */
.byte 30, 0, 23, 19, 29, 18, 17, 0 /* 56-63 */ .byte 30, 0, 23, 19, 29, 18, 17, 0 /* 56-63 */
#else /* !defined(__ARM_HAVE_CLZ) */ #else
clzne r0, r0 clzne r0, r0
rsbne r0, r0, #32 rsbne r0, r0, #32
bx lr bx lr
END(ffs) #endif
#endif /* !defined(__ARM_HAVE_CLZ) */

View File

@@ -33,13 +33,17 @@
of a corrupted malloc heap). of a corrupted malloc heap).
*/ */
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
#include <machine/asm.h>
#ifndef __NR_kill #ifndef __NR_kill
#define __NR_kill 37 #define __NR_kill 37
#endif #endif
ENTRY(kill) .text
.type kill, #function
.globl kill
.align 4
kill:
stmfd sp!, {r4-r7, ip, lr} stmfd sp!, {r4-r7, ip, lr}
ldr r7, =__NR_kill ldr r7, =__NR_kill
swi #0 swi #0
@@ -47,4 +51,3 @@ ENTRY(kill)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(kill)

View File

@@ -30,7 +30,7 @@
* dynamic linker to copy their definition into the final libc.so binary. * dynamic linker to copy their definition into the final libc.so binary.
* *
* They are required to ensure backwards binary compatibility with * They are required to ensure backwards binary compatibility with
* Android 1.5, 1.6 and even 3.0 system images. Some applications built * Android 1.5 and Android 1.6 system images. Some applications built
* using the NDK require them to be here. * using the NDK require them to be here.
* *
* Now, for a more elaborate description of the issue: * Now, for a more elaborate description of the issue:
@@ -68,11 +68,6 @@
* applications that were generated with a previous version of the NDK * applications that were generated with a previous version of the NDK
* still need all 1.5/1.6 helper functions in libc.so and libn.so * still need all 1.5/1.6 helper functions in libc.so and libn.so
* *
* After 3.2, the toolchain was updated again, adding __aeabi_f2uiz to the
* list of requirements. Technically, this is due to mis-linked NDK libraries
* but it is easier to add a single function here than asking several app
* developers to fix their build.
*
* Final note: some of the functions below should really be in libm.so to * Final note: some of the functions below should really be in libm.so to
* completely reflect the state of 1.5/1.6 system images. However, * completely reflect the state of 1.5/1.6 system images. However,
* since libm.so depends on libc.so, it's easier to put all of * since libm.so depends on libc.so, it's easier to put all of
@@ -101,7 +96,6 @@
XX(__aeabi_dsub) \ XX(__aeabi_dsub) \
XX(__aeabi_f2d) \ XX(__aeabi_f2d) \
XX(__aeabi_f2iz) \ XX(__aeabi_f2iz) \
XX(__aeabi_f2uiz) \
XX(__aeabi_fadd) \ XX(__aeabi_fadd) \
XX(__aeabi_fcmpun) \ XX(__aeabi_fcmpun) \
XX(__aeabi_fdiv) \ XX(__aeabi_fdiv) \

View File

@@ -27,7 +27,12 @@
*/ */
#include <machine/cpu-features.h> #include <machine/cpu-features.h>
#include <machine/asm.h>
.text
.global memcmp
.type memcmp, %function
.align 4
/* /*
* Optimized memcmp() for ARM9. * Optimized memcmp() for ARM9.
@@ -38,7 +43,8 @@
* (2) The loads are scheduled in a way they won't stall * (2) The loads are scheduled in a way they won't stall
*/ */
ENTRY(memcmp) memcmp:
.fnstart
PLD (r0, #0) PLD (r0, #0)
PLD (r1, #0) PLD (r1, #0)
@@ -170,7 +176,7 @@ ENTRY(memcmp)
9: /* restore registers and return */ 9: /* restore registers and return */
ldmfd sp!, {r4, lr} ldmfd sp!, {r4, lr}
bx lr bx lr
END(memcmp) .fnend

View File

@@ -27,7 +27,12 @@
*/ */
#include <machine/cpu-features.h> #include <machine/cpu-features.h>
#include <machine/asm.h>
.text
.global __memcmp16
.type __memcmp16, %function
.align 4
/* /*
* Optimized memcmp16() for ARM9. * Optimized memcmp16() for ARM9.
@@ -38,7 +43,8 @@
* (2) The loads are scheduled in a way they won't stall * (2) The loads are scheduled in a way they won't stall
*/ */
ENTRY(__memcmp16) __memcmp16:
.fnstart
PLD (r0, #0) PLD (r0, #0)
PLD (r1, #0) PLD (r1, #0)
@@ -89,6 +95,8 @@ ENTRY(__memcmp16)
/* restore registers and return */ /* restore registers and return */
ldmnefd sp!, {r4, lr} ldmnefd sp!, {r4, lr}
bxne lr bxne lr
.fnend
0: /* here the first pointer is aligned, and we have at least 3 words 0: /* here the first pointer is aligned, and we have at least 3 words
@@ -229,4 +237,3 @@ ENTRY(__memcmp16)
7: /* fix up the 2 pointers and fallthrough... */ 7: /* fix up the 2 pointers and fallthrough... */
sub r1, r1, #2 sub r1, r1, #2
b 2b b 2b
END(__memcmp16)

View File

@@ -27,7 +27,6 @@
*/ */
#include <machine/cpu-features.h> #include <machine/cpu-features.h>
#include <machine/asm.h>
#if defined(__ARM_NEON__) #if defined(__ARM_NEON__)
@@ -144,12 +143,18 @@ memcpy:
ldmfd sp!, {r0, lr} ldmfd sp!, {r0, lr}
bx lr bx lr
END(memcpy) .fnend
#else /* __ARM_ARCH__ < 7 */ #else /* __ARM_ARCH__ < 7 */
.text
.global memcpy
.type memcpy, %function
.align 4
/* /*
* Optimized memcpy() for ARM. * Optimized memcpy() for ARM.
* *
@@ -157,11 +162,12 @@ END(memcpy)
* so we have to preserve R0. * so we have to preserve R0.
*/ */
ENTRY(memcpy) memcpy:
/* The stack must always be 64-bits aligned to be compliant with the /* The stack must always be 64-bits aligned to be compliant with the
* ARM ABI. Since we have to save R0, we might as well save R4 * ARM ABI. Since we have to save R0, we might as well save R4
* which we can use for better pipelining of the reads below * which we can use for better pipelining of the reads below
*/ */
.fnstart
.save {r0, r4, lr} .save {r0, r4, lr}
stmfd sp!, {r0, r4, lr} stmfd sp!, {r0, r4, lr}
/* Making room for r5-r11 which will be spilled later */ /* Making room for r5-r11 which will be spilled later */
@@ -498,7 +504,7 @@ copy_last_3_and_return:
add sp, sp, #28 add sp, sp, #28
ldmfd sp!, {r0, r4, lr} ldmfd sp!, {r0, r4, lr}
bx lr bx lr
END(memcpy) .fnend
#endif /* __ARM_ARCH__ < 7 */ #endif /* __ARM_ARCH__ < 7 */

View File

@@ -25,8 +25,15 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
.text
#include <machine/asm.h> .global memset
.type memset, %function
.global bzero
.type bzero, %function
.align
/* /*
* Optimized memset() for ARM. * Optimized memset() for ARM.
@@ -34,15 +41,15 @@
* memset() returns its first argument. * memset() returns its first argument.
*/ */
ENTRY(bzero) bzero:
mov r2, r1 mov r2, r1
mov r1, #0 mov r1, #0
END(bzero)
ENTRY(memset) memset:
/* compute the offset to align the destination /* compute the offset to align the destination
* offset = (4-(src&3))&3 = -src & 3 * offset = (4-(src&3))&3 = -src & 3
*/ */
.fnstart
.save {r0, r4-r7, lr} .save {r0, r4-r7, lr}
stmfd sp!, {r0, r4-r7, lr} stmfd sp!, {r0, r4-r7, lr}
rsb r3, r0, #0 rsb r3, r0, #0
@@ -106,4 +113,5 @@ ENTRY(memset)
strcsb r1, [r0] strcsb r1, [r0]
ldmfd sp!, {r0, r4-r7, lr} ldmfd sp!, {r0, r4-r7, lr}
bx lr bx lr
END(memset) .fnend

View File

@@ -79,7 +79,6 @@ ENTRY(setjmp)
mov r0, #0x00000000 mov r0, #0x00000000
bx lr bx lr
END(setjmp)
.Lsetjmp_magic: .Lsetjmp_magic:
.word _JB_MAGIC_SETJMP .word _JB_MAGIC_SETJMP
@@ -139,4 +138,3 @@ botch:
bl PIC_SYM(_C_LABEL(longjmperror), PLT) bl PIC_SYM(_C_LABEL(longjmperror), PLT)
bl PIC_SYM(_C_LABEL(abort), PLT) bl PIC_SYM(_C_LABEL(abort), PLT)
b . - 8 /* Cannot get here */ b . - 8 /* Cannot get here */
END(longjmp)

View File

@@ -33,8 +33,6 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#define _ALIGN_TEXT .align 0
#include <machine/asm.h> #include <machine/asm.h>
#include <machine/setjmp.h> #include <machine/setjmp.h>
@@ -52,7 +50,6 @@ ENTRY(sigsetjmp)
teq r1, #0 teq r1, #0
beq PIC_SYM(_C_LABEL(_setjmp), PLT) beq PIC_SYM(_C_LABEL(_setjmp), PLT)
b PIC_SYM(_C_LABEL(setjmp), PLT) b PIC_SYM(_C_LABEL(setjmp), PLT)
END(sigsetjmp)
.L_setjmp_magic: .L_setjmp_magic:
.word _JB_MAGIC__SETJMP .word _JB_MAGIC__SETJMP
@@ -63,4 +60,3 @@ ENTRY(siglongjmp)
teq r2, r3 teq r2, r3
beq PIC_SYM(_C_LABEL(_longjmp), PLT) beq PIC_SYM(_C_LABEL(_longjmp), PLT)
b PIC_SYM(_C_LABEL(longjmp), PLT) b PIC_SYM(_C_LABEL(longjmp), PLT)
END(siglongjmp)

View File

@@ -1,321 +0,0 @@
/*
* Copyright (c) 2011 The Android Open Source Project
* Copyright (c) 2008 ARM Ltd
* 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 company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``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 ARM LTD 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.
*/
#include <machine/cpu-features.h>
.text
.global strcmp
.type strcmp, %function
.align 4
#ifdef __ARMEB__
#define SHFT2LSB lsl
#define SHFT2LSBEQ lsleq
#define SHFT2MSB lsr
#define SHFT2MSBEQ lsreq
#define MSB 0x000000ff
#define LSB 0xff000000
#else
#define SHFT2LSB lsr
#define SHFT2LSBEQ lsreq
#define SHFT2MSB lsl
#define SHFT2MSBEQ lsleq
#define MSB 0xff000000
#define LSB 0x000000ff
#endif
#define magic1(REG) REG
#define magic2(REG) REG, lsl #7
strcmp:
.fnstart
PLD(r0, #0)
PLD(r1, #0)
eor r2, r0, r1
tst r2, #3
/* Strings not at same byte offset from a word boundary. */
bne .Lstrcmp_unaligned
ands r2, r0, #3
bic r0, r0, #3
bic r1, r1, #3
ldr ip, [r0], #4
it eq
ldreq r3, [r1], #4
beq 1f
/* Although s1 and s2 have identical initial alignment, they are
* not currently word aligned. Rather than comparing bytes,
* make sure that any bytes fetched from before the addressed
* bytes are forced to 0xff. Then they will always compare
* equal.
*/
eor r2, r2, #3
lsl r2, r2, #3
mvn r3, #MSB
SHFT2LSB r2, r3, r2
ldr r3, [r1], #4
orr ip, ip, r2
orr r3, r3, r2
1:
/* Load the 'magic' constant 0x01010101. */
str r4, [sp, #-4]!
mov r4, #1
orr r4, r4, r4, lsl #8
orr r4, r4, r4, lsl #16
.p2align 2
4:
PLD(r0, #8)
PLD(r1, #8)
sub r2, ip, magic1(r4)
cmp ip, r3
itttt eq
/* check for any zero bytes in first word */
biceq r2, r2, ip
tsteq r2, magic2(r4)
ldreq ip, [r0], #4
ldreq r3, [r1], #4
beq 4b
2:
/* There's a zero or a different byte in the word */
SHFT2MSB r0, ip, #24
SHFT2LSB ip, ip, #8
cmp r0, #1
it cs
cmpcs r0, r3, SHFT2MSB #24
it eq
SHFT2LSBEQ r3, r3, #8
beq 2b
/* On a big-endian machine, r0 contains the desired byte in bits
* 0-7; on a little-endian machine they are in bits 24-31. In
* both cases the other bits in r0 are all zero. For r3 the
* interesting byte is at the other end of the word, but the
* other bits are not necessarily zero. We need a signed result
* representing the differnece in the unsigned bytes, so for the
* little-endian case we can't just shift the interesting bits up.
*/
#ifdef __ARMEB__
sub r0, r0, r3, lsr #24
#else
and r3, r3, #255
/* No RSB instruction in Thumb2 */
#ifdef __thumb2__
lsr r0, r0, #24
sub r0, r0, r3
#else
rsb r0, r3, r0, lsr #24
#endif
#endif
ldr r4, [sp], #4
bx lr
.fnend
.Lstrcmp_unaligned:
wp1 .req r0
wp2 .req r1
b1 .req r2
w1 .req r4
w2 .req r5
t1 .req ip
@ r3 is scratch
/* First of all, compare bytes until wp1(sp1) is word-aligned. */
1:
tst wp1, #3
beq 2f
ldrb r2, [wp1], #1
ldrb r3, [wp2], #1
cmp r2, #1
it cs
cmpcs r2, r3
beq 1b
sub r0, r2, r3
bx lr
2:
str r5, [sp, #-4]!
str r4, [sp, #-4]!
mov b1, #1
orr b1, b1, b1, lsl #8
orr b1, b1, b1, lsl #16
and t1, wp2, #3
bic wp2, wp2, #3
ldr w1, [wp1], #4
ldr w2, [wp2], #4
cmp t1, #2
beq 2f
bhi 3f
/* Critical inner Loop: Block with 3 bytes initial overlap */
.p2align 2
1:
bic t1, w1, #MSB
cmp t1, w2, SHFT2LSB #8
sub r3, w1, b1
bic r3, r3, w1
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, SHFT2MSB #24
bne 6f
ldr w1, [wp1], #4
b 1b
4:
SHFT2LSB w2, w2, #8
b 8f
5:
#ifdef __ARMEB__
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #0xff000000
itt ne
tstne w1, #0x00ff0000
tstne w1, #0x0000ff00
beq 7f
#else
bics r3, r3, #0xff000000
bne 7f
#endif
ldrb w2, [wp2]
SHFT2LSB t1, w1, #24
#ifdef __ARMEB__
lsl w2, w2, #24
#endif
b 8f
6:
SHFT2LSB t1, w1, #24
and w2, w2, #LSB
b 8f
/* Critical inner Loop: Block with 2 bytes initial overlap */
.p2align 2
2:
SHFT2MSB t1, w1, #16
sub r3, w1, b1
SHFT2LSB t1, t1, #16
bic r3, r3, w1
cmp t1, w2, SHFT2LSB #16
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, SHFT2MSB #16
bne 6f
ldr w1, [wp1], #4
b 2b
5:
#ifdef __ARMEB__
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #0xff000000
it ne
tstne w1, #0x00ff0000
beq 7f
#else
lsls r3, r3, #16
bne 7f
#endif
ldrh w2, [wp2]
SHFT2LSB t1, w1, #16
#ifdef __ARMEB__
lsl w2, w2, #16
#endif
b 8f
6:
SHFT2MSB w2, w2, #16
SHFT2LSB t1, w1, #16
4:
SHFT2LSB w2, w2, #16
b 8f
/* Critical inner Loop: Block with 1 byte initial overlap */
.p2align 2
3:
and t1, w1, #LSB
cmp t1, w2, SHFT2LSB #24
sub r3, w1, b1
bic r3, r3, w1
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, SHFT2MSB #8
bne 6f
ldr w1, [wp1], #4
b 3b
4:
SHFT2LSB w2, w2, #24
b 8f
5:
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #LSB
beq 7f
ldr w2, [wp2], #4
6:
SHFT2LSB t1, w1, #8
bic w2, w2, #MSB
b 8f
7:
mov r0, #0
ldr r4, [sp], #4
ldr r5, [sp], #4
bx lr
8:
and r2, t1, #LSB
and r0, w2, #LSB
cmp r0, #1
it cs
cmpcs r0, r2
itt eq
SHFT2LSBEQ t1, t1, #8
SHFT2LSBEQ w2, w2, #8
beq 8b
sub r0, r2, r0
ldr r4, [sp], #4
ldr r5, [sp], #4
bx lr

View File

@@ -1,133 +0,0 @@
/*
* Copyright (C) 2010 The Android Open Source Project
* Copyright (c) 2008 ARM Ltd
* 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 company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``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 ARM LTD 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.
*
* Android adaptation and tweak by Jim Huang <jserv@0xlab.org>.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
ENTRY(strcpy)
PLD(r1, #0)
eor r2, r0, r1
mov ip, r0
tst r2, #3
bne 4f
tst r1, #3
bne 3f
5:
str r5, [sp, #-4]!
mov r5, #0x01
orr r5, r5, r5, lsl #8
orr r5, r5, r5, lsl #16
str r4, [sp, #-4]!
tst r1, #4
ldr r3, [r1], #4
beq 2f
sub r2, r3, r5
bics r2, r2, r3
tst r2, r5, lsl #7
itt eq
streq r3, [ip], #4
ldreq r3, [r1], #4
bne 1f
/* Inner loop. We now know that r1 is 64-bit aligned, so we
can safely fetch up to two words. This allows us to avoid
load stalls. */
.p2align 2
2:
PLD(r1, #8)
ldr r4, [r1], #4
sub r2, r3, r5
bics r2, r2, r3
tst r2, r5, lsl #7
sub r2, r4, r5
bne 1f
str r3, [ip], #4
bics r2, r2, r4
tst r2, r5, lsl #7
itt eq
ldreq r3, [r1], #4
streq r4, [ip], #4
beq 2b
mov r3, r4
1:
#ifdef __ARMEB__
rors r3, r3, #24
#endif
strb r3, [ip], #1
tst r3, #0xff
#ifdef __ARMEL__
ror r3, r3, #8
#endif
bne 1b
ldr r4, [sp], #4
ldr r5, [sp], #4
bx lr
/* Strings have the same offset from word alignment, but it's
not zero. */
3:
tst r1, #1
beq 1f
ldrb r2, [r1], #1
strb r2, [ip], #1
cmp r2, #0
it eq
bxeq lr
1:
tst r1, #2
beq 5b
ldrh r2, [r1], #2
#ifdef __ARMEB__
tst r2, #0xff00
iteet ne
strneh r2, [ip], #2
lsreq r2, r2, #8
streqb r2, [ip]
tstne r2, #0xff
#else
tst r2, #0xff
itet ne
strneh r2, [ip], #2
streqb r2, [ip]
tstne r2, #0xff00
#endif
bne 5b
bx lr
/* src and dst do not have a common word-alignement. Fall back to
byte copying. */
4:
ldrb r2, [r1], #1
strb r2, [ip], #1
cmp r2, #0
bne 4b
bx lr
END(strcpy)

View File

@@ -32,15 +32,18 @@
abort due to a fatal runtime error (e.g. detection abort due to a fatal runtime error (e.g. detection
of a corrupted malloc heap). of a corrupted malloc heap).
*/ */
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
#include <machine/asm.h>
#ifndef __NR_tkill #ifndef __NR_tkill
#define __NR_tkill 238 #define __NR_tkill 238
#endif #endif
ENTRY(tkill) .text
.type tkill, #function
.globl tkill
.align 4
tkill:
stmfd sp!, {r4-r7, ip, lr} stmfd sp!, {r4-r7, ip, lr}
ldr r7, =__NR_tkill ldr r7, =__NR_tkill
swi #0 swi #0
@@ -48,4 +51,3 @@ ENTRY(tkill)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(tkill)

View File

@@ -1,89 +1,10 @@
/* $OpenBSD: endian.h,v 1.3 2005/12/13 00:35:23 millert Exp $ */ /* $OpenBSD: endian.h,v 1.3 2005/12/13 00:35:23 millert Exp $ */
/*
* Copyright (C) 2010 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.
*/
#ifndef _ARM_ENDIAN_H_
#define _ARM_ENDIAN_H_
#ifdef __GNUC__
/*
* REV and REV16 weren't available on ARM5 or ARM4.
* We don't include <machine/cpu-features.h> because it pollutes the
* namespace with macros like PLD.
*/
#if !defined __ARM_ARCH_5__ && !defined __ARM_ARCH_5T__ && \
!defined __ARM_ARCH_5TE__ && !defined __ARM_ARCH_5TEJ__ && \
!defined __ARM_ARCH_4T__ && !defined __ARM_ARCH_4__
/* According to RealView Assembler User's Guide, REV and REV16 are available
* in Thumb code and 16-bit instructions when used in Thumb-2 code.
*
* REV Rd, Rm
* Rd and Rm must both be Lo registers.
*
* REV16 Rd, Rm
* Rd and Rm must both be Lo registers.
*
* The +l constraint takes care of this without constraining us in ARM mode.
*/
#define __swap16md(x) ({ \
register u_int16_t _x = (x); \
__asm volatile ("rev16 %0, %0" : "+l" (_x)); \
_x; \
})
#define __swap32md(x) ({ \
register u_int32_t _x = (x); \
__asm volatile ("rev %0, %0" : "+l" (_x)); \
_x; \
})
#define __swap64md(x) ({ \
u_int64_t _swap64md_x = (x); \
(u_int64_t) __swap32md(_swap64md_x >> 32) | \
(u_int64_t) __swap32md(_swap64md_x & 0xffffffff) << 32; \
})
/* Tell sys/endian.h we have MD variants of the swap macros. */
#define MD_SWAP
#endif /* __ARM_ARCH__ */
#endif /* __GNUC__ */
#ifdef __ARMEB__ #ifdef __ARMEB__
#define _BYTE_ORDER _BIG_ENDIAN #define _BYTE_ORDER _BIG_ENDIAN
#else #else
#define _BYTE_ORDER _LITTLE_ENDIAN #define _BYTE_ORDER _LITTLE_ENDIAN
#endif #endif
#define __STRICT_ALIGNMENT #define __STRICT_ALIGNMENT
#include <sys/types.h> #include <sys/types.h>
#include <sys/endian.h> #include <sys/endian.h>
#endif /* !_ARM_ENDIAN_H_ */

View File

@@ -70,13 +70,7 @@
#define _ASM_TYPE_FUNCTION #function #define _ASM_TYPE_FUNCTION #function
#define _ASM_TYPE_OBJECT #object #define _ASM_TYPE_OBJECT #object
#define _ENTRY(x) \ #define _ENTRY(x) \
.text; _ALIGN_TEXT; .globl x; .type x,_ASM_TYPE_FUNCTION; x: .fnstart .text; _ALIGN_TEXT; .globl x; .type x,_ASM_TYPE_FUNCTION; x:
#define _ASM_SIZE(x) .size x, .-x;
#define _END(x) \
.fnend; \
_ASM_SIZE(x)
#ifdef GPROF #ifdef GPROF
# ifdef __ELF__ # ifdef __ELF__
@@ -92,10 +86,8 @@
#define ENTRY(y) _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE #define ENTRY(y) _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE
#define ENTRY_NP(y) _ENTRY(_C_LABEL(y)) #define ENTRY_NP(y) _ENTRY(_C_LABEL(y))
#define END(y) _END(_C_LABEL(y))
#define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE #define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
#define ASENTRY_NP(y) _ENTRY(_ASM_LABEL(y)) #define ASENTRY_NP(y) _ENTRY(_ASM_LABEL(y))
#define ASEND(y) _END(_ASM_LABEL(y))
#define ASMSTR .asciz #define ASMSTR .asciz

View File

@@ -185,7 +185,6 @@
#endif #endif
/* Assembly-only macros */ /* Assembly-only macros */
#ifdef __ASSEMBLY__
/* define a handy PLD(address) macro since the cache preload /* define a handy PLD(address) macro since the cache preload
* is an optional opcode * is an optional opcode
@@ -196,6 +195,4 @@
# define PLD(reg,offset) /* nothing */ # define PLD(reg,offset) /* nothing */
#endif #endif
#endif /* ! __ASSEMBLY__ */
#endif /* _ARM_MACHINE_CPU_FEATURES_H */ #endif /* _ARM_MACHINE_CPU_FEATURES_H */

View File

@@ -41,8 +41,8 @@ syscall_src += arch-arm/syscalls/sigaltstack.S
syscall_src += arch-arm/syscalls/acct.S syscall_src += arch-arm/syscalls/acct.S
syscall_src += arch-arm/syscalls/read.S syscall_src += arch-arm/syscalls/read.S
syscall_src += arch-arm/syscalls/write.S syscall_src += arch-arm/syscalls/write.S
syscall_src += arch-arm/syscalls/pread64.S syscall_src += arch-arm/syscalls/__pread64.S
syscall_src += arch-arm/syscalls/pwrite64.S syscall_src += arch-arm/syscalls/__pwrite64.S
syscall_src += arch-arm/syscalls/__open.S syscall_src += arch-arm/syscalls/__open.S
syscall_src += arch-arm/syscalls/__openat.S syscall_src += arch-arm/syscalls/__openat.S
syscall_src += arch-arm/syscalls/close.S syscall_src += arch-arm/syscalls/close.S
@@ -70,7 +70,6 @@ syscall_src += arch-arm/syscalls/pipe2.S
syscall_src += arch-arm/syscalls/dup2.S syscall_src += arch-arm/syscalls/dup2.S
syscall_src += arch-arm/syscalls/select.S syscall_src += arch-arm/syscalls/select.S
syscall_src += arch-arm/syscalls/ftruncate.S syscall_src += arch-arm/syscalls/ftruncate.S
syscall_src += arch-arm/syscalls/ftruncate64.S
syscall_src += arch-arm/syscalls/getdents.S syscall_src += arch-arm/syscalls/getdents.S
syscall_src += arch-arm/syscalls/fsync.S syscall_src += arch-arm/syscalls/fsync.S
syscall_src += arch-arm/syscalls/fdatasync.S syscall_src += arch-arm/syscalls/fdatasync.S
@@ -124,7 +123,6 @@ syscall_src += arch-arm/syscalls/__timer_gettime.S
syscall_src += arch-arm/syscalls/__timer_getoverrun.S syscall_src += arch-arm/syscalls/__timer_getoverrun.S
syscall_src += arch-arm/syscalls/__timer_delete.S syscall_src += arch-arm/syscalls/__timer_delete.S
syscall_src += arch-arm/syscalls/utimes.S syscall_src += arch-arm/syscalls/utimes.S
syscall_src += arch-arm/syscalls/utimensat.S
syscall_src += arch-arm/syscalls/sigaction.S syscall_src += arch-arm/syscalls/sigaction.S
syscall_src += arch-arm/syscalls/sigprocmask.S syscall_src += arch-arm/syscalls/sigprocmask.S
syscall_src += arch-arm/syscalls/__sigsuspend.S syscall_src += arch-arm/syscalls/__sigsuspend.S
@@ -155,9 +153,6 @@ syscall_src += arch-arm/syscalls/sched_getparam.S
syscall_src += arch-arm/syscalls/sched_get_priority_max.S syscall_src += arch-arm/syscalls/sched_get_priority_max.S
syscall_src += arch-arm/syscalls/sched_get_priority_min.S syscall_src += arch-arm/syscalls/sched_get_priority_min.S
syscall_src += arch-arm/syscalls/sched_rr_get_interval.S syscall_src += arch-arm/syscalls/sched_rr_get_interval.S
syscall_src += arch-arm/syscalls/sched_setaffinity.S
syscall_src += arch-arm/syscalls/__sched_getaffinity.S
syscall_src += arch-arm/syscalls/__getcpu.S
syscall_src += arch-arm/syscalls/ioprio_set.S syscall_src += arch-arm/syscalls/ioprio_set.S
syscall_src += arch-arm/syscalls/ioprio_get.S syscall_src += arch-arm/syscalls/ioprio_get.S
syscall_src += arch-arm/syscalls/uname.S syscall_src += arch-arm/syscalls/uname.S

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__brk) .text
.type __brk, #function
.globl __brk
.align 4
.fnstart
__brk:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_brk ldr r7, =__NR_brk
@@ -11,4 +16,4 @@ ENTRY(__brk)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__brk) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__fcntl) .text
.type __fcntl, #function
.globl __fcntl
.align 4
.fnstart
__fcntl:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fcntl ldr r7, =__NR_fcntl
@@ -11,4 +16,4 @@ ENTRY(__fcntl)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__fcntl) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__fcntl64) .text
.type __fcntl64, #function
.globl __fcntl64
.align 4
.fnstart
__fcntl64:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fcntl64 ldr r7, =__NR_fcntl64
@@ -11,4 +16,4 @@ ENTRY(__fcntl64)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__fcntl64) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__fork) .text
.type __fork, #function
.globl __fork
.align 4
.fnstart
__fork:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fork ldr r7, =__NR_fork
@@ -11,4 +16,4 @@ ENTRY(__fork)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__fork) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__fstatfs64) .text
.type __fstatfs64, #function
.globl __fstatfs64
.align 4
.fnstart
__fstatfs64:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fstatfs64 ldr r7, =__NR_fstatfs64
@@ -11,4 +16,4 @@ ENTRY(__fstatfs64)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__fstatfs64) .fnend

View File

@@ -1,14 +0,0 @@
/* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__getcpu)
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_getcpu
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
END(__getcpu)

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__getcwd) .text
.type __getcwd, #function
.globl __getcwd
.align 4
.fnstart
__getcwd:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_getcwd ldr r7, =__NR_getcwd
@@ -11,4 +16,4 @@ ENTRY(__getcwd)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__getcwd) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__getpriority) .text
.type __getpriority, #function
.globl __getpriority
.align 4
.fnstart
__getpriority:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_getpriority ldr r7, =__NR_getpriority
@@ -11,4 +16,4 @@ ENTRY(__getpriority)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__getpriority) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__ioctl) .text
.type __ioctl, #function
.globl __ioctl
.align 4
.fnstart
__ioctl:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_ioctl ldr r7, =__NR_ioctl
@@ -11,4 +16,4 @@ ENTRY(__ioctl)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__ioctl) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__llseek) .text
.type __llseek, #function
.globl __llseek
.align 4
.fnstart
__llseek:
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7} .save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
@@ -13,4 +18,4 @@ ENTRY(__llseek)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__llseek) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__mmap2) .text
.type __mmap2, #function
.globl __mmap2
.align 4
.fnstart
__mmap2:
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7} .save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
@@ -13,4 +18,4 @@ ENTRY(__mmap2)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__mmap2) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__open) .text
.type __open, #function
.globl __open
.align 4
.fnstart
__open:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_open ldr r7, =__NR_open
@@ -11,4 +16,4 @@ ENTRY(__open)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__open) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__openat) .text
.type __openat, #function
.globl __openat
.align 4
.fnstart
__openat:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_openat ldr r7, =__NR_openat
@@ -11,4 +16,4 @@ ENTRY(__openat)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__openat) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(pread64) .text
.type __pread64, #function
.globl __pread64
.align 4
.fnstart
__pread64:
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7} .save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
@@ -13,4 +18,4 @@ ENTRY(pread64)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(pread64) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__ptrace) .text
.type __ptrace, #function
.globl __ptrace
.align 4
.fnstart
__ptrace:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_ptrace ldr r7, =__NR_ptrace
@@ -11,4 +16,4 @@ ENTRY(__ptrace)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__ptrace) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(pwrite64) .text
.type __pwrite64, #function
.globl __pwrite64
.align 4
.fnstart
__pwrite64:
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7} .save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
@@ -13,4 +18,4 @@ ENTRY(pwrite64)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(pwrite64) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__reboot) .text
.type __reboot, #function
.globl __reboot
.align 4
.fnstart
__reboot:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_reboot ldr r7, =__NR_reboot
@@ -11,4 +16,4 @@ ENTRY(__reboot)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__reboot) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__rt_sigaction) .text
.type __rt_sigaction, #function
.globl __rt_sigaction
.align 4
.fnstart
__rt_sigaction:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_rt_sigaction ldr r7, =__NR_rt_sigaction
@@ -11,4 +16,4 @@ ENTRY(__rt_sigaction)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__rt_sigaction) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__rt_sigprocmask) .text
.type __rt_sigprocmask, #function
.globl __rt_sigprocmask
.align 4
.fnstart
__rt_sigprocmask:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_rt_sigprocmask ldr r7, =__NR_rt_sigprocmask
@@ -11,4 +16,4 @@ ENTRY(__rt_sigprocmask)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__rt_sigprocmask) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__rt_sigtimedwait) .text
.type __rt_sigtimedwait, #function
.globl __rt_sigtimedwait
.align 4
.fnstart
__rt_sigtimedwait:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_rt_sigtimedwait ldr r7, =__NR_rt_sigtimedwait
@@ -11,4 +16,4 @@ ENTRY(__rt_sigtimedwait)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__rt_sigtimedwait) .fnend

View File

@@ -1,14 +0,0 @@
/* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__sched_getaffinity)
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_sched_getaffinity
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
END(__sched_getaffinity)

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__set_tls) .text
.type __set_tls, #function
.globl __set_tls
.align 4
.fnstart
__set_tls:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_ARM_set_tls ldr r7, =__NR_ARM_set_tls
@@ -11,4 +16,4 @@ ENTRY(__set_tls)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__set_tls) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__setresuid) .text
.type __setresuid, #function
.globl __setresuid
.align 4
.fnstart
__setresuid:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_setresuid32 ldr r7, =__NR_setresuid32
@@ -11,4 +16,4 @@ ENTRY(__setresuid)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__setresuid) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__setreuid) .text
.type __setreuid, #function
.globl __setreuid
.align 4
.fnstart
__setreuid:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_setreuid32 ldr r7, =__NR_setreuid32
@@ -11,4 +16,4 @@ ENTRY(__setreuid)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__setreuid) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__setuid) .text
.type __setuid, #function
.globl __setuid
.align 4
.fnstart
__setuid:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_setuid32 ldr r7, =__NR_setuid32
@@ -11,4 +16,4 @@ ENTRY(__setuid)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__setuid) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__sigsuspend) .text
.type __sigsuspend, #function
.globl __sigsuspend
.align 4
.fnstart
__sigsuspend:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_sigsuspend ldr r7, =__NR_sigsuspend
@@ -11,4 +16,4 @@ ENTRY(__sigsuspend)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__sigsuspend) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__statfs64) .text
.type __statfs64, #function
.globl __statfs64
.align 4
.fnstart
__statfs64:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_statfs64 ldr r7, =__NR_statfs64
@@ -11,4 +16,4 @@ ENTRY(__statfs64)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__statfs64) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__sys_clone) .text
.type __sys_clone, #function
.globl __sys_clone
.align 4
.fnstart
__sys_clone:
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7} .save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
@@ -13,4 +18,4 @@ ENTRY(__sys_clone)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__sys_clone) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__syslog) .text
.type __syslog, #function
.globl __syslog
.align 4
.fnstart
__syslog:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_syslog ldr r7, =__NR_syslog
@@ -11,4 +16,4 @@ ENTRY(__syslog)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__syslog) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__timer_create) .text
.type __timer_create, #function
.globl __timer_create
.align 4
.fnstart
__timer_create:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_create ldr r7, =__NR_timer_create
@@ -11,4 +16,4 @@ ENTRY(__timer_create)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__timer_create) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__timer_delete) .text
.type __timer_delete, #function
.globl __timer_delete
.align 4
.fnstart
__timer_delete:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_delete ldr r7, =__NR_timer_delete
@@ -11,4 +16,4 @@ ENTRY(__timer_delete)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__timer_delete) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__timer_getoverrun) .text
.type __timer_getoverrun, #function
.globl __timer_getoverrun
.align 4
.fnstart
__timer_getoverrun:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_getoverrun ldr r7, =__NR_timer_getoverrun
@@ -11,4 +16,4 @@ ENTRY(__timer_getoverrun)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__timer_getoverrun) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__timer_gettime) .text
.type __timer_gettime, #function
.globl __timer_gettime
.align 4
.fnstart
__timer_gettime:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_gettime ldr r7, =__NR_timer_gettime
@@ -11,4 +16,4 @@ ENTRY(__timer_gettime)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__timer_gettime) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__timer_settime) .text
.type __timer_settime, #function
.globl __timer_settime
.align 4
.fnstart
__timer_settime:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_timer_settime ldr r7, =__NR_timer_settime
@@ -11,4 +16,4 @@ ENTRY(__timer_settime)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__timer_settime) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__wait4) .text
.type __wait4, #function
.globl __wait4
.align 4
.fnstart
__wait4:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_wait4 ldr r7, =__NR_wait4
@@ -11,4 +16,4 @@ ENTRY(__wait4)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__wait4) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(__waitid) .text
.type __waitid, #function
.globl __waitid
.align 4
.fnstart
__waitid:
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7} .save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
@@ -13,4 +18,4 @@ ENTRY(__waitid)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(__waitid) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(_exit) .text
.type _exit, #function
.globl _exit
.align 4
.fnstart
_exit:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_exit_group ldr r7, =__NR_exit_group
@@ -11,4 +16,4 @@ ENTRY(_exit)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(_exit) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(_exit_thread) .text
.type _exit_thread, #function
.globl _exit_thread
.align 4
.fnstart
_exit_thread:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_exit ldr r7, =__NR_exit
@@ -11,4 +16,4 @@ ENTRY(_exit_thread)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(_exit_thread) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(accept) .text
.type accept, #function
.globl accept
.align 4
.fnstart
accept:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_accept ldr r7, =__NR_accept
@@ -11,4 +16,4 @@ ENTRY(accept)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(accept) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(access) .text
.type access, #function
.globl access
.align 4
.fnstart
access:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_access ldr r7, =__NR_access
@@ -11,4 +16,4 @@ ENTRY(access)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(access) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(acct) .text
.type acct, #function
.globl acct
.align 4
.fnstart
acct:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_acct ldr r7, =__NR_acct
@@ -11,4 +16,4 @@ ENTRY(acct)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(acct) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(bind) .text
.type bind, #function
.globl bind
.align 4
.fnstart
bind:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_bind ldr r7, =__NR_bind
@@ -11,4 +16,4 @@ ENTRY(bind)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(bind) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(cacheflush) .text
.type cacheflush, #function
.globl cacheflush
.align 4
.fnstart
cacheflush:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_ARM_cacheflush ldr r7, =__NR_ARM_cacheflush
@@ -11,4 +16,4 @@ ENTRY(cacheflush)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(cacheflush) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(capget) .text
.type capget, #function
.globl capget
.align 4
.fnstart
capget:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_capget ldr r7, =__NR_capget
@@ -11,4 +16,4 @@ ENTRY(capget)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(capget) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(capset) .text
.type capset, #function
.globl capset
.align 4
.fnstart
capset:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_capset ldr r7, =__NR_capset
@@ -11,4 +16,4 @@ ENTRY(capset)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(capset) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(chdir) .text
.type chdir, #function
.globl chdir
.align 4
.fnstart
chdir:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_chdir ldr r7, =__NR_chdir
@@ -11,4 +16,4 @@ ENTRY(chdir)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(chdir) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(chmod) .text
.type chmod, #function
.globl chmod
.align 4
.fnstart
chmod:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_chmod ldr r7, =__NR_chmod
@@ -11,4 +16,4 @@ ENTRY(chmod)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(chmod) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(chown) .text
.type chown, #function
.globl chown
.align 4
.fnstart
chown:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_chown32 ldr r7, =__NR_chown32
@@ -11,4 +16,4 @@ ENTRY(chown)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(chown) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(chroot) .text
.type chroot, #function
.globl chroot
.align 4
.fnstart
chroot:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_chroot ldr r7, =__NR_chroot
@@ -11,4 +16,4 @@ ENTRY(chroot)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(chroot) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(clock_getres) .text
.type clock_getres, #function
.globl clock_getres
.align 4
.fnstart
clock_getres:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_clock_getres ldr r7, =__NR_clock_getres
@@ -11,4 +16,4 @@ ENTRY(clock_getres)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(clock_getres) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(clock_gettime) .text
.type clock_gettime, #function
.globl clock_gettime
.align 4
.fnstart
clock_gettime:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_clock_gettime ldr r7, =__NR_clock_gettime
@@ -11,4 +16,4 @@ ENTRY(clock_gettime)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(clock_gettime) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(clock_nanosleep) .text
.type clock_nanosleep, #function
.globl clock_nanosleep
.align 4
.fnstart
clock_nanosleep:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_clock_nanosleep ldr r7, =__NR_clock_nanosleep
@@ -11,4 +16,4 @@ ENTRY(clock_nanosleep)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(clock_nanosleep) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(clock_settime) .text
.type clock_settime, #function
.globl clock_settime
.align 4
.fnstart
clock_settime:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_clock_settime ldr r7, =__NR_clock_settime
@@ -11,4 +16,4 @@ ENTRY(clock_settime)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(clock_settime) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(close) .text
.type close, #function
.globl close
.align 4
.fnstart
close:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_close ldr r7, =__NR_close
@@ -11,4 +16,4 @@ ENTRY(close)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(close) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(connect) .text
.type connect, #function
.globl connect
.align 4
.fnstart
connect:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_connect ldr r7, =__NR_connect
@@ -11,4 +16,4 @@ ENTRY(connect)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(connect) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(delete_module) .text
.type delete_module, #function
.globl delete_module
.align 4
.fnstart
delete_module:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_delete_module ldr r7, =__NR_delete_module
@@ -11,4 +16,4 @@ ENTRY(delete_module)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(delete_module) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(dup) .text
.type dup, #function
.globl dup
.align 4
.fnstart
dup:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_dup ldr r7, =__NR_dup
@@ -11,4 +16,4 @@ ENTRY(dup)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(dup) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(dup2) .text
.type dup2, #function
.globl dup2
.align 4
.fnstart
dup2:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_dup2 ldr r7, =__NR_dup2
@@ -11,4 +16,4 @@ ENTRY(dup2)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(dup2) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(epoll_create) .text
.type epoll_create, #function
.globl epoll_create
.align 4
.fnstart
epoll_create:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_epoll_create ldr r7, =__NR_epoll_create
@@ -11,4 +16,4 @@ ENTRY(epoll_create)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(epoll_create) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(epoll_ctl) .text
.type epoll_ctl, #function
.globl epoll_ctl
.align 4
.fnstart
epoll_ctl:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_epoll_ctl ldr r7, =__NR_epoll_ctl
@@ -11,4 +16,4 @@ ENTRY(epoll_ctl)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(epoll_ctl) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(epoll_wait) .text
.type epoll_wait, #function
.globl epoll_wait
.align 4
.fnstart
epoll_wait:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_epoll_wait ldr r7, =__NR_epoll_wait
@@ -11,4 +16,4 @@ ENTRY(epoll_wait)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(epoll_wait) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(eventfd) .text
.type eventfd, #function
.globl eventfd
.align 4
.fnstart
eventfd:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_eventfd2 ldr r7, =__NR_eventfd2
@@ -11,4 +16,4 @@ ENTRY(eventfd)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(eventfd) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(execve) .text
.type execve, #function
.globl execve
.align 4
.fnstart
execve:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_execve ldr r7, =__NR_execve
@@ -11,4 +16,4 @@ ENTRY(execve)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(execve) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(fchdir) .text
.type fchdir, #function
.globl fchdir
.align 4
.fnstart
fchdir:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fchdir ldr r7, =__NR_fchdir
@@ -11,4 +16,4 @@ ENTRY(fchdir)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(fchdir) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(fchmod) .text
.type fchmod, #function
.globl fchmod
.align 4
.fnstart
fchmod:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fchmod ldr r7, =__NR_fchmod
@@ -11,4 +16,4 @@ ENTRY(fchmod)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(fchmod) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(fchmodat) .text
.type fchmodat, #function
.globl fchmodat
.align 4
.fnstart
fchmodat:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fchmodat ldr r7, =__NR_fchmodat
@@ -11,4 +16,4 @@ ENTRY(fchmodat)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(fchmodat) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(fchown) .text
.type fchown, #function
.globl fchown
.align 4
.fnstart
fchown:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fchown32 ldr r7, =__NR_fchown32
@@ -11,4 +16,4 @@ ENTRY(fchown)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(fchown) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(fchownat) .text
.type fchownat, #function
.globl fchownat
.align 4
.fnstart
fchownat:
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7} .save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
@@ -13,4 +18,4 @@ ENTRY(fchownat)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(fchownat) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(fdatasync) .text
.type fdatasync, #function
.globl fdatasync
.align 4
.fnstart
fdatasync:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fdatasync ldr r7, =__NR_fdatasync
@@ -11,4 +16,4 @@ ENTRY(fdatasync)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(fdatasync) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(flock) .text
.type flock, #function
.globl flock
.align 4
.fnstart
flock:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_flock ldr r7, =__NR_flock
@@ -11,4 +16,4 @@ ENTRY(flock)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(flock) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(fstat) .text
.type fstat, #function
.globl fstat
.align 4
.fnstart
fstat:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fstat64 ldr r7, =__NR_fstat64
@@ -11,4 +16,4 @@ ENTRY(fstat)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(fstat) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(fstatat) .text
.type fstatat, #function
.globl fstatat
.align 4
.fnstart
fstatat:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fstatat64 ldr r7, =__NR_fstatat64
@@ -11,4 +16,4 @@ ENTRY(fstatat)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(fstatat) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(fsync) .text
.type fsync, #function
.globl fsync
.align 4
.fnstart
fsync:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_fsync ldr r7, =__NR_fsync
@@ -11,4 +16,4 @@ ENTRY(fsync)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(fsync) .fnend

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(ftruncate) .text
.type ftruncate, #function
.globl ftruncate
.align 4
.fnstart
ftruncate:
.save {r4, r7} .save {r4, r7}
stmfd sp!, {r4, r7} stmfd sp!, {r4, r7}
ldr r7, =__NR_ftruncate ldr r7, =__NR_ftruncate
@@ -11,4 +16,4 @@ ENTRY(ftruncate)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(ftruncate) .fnend

View File

@@ -1,14 +0,0 @@
/* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(ftruncate64)
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_ftruncate64
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
END(ftruncate64)

View File

@@ -1,8 +1,13 @@
/* autogenerated by gensyscalls.py */ /* autogenerated by gensyscalls.py */
#include <machine/asm.h>
#include <sys/linux-syscalls.h> #include <sys/linux-syscalls.h>
ENTRY(futex) .text
.type futex, #function
.globl futex
.align 4
.fnstart
futex:
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7} .save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
@@ -13,4 +18,4 @@ ENTRY(futex)
movs r0, r0 movs r0, r0
bxpl lr bxpl lr
b __set_syscall_errno b __set_syscall_errno
END(futex) .fnend

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