mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 13:00:06 +00:00
aarch64: Share code in syscall-cancel.h
Fold nocancel and error handling paths.
This commit is contained in:
parent
af4e8ef944
commit
a8b4f04ad7
@ -1,5 +1,10 @@
|
||||
2014-05-29 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h (PSEUDO):
|
||||
Use ENTRY to define the _nocancel entry point. Share the syscall
|
||||
and syscall error check paths with the cancel path.
|
||||
(PSEUDO_END): New.
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h: Adjust
|
||||
whitespace; tabs before and after asm mnemonics.
|
||||
|
||||
|
@ -27,24 +27,17 @@
|
||||
# undef PSEUDO
|
||||
# define PSEUDO(name, syscall_name, args) \
|
||||
.section ".text"; \
|
||||
.type __##syscall_name##_nocancel,%function; \
|
||||
.globl __##syscall_name##_nocancel; \
|
||||
__##syscall_name##_nocancel: \
|
||||
cfi_startproc; \
|
||||
ENTRY (__##syscall_name##_nocancel); \
|
||||
.Lpseudo_nocancel: \
|
||||
DO_CALL (syscall_name, args); \
|
||||
.Lpseudo_finish: \
|
||||
cmn x0, 4095; \
|
||||
b.cs .Lsyscall_error; \
|
||||
PSEUDO_RET; \
|
||||
cfi_endproc; \
|
||||
.subsection 2; \
|
||||
.size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \
|
||||
ENTRY (name); \
|
||||
SINGLE_THREAD_P; \
|
||||
bne .Lpseudo_cancel; \
|
||||
DO_CALL (syscall_name, 0); \
|
||||
cmn x0, 4095; \
|
||||
b.cs .Lsyscall_error; \
|
||||
PSEUDO_RET; \
|
||||
.Lpseudo_cancel: \
|
||||
beq .Lpseudo_nocancel; \
|
||||
DOCARGS_##args; /* save syscall args etc. around CENABLE. */ \
|
||||
CENABLE; \
|
||||
mov x16, x0; /* put mask in safe place. */ \
|
||||
@ -60,8 +53,15 @@ ENTRY (name); \
|
||||
ldr x30, [sp], 16; \
|
||||
cfi_adjust_cfa_offset (-16); \
|
||||
cfi_restore (x30); \
|
||||
cmn x0, 4095; \
|
||||
b.cs .Lsyscall_error;
|
||||
b .Lpseudo_finish; \
|
||||
cfi_endproc; \
|
||||
.size name, .-name; \
|
||||
.previous
|
||||
|
||||
# undef PSEUDO_END
|
||||
# define PSEUDO_END(name) \
|
||||
SYSCALL_ERROR_HANDLER; \
|
||||
cfi_endproc
|
||||
|
||||
# define DOCARGS_0 \
|
||||
str x30, [sp, -16]!; \
|
||||
|
Loading…
Reference in New Issue
Block a user