am 0b4246b5
: Merge "Add cfi directives to all arm assembly."
* commit '0b4246b561550252f51800d822ce9e03d9b5b033': Add cfi directives to all arm assembly.
This commit is contained in:
@@ -57,10 +57,9 @@ int setresuid:setresuid(uid_t, uid_t, uid_t) aarch64,mips,x86_64
|
|||||||
int setresgid:setresgid32(gid_t, gid_t, gid_t) arm,x86
|
int setresgid:setresgid32(gid_t, gid_t, gid_t) arm,x86
|
||||||
int setresgid:setresgid(gid_t, gid_t, gid_t) aarch64,mips,x86_64
|
int setresgid:setresgid(gid_t, gid_t, gid_t) aarch64,mips,x86_64
|
||||||
void* __brk:brk(void*) all
|
void* __brk:brk(void*) all
|
||||||
# See comments in kill.S to understand why we don't generate ARM stubs for kill/tkill/tgkill.
|
int kill(pid_t, int) all
|
||||||
int kill(pid_t, int) aarch64,mips,x86,x86_64
|
int tkill(pid_t tid, int sig) all
|
||||||
int tkill(pid_t tid, int sig) aarch64,mips,x86,x86_64
|
int tgkill(pid_t tgid, pid_t tid, int sig) all
|
||||||
int tgkill(pid_t tgid, pid_t tid, int sig) aarch64,mips,x86,x86_64
|
|
||||||
int __ptrace:ptrace(int request, int pid, void* addr, void* data) all
|
int __ptrace:ptrace(int request, int pid, void* addr, void* data) all
|
||||||
int __set_thread_area:set_thread_area(void* user_desc) mips,x86
|
int __set_thread_area:set_thread_area(void* user_desc) mips,x86
|
||||||
int __getpriority:getpriority(int, int) all
|
int __getpriority:getpriority(int, int) all
|
||||||
|
@@ -6,7 +6,6 @@ _LIBC_ARCH_COMMON_SRC_FILES := \
|
|||||||
arch-arm/bionic/_exit_with_stack_teardown.S \
|
arch-arm/bionic/_exit_with_stack_teardown.S \
|
||||||
arch-arm/bionic/futex_arm.S \
|
arch-arm/bionic/futex_arm.S \
|
||||||
arch-arm/bionic/__get_sp.S \
|
arch-arm/bionic/__get_sp.S \
|
||||||
arch-arm/bionic/kill.S \
|
|
||||||
arch-arm/bionic/libgcc_compat.c \
|
arch-arm/bionic/libgcc_compat.c \
|
||||||
arch-arm/bionic/memcmp16.S \
|
arch-arm/bionic/memcmp16.S \
|
||||||
arch-arm/bionic/memcmp.S \
|
arch-arm/bionic/memcmp.S \
|
||||||
@@ -14,8 +13,6 @@ _LIBC_ARCH_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/syscall.S \
|
arch-arm/bionic/syscall.S \
|
||||||
arch-arm/bionic/tgkill.S \
|
|
||||||
arch-arm/bionic/tkill.S \
|
|
||||||
|
|
||||||
# These are used by the static and dynamic versions of the libc
|
# These are used by the static and dynamic versions of the libc
|
||||||
# respectively.
|
# respectively.
|
||||||
|
@@ -31,10 +31,13 @@
|
|||||||
// pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
|
// pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
|
||||||
ENTRY(__bionic_clone)
|
ENTRY(__bionic_clone)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
|
|
||||||
# save registers to parent stack
|
# save registers to parent stack
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
|
|
||||||
# load extra parameters
|
# load extra parameters
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
@@ -51,12 +54,19 @@ ENTRY(__bionic_clone)
|
|||||||
|
|
||||||
# In the parent, reload saved registers then either return or set errno.
|
# In the parent, reload saved registers then either return or set errno.
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
b __set_errno
|
b __set_errno
|
||||||
|
|
||||||
1: # The child.
|
1: # The child.
|
||||||
|
# Re-add the unwind directives that were reset from above.
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldr r0, [sp, #-4]
|
ldr r0, [sp, #-4]
|
||||||
ldr r1, [sp, #-8]
|
ldr r1, [sp, #-8]
|
||||||
b __bionic_clone_entry
|
b __bionic_clone_entry
|
||||||
|
@@ -36,7 +36,9 @@
|
|||||||
* sequence when the crash happens.
|
* sequence when the crash happens.
|
||||||
*/
|
*/
|
||||||
ENTRY(abort)
|
ENTRY(abort)
|
||||||
.save {r3, r14}
|
|
||||||
stmfd sp!, {r3, r14}
|
stmfd sp!, {r3, r14}
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
|
.cfi_rel_offset r3, 0
|
||||||
|
.cfi_rel_offset r14, 4
|
||||||
bl PIC_SYM(_C_LABEL(__libc_android_abort), PLT)
|
bl PIC_SYM(_C_LABEL(__libc_android_abort), PLT)
|
||||||
END(abort)
|
END(abort)
|
||||||
|
@@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2008 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <private/bionic_asm.h>
|
|
||||||
|
|
||||||
/* unlike our auto-generated syscall stubs, this code saves lr
|
|
||||||
on the stack, as well as a few other registers. this makes
|
|
||||||
our stack unwinder happy, when we generate debug stack
|
|
||||||
traces after the C library or other parts of the system
|
|
||||||
abort due to a fatal runtime error (e.g. detection
|
|
||||||
of a corrupted malloc heap).
|
|
||||||
*/
|
|
||||||
|
|
||||||
ENTRY(kill)
|
|
||||||
stmfd sp!, {r4-r7, ip, lr}
|
|
||||||
ldr r7, =__NR_kill
|
|
||||||
swi #0
|
|
||||||
ldmfd sp!, {r4-r7, ip, lr}
|
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
|
||||||
bxls lr
|
|
||||||
neg r0, r0
|
|
||||||
b __set_errno
|
|
||||||
END(kill)
|
|
@@ -107,9 +107,11 @@ ENTRY(memcmp)
|
|||||||
bmi 10f
|
bmi 10f
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.save {r4, lr}
|
|
||||||
/* save registers */
|
/* save registers */
|
||||||
stmfd sp!, {r4, lr}
|
stmfd sp!, {r4, lr}
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset lr, 4
|
||||||
|
|
||||||
/* since r0 hold the result, move the first source
|
/* since r0 hold the result, move the first source
|
||||||
* pointer somewhere else
|
* pointer somewhere else
|
||||||
|
@@ -74,9 +74,11 @@ ENTRY(__memcmp16)
|
|||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
.save {r4, lr}
|
|
||||||
/* save registers */
|
/* save registers */
|
||||||
0: stmfd sp!, {r4, lr}
|
0: stmfd sp!, {r4, lr}
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset lr, 4
|
||||||
|
|
||||||
/* align first pointer to word boundary */
|
/* align first pointer to word boundary */
|
||||||
tst r3, #2
|
tst r3, #2
|
||||||
|
@@ -51,12 +51,16 @@
|
|||||||
ENTRY(setjmp)
|
ENTRY(setjmp)
|
||||||
/* Block all signals and retrieve the old signal mask */
|
/* Block all signals and retrieve the old signal mask */
|
||||||
stmfd sp!, {r0, r14}
|
stmfd sp!, {r0, r14}
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
|
.cfi_rel_offset r0, 0
|
||||||
|
.cfi_rel_offset r14, 4
|
||||||
mov r0, #0x00000000
|
mov r0, #0x00000000
|
||||||
|
|
||||||
bl PIC_SYM(_C_LABEL(sigblock), PLT)
|
bl PIC_SYM(_C_LABEL(sigblock), PLT)
|
||||||
mov r1, r0
|
mov r1, r0
|
||||||
|
|
||||||
ldmfd sp!, {r0, r14}
|
ldmfd sp!, {r0, r14}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
|
|
||||||
/* Store signal mask */
|
/* Store signal mask */
|
||||||
str r1, [r0, #(_JB_SIGMASK * 4)]
|
str r1, [r0, #(_JB_SIGMASK * 4)]
|
||||||
@@ -96,13 +100,20 @@ ENTRY(longjmp)
|
|||||||
|
|
||||||
/* Set signal mask */
|
/* Set signal mask */
|
||||||
stmfd sp!, {r0, r1, r14}
|
stmfd sp!, {r0, r1, r14}
|
||||||
|
.cfi_def_cfa_offset 12
|
||||||
|
.cfi_rel_offset r0, 0
|
||||||
|
.cfi_rel_offset r1, 4
|
||||||
|
.cfi_rel_offset r14, 8
|
||||||
sub sp, sp, #4 /* align the stack */
|
sub sp, sp, #4 /* align the stack */
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
|
||||||
mov r0, r2
|
mov r0, r2
|
||||||
bl PIC_SYM(_C_LABEL(sigsetmask), PLT)
|
bl PIC_SYM(_C_LABEL(sigsetmask), PLT)
|
||||||
|
|
||||||
add sp, sp, #4 /* unalign the stack */
|
add sp, sp, #4 /* unalign the stack */
|
||||||
|
.cfi_adjust_cfa_offset -4
|
||||||
ldmfd sp!, {r0, r1, r14}
|
ldmfd sp!, {r0, r1, r14}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
|
|
||||||
#ifdef __ARM_HAVE_VFP
|
#ifdef __ARM_HAVE_VFP
|
||||||
/* Restore floating-point registers */
|
/* Restore floating-point registers */
|
||||||
|
@@ -31,6 +31,11 @@
|
|||||||
ENTRY(syscall)
|
ENTRY(syscall)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
mov r7, r0
|
mov r7, r0
|
||||||
mov r0, r1
|
mov r0, r1
|
||||||
mov r1, r2
|
mov r1, r2
|
||||||
@@ -38,6 +43,7 @@ ENTRY(syscall)
|
|||||||
ldmfd ip, {r3, r4, r5, r6}
|
ldmfd ip, {r3, r4, r5, r6}
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2008 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <private/bionic_asm.h>
|
|
||||||
|
|
||||||
/* unlike our auto-generated syscall stubs, this code saves lr
|
|
||||||
on the stack, as well as a few other registers. this makes
|
|
||||||
our stack unwinder happy, when we generate debug stack
|
|
||||||
traces after the C library or other parts of the system
|
|
||||||
abort due to a fatal runtime error (e.g. detection
|
|
||||||
of a corrupted malloc heap).
|
|
||||||
*/
|
|
||||||
|
|
||||||
ENTRY(tgkill)
|
|
||||||
.save {r4-r7, ip, lr}
|
|
||||||
stmfd sp!, {r4-r7, ip, lr}
|
|
||||||
ldr r7, =__NR_tgkill
|
|
||||||
swi #0
|
|
||||||
ldmfd sp!, {r4-r7, ip, lr}
|
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
|
||||||
bxls lr
|
|
||||||
neg r0, r0
|
|
||||||
b __set_errno
|
|
||||||
END(tgkill)
|
|
@@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2008 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <private/bionic_asm.h>
|
|
||||||
|
|
||||||
/* unlike our auto-generated syscall stubs, this code saves lr
|
|
||||||
on the stack, as well as a few other registers. this makes
|
|
||||||
our stack unwinder happy, when we generate debug stack
|
|
||||||
traces after the C library or other parts of the system
|
|
||||||
abort due to a fatal runtime error (e.g. detection
|
|
||||||
of a corrupted malloc heap).
|
|
||||||
*/
|
|
||||||
|
|
||||||
ENTRY(tkill)
|
|
||||||
stmfd sp!, {r4-r7, ip, lr}
|
|
||||||
ldr r7, =__NR_tkill
|
|
||||||
swi #0
|
|
||||||
ldmfd sp!, {r4-r7, ip, lr}
|
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
|
||||||
bxls lr
|
|
||||||
neg r0, r0
|
|
||||||
b __set_errno
|
|
||||||
END(tkill)
|
|
@@ -100,6 +100,7 @@ syscall_src += arch-arm/syscalls/inotify_init1.S
|
|||||||
syscall_src += arch-arm/syscalls/inotify_rm_watch.S
|
syscall_src += arch-arm/syscalls/inotify_rm_watch.S
|
||||||
syscall_src += arch-arm/syscalls/ioprio_get.S
|
syscall_src += arch-arm/syscalls/ioprio_get.S
|
||||||
syscall_src += arch-arm/syscalls/ioprio_set.S
|
syscall_src += arch-arm/syscalls/ioprio_set.S
|
||||||
|
syscall_src += arch-arm/syscalls/kill.S
|
||||||
syscall_src += arch-arm/syscalls/klogctl.S
|
syscall_src += arch-arm/syscalls/klogctl.S
|
||||||
syscall_src += arch-arm/syscalls/lgetxattr.S
|
syscall_src += arch-arm/syscalls/lgetxattr.S
|
||||||
syscall_src += arch-arm/syscalls/linkat.S
|
syscall_src += arch-arm/syscalls/linkat.S
|
||||||
@@ -175,10 +176,12 @@ syscall_src += arch-arm/syscalls/swapon.S
|
|||||||
syscall_src += arch-arm/syscalls/symlinkat.S
|
syscall_src += arch-arm/syscalls/symlinkat.S
|
||||||
syscall_src += arch-arm/syscalls/sync.S
|
syscall_src += arch-arm/syscalls/sync.S
|
||||||
syscall_src += arch-arm/syscalls/sysinfo.S
|
syscall_src += arch-arm/syscalls/sysinfo.S
|
||||||
|
syscall_src += arch-arm/syscalls/tgkill.S
|
||||||
syscall_src += arch-arm/syscalls/timerfd_create.S
|
syscall_src += arch-arm/syscalls/timerfd_create.S
|
||||||
syscall_src += arch-arm/syscalls/timerfd_gettime.S
|
syscall_src += arch-arm/syscalls/timerfd_gettime.S
|
||||||
syscall_src += arch-arm/syscalls/timerfd_settime.S
|
syscall_src += arch-arm/syscalls/timerfd_settime.S
|
||||||
syscall_src += arch-arm/syscalls/times.S
|
syscall_src += arch-arm/syscalls/times.S
|
||||||
|
syscall_src += arch-arm/syscalls/tkill.S
|
||||||
syscall_src += arch-arm/syscalls/truncate.S
|
syscall_src += arch-arm/syscalls/truncate.S
|
||||||
syscall_src += arch-arm/syscalls/truncate64.S
|
syscall_src += arch-arm/syscalls/truncate64.S
|
||||||
syscall_src += arch-arm/syscalls/umask.S
|
syscall_src += arch-arm/syscalls/umask.S
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__epoll_pwait)
|
ENTRY(__epoll_pwait)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_epoll_pwait
|
ldr r7, =__NR_epoll_pwait
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__llseek)
|
ENTRY(__llseek)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR__llseek
|
ldr r7, =__NR__llseek
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__mmap2)
|
ENTRY(__mmap2)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_mmap2
|
ldr r7, =__NR_mmap2
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__ppoll)
|
ENTRY(__ppoll)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_ppoll
|
ldr r7, =__NR_ppoll
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__pselect6)
|
ENTRY(__pselect6)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_pselect6
|
ldr r7, =__NR_pselect6
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__waitid)
|
ENTRY(__waitid)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_waitid
|
ldr r7, =__NR_waitid
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(fchownat)
|
ENTRY(fchownat)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_fchownat
|
ldr r7, =__NR_fchownat
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(fsetxattr)
|
ENTRY(fsetxattr)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_fsetxattr
|
ldr r7, =__NR_fsetxattr
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(futex)
|
ENTRY(futex)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_futex
|
ldr r7, =__NR_futex
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(getsockopt)
|
ENTRY(getsockopt)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_getsockopt
|
ldr r7, =__NR_getsockopt
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
14
libc/arch-arm/syscalls/kill.S
Normal file
14
libc/arch-arm/syscalls/kill.S
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/* Generated by gensyscalls.py. Do not edit. */
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(kill)
|
||||||
|
mov ip, r7
|
||||||
|
ldr r7, =__NR_kill
|
||||||
|
swi #0
|
||||||
|
mov r7, ip
|
||||||
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
|
bxls lr
|
||||||
|
neg r0, r0
|
||||||
|
b __set_errno
|
||||||
|
END(kill)
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(linkat)
|
ENTRY(linkat)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_linkat
|
ldr r7, =__NR_linkat
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(lsetxattr)
|
ENTRY(lsetxattr)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_lsetxattr
|
ldr r7, =__NR_lsetxattr
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(mount)
|
ENTRY(mount)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_mount
|
ldr r7, =__NR_mount
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(perf_event_open)
|
ENTRY(perf_event_open)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_perf_event_open
|
ldr r7, =__NR_perf_event_open
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(prctl)
|
ENTRY(prctl)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_prctl
|
ldr r7, =__NR_prctl
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(pread64)
|
ENTRY(pread64)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_pread64
|
ldr r7, =__NR_pread64
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(pwrite64)
|
ENTRY(pwrite64)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_pwrite64
|
ldr r7, =__NR_pwrite64
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(readahead)
|
ENTRY(readahead)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_readahead
|
ldr r7, =__NR_readahead
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(recvfrom)
|
ENTRY(recvfrom)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_recvfrom
|
ldr r7, =__NR_recvfrom
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(sendto)
|
ENTRY(sendto)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_sendto
|
ldr r7, =__NR_sendto
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(setsockopt)
|
ENTRY(setsockopt)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_setsockopt
|
ldr r7, =__NR_setsockopt
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(setxattr)
|
ENTRY(setxattr)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_setxattr
|
ldr r7, =__NR_setxattr
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
14
libc/arch-arm/syscalls/tgkill.S
Normal file
14
libc/arch-arm/syscalls/tgkill.S
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/* Generated by gensyscalls.py. Do not edit. */
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(tgkill)
|
||||||
|
mov ip, r7
|
||||||
|
ldr r7, =__NR_tgkill
|
||||||
|
swi #0
|
||||||
|
mov r7, ip
|
||||||
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
|
bxls lr
|
||||||
|
neg r0, r0
|
||||||
|
b __set_errno
|
||||||
|
END(tgkill)
|
14
libc/arch-arm/syscalls/tkill.S
Normal file
14
libc/arch-arm/syscalls/tkill.S
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/* Generated by gensyscalls.py. Do not edit. */
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(tkill)
|
||||||
|
mov ip, r7
|
||||||
|
ldr r7, =__NR_tkill
|
||||||
|
swi #0
|
||||||
|
mov r7, ip
|
||||||
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
|
bxls lr
|
||||||
|
neg r0, r0
|
||||||
|
b __set_errno
|
||||||
|
END(tkill)
|
@@ -721,6 +721,7 @@
|
|||||||
#define SYS_fcntl64 __NR_fcntl64
|
#define SYS_fcntl64 __NR_fcntl64
|
||||||
#define SYS_fdatasync __NR_fdatasync
|
#define SYS_fdatasync __NR_fdatasync
|
||||||
#define SYS_fgetxattr __NR_fgetxattr
|
#define SYS_fgetxattr __NR_fgetxattr
|
||||||
|
#define SYS_finit_module __NR_finit_module
|
||||||
#define SYS_flistxattr __NR_flistxattr
|
#define SYS_flistxattr __NR_flistxattr
|
||||||
#define SYS_flock __NR_flock
|
#define SYS_flock __NR_flock
|
||||||
#define SYS_fork __NR_fork
|
#define SYS_fork __NR_fork
|
||||||
@@ -785,6 +786,7 @@
|
|||||||
#define SYS_ioprio_get __NR_ioprio_get
|
#define SYS_ioprio_get __NR_ioprio_get
|
||||||
#define SYS_ioprio_set __NR_ioprio_set
|
#define SYS_ioprio_set __NR_ioprio_set
|
||||||
#define SYS_ipc __NR_ipc
|
#define SYS_ipc __NR_ipc
|
||||||
|
#define SYS_kcmp __NR_kcmp
|
||||||
#define SYS_kexec_load __NR_kexec_load
|
#define SYS_kexec_load __NR_kexec_load
|
||||||
#define SYS_keyctl __NR_keyctl
|
#define SYS_keyctl __NR_keyctl
|
||||||
#define SYS_kill __NR_kill
|
#define SYS_kill __NR_kill
|
||||||
@@ -1077,6 +1079,7 @@
|
|||||||
#define SYS_fcntl64 __NR_fcntl64
|
#define SYS_fcntl64 __NR_fcntl64
|
||||||
#define SYS_fdatasync __NR_fdatasync
|
#define SYS_fdatasync __NR_fdatasync
|
||||||
#define SYS_fgetxattr __NR_fgetxattr
|
#define SYS_fgetxattr __NR_fgetxattr
|
||||||
|
#define SYS_finit_module __NR_finit_module
|
||||||
#define SYS_flistxattr __NR_flistxattr
|
#define SYS_flistxattr __NR_flistxattr
|
||||||
#define SYS_flock __NR_flock
|
#define SYS_flock __NR_flock
|
||||||
#define SYS_fork __NR_fork
|
#define SYS_fork __NR_fork
|
||||||
@@ -1146,6 +1149,7 @@
|
|||||||
#define SYS_ioprio_get __NR_ioprio_get
|
#define SYS_ioprio_get __NR_ioprio_get
|
||||||
#define SYS_ioprio_set __NR_ioprio_set
|
#define SYS_ioprio_set __NR_ioprio_set
|
||||||
#define SYS_ipc __NR_ipc
|
#define SYS_ipc __NR_ipc
|
||||||
|
#define SYS_kcmp __NR_kcmp
|
||||||
#define SYS_kexec_load __NR_kexec_load
|
#define SYS_kexec_load __NR_kexec_load
|
||||||
#define SYS_keyctl __NR_keyctl
|
#define SYS_keyctl __NR_keyctl
|
||||||
#define SYS_kill __NR_kill
|
#define SYS_kill __NR_kill
|
||||||
@@ -1164,7 +1168,6 @@
|
|||||||
#define SYS_lstat __NR_lstat
|
#define SYS_lstat __NR_lstat
|
||||||
#define SYS_lstat64 __NR_lstat64
|
#define SYS_lstat64 __NR_lstat64
|
||||||
#define SYS_madvise __NR_madvise
|
#define SYS_madvise __NR_madvise
|
||||||
#define SYS_madvise1 __NR_madvise1
|
|
||||||
#define SYS_mbind __NR_mbind
|
#define SYS_mbind __NR_mbind
|
||||||
#define SYS_migrate_pages __NR_migrate_pages
|
#define SYS_migrate_pages __NR_migrate_pages
|
||||||
#define SYS_mincore __NR_mincore
|
#define SYS_mincore __NR_mincore
|
||||||
@@ -1216,6 +1219,8 @@
|
|||||||
#define SYS_pread64 __NR_pread64
|
#define SYS_pread64 __NR_pread64
|
||||||
#define SYS_preadv __NR_preadv
|
#define SYS_preadv __NR_preadv
|
||||||
#define SYS_prlimit64 __NR_prlimit64
|
#define SYS_prlimit64 __NR_prlimit64
|
||||||
|
#define SYS_process_vm_readv __NR_process_vm_readv
|
||||||
|
#define SYS_process_vm_writev __NR_process_vm_writev
|
||||||
#define SYS_prof __NR_prof
|
#define SYS_prof __NR_prof
|
||||||
#define SYS_profil __NR_profil
|
#define SYS_profil __NR_profil
|
||||||
#define SYS_pselect6 __NR_pselect6
|
#define SYS_pselect6 __NR_pselect6
|
||||||
@@ -1420,6 +1425,7 @@
|
|||||||
#define SYS_fcntl __NR_fcntl
|
#define SYS_fcntl __NR_fcntl
|
||||||
#define SYS_fdatasync __NR_fdatasync
|
#define SYS_fdatasync __NR_fdatasync
|
||||||
#define SYS_fgetxattr __NR_fgetxattr
|
#define SYS_fgetxattr __NR_fgetxattr
|
||||||
|
#define SYS_finit_module __NR_finit_module
|
||||||
#define SYS_flistxattr __NR_flistxattr
|
#define SYS_flistxattr __NR_flistxattr
|
||||||
#define SYS_flock __NR_flock
|
#define SYS_flock __NR_flock
|
||||||
#define SYS_fork __NR_fork
|
#define SYS_fork __NR_fork
|
||||||
@@ -1477,6 +1483,7 @@
|
|||||||
#define SYS_iopl __NR_iopl
|
#define SYS_iopl __NR_iopl
|
||||||
#define SYS_ioprio_get __NR_ioprio_get
|
#define SYS_ioprio_get __NR_ioprio_get
|
||||||
#define SYS_ioprio_set __NR_ioprio_set
|
#define SYS_ioprio_set __NR_ioprio_set
|
||||||
|
#define SYS_kcmp __NR_kcmp
|
||||||
#define SYS_kexec_load __NR_kexec_load
|
#define SYS_kexec_load __NR_kexec_load
|
||||||
#define SYS_keyctl __NR_keyctl
|
#define SYS_keyctl __NR_keyctl
|
||||||
#define SYS_kill __NR_kill
|
#define SYS_kill __NR_kill
|
||||||
|
@@ -94,12 +94,17 @@ END(%(func)s)
|
|||||||
|
|
||||||
arm_eabi_call_long = syscall_stub_header + """\
|
arm_eabi_call_long = syscall_stub_header + """\
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =%(__NR_name)s
|
ldr r7, =%(__NR_name)s
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
@@ -413,11 +418,11 @@ class State:
|
|||||||
glibc_fp.write("#elif defined(__arm__)\n")
|
glibc_fp.write("#elif defined(__arm__)\n")
|
||||||
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-arm/asm/unistd.h")
|
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-arm/asm/unistd.h")
|
||||||
glibc_fp.write("#elif defined(__mips__)\n")
|
glibc_fp.write("#elif defined(__mips__)\n")
|
||||||
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-mips/asm/unistd.h")
|
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-mips/asm/unistd.h")
|
||||||
glibc_fp.write("#elif defined(__i386__)\n")
|
glibc_fp.write("#elif defined(__i386__)\n")
|
||||||
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-x86/asm/unistd_32.h")
|
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-x86/asm/unistd_32.h")
|
||||||
glibc_fp.write("#elif defined(__x86_64__)\n")
|
glibc_fp.write("#elif defined(__x86_64__)\n")
|
||||||
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-x86/asm/unistd_64.h")
|
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-x86/asm/unistd_64.h")
|
||||||
glibc_fp.write("#endif\n")
|
glibc_fp.write("#endif\n")
|
||||||
|
|
||||||
glibc_fp.write("#endif /* _BIONIC_GLIBC_SYSCALLS_H_ */\n")
|
glibc_fp.write("#endif /* _BIONIC_GLIBC_SYSCALLS_H_ */\n")
|
||||||
|
Reference in New Issue
Block a user