mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-26 06:50:07 +00:00
aarch64: Tabify sysdep-cancel.h
This commit is contained in:
parent
26b0d2e1a1
commit
af4e8ef944
@ -1,3 +1,8 @@
|
|||||||
|
2014-05-29 Richard Henderson <rth@twiddle.net>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h: Adjust
|
||||||
|
whitespace; tabs before and after asm mnemonics.
|
||||||
|
|
||||||
2014-05-29 Eric Wong <normalperson@yhbt.net>
|
2014-05-29 Eric Wong <normalperson@yhbt.net>
|
||||||
|
|
||||||
[BZ #15132]
|
[BZ #15132]
|
||||||
|
@ -26,42 +26,42 @@
|
|||||||
|
|
||||||
# undef PSEUDO
|
# undef PSEUDO
|
||||||
# define PSEUDO(name, syscall_name, args) \
|
# define PSEUDO(name, syscall_name, args) \
|
||||||
.section ".text"; \
|
.section ".text"; \
|
||||||
.type __##syscall_name##_nocancel,%function; \
|
.type __##syscall_name##_nocancel,%function; \
|
||||||
.globl __##syscall_name##_nocancel; \
|
.globl __##syscall_name##_nocancel; \
|
||||||
__##syscall_name##_nocancel: \
|
__##syscall_name##_nocancel: \
|
||||||
cfi_startproc; \
|
cfi_startproc; \
|
||||||
DO_CALL (syscall_name, args); \
|
DO_CALL (syscall_name, args); \
|
||||||
cmn x0, 4095; \
|
cmn x0, 4095; \
|
||||||
b.cs .Lsyscall_error; \
|
b.cs .Lsyscall_error; \
|
||||||
PSEUDO_RET; \
|
PSEUDO_RET; \
|
||||||
cfi_endproc; \
|
cfi_endproc; \
|
||||||
.size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \
|
.size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \
|
||||||
ENTRY (name); \
|
ENTRY (name); \
|
||||||
SINGLE_THREAD_P; \
|
SINGLE_THREAD_P; \
|
||||||
bne .Lpseudo_cancel; \
|
bne .Lpseudo_cancel; \
|
||||||
DO_CALL (syscall_name, 0); \
|
DO_CALL (syscall_name, 0); \
|
||||||
cmn x0, 4095; \
|
cmn x0, 4095; \
|
||||||
b.cs .Lsyscall_error; \
|
b.cs .Lsyscall_error; \
|
||||||
PSEUDO_RET; \
|
PSEUDO_RET; \
|
||||||
.Lpseudo_cancel: \
|
.Lpseudo_cancel: \
|
||||||
DOCARGS_##args; /* save syscall args etc. around CENABLE. */ \
|
DOCARGS_##args; /* save syscall args etc. around CENABLE. */ \
|
||||||
CENABLE; \
|
CENABLE; \
|
||||||
mov x16, x0; /* put mask in safe place. */ \
|
mov x16, x0; /* put mask in safe place. */ \
|
||||||
UNDOCARGS_##args; /* restore syscall args. */ \
|
UNDOCARGS_##args; /* restore syscall args. */ \
|
||||||
mov x8, SYS_ify (syscall_name); /* do the call. */ \
|
mov x8, SYS_ify (syscall_name); /* do the call. */ \
|
||||||
svc 0; \
|
svc 0; \
|
||||||
str x0, [sp, -16]!; /* save syscall return value. */ \
|
str x0, [sp, -16]!; /* save syscall return value. */ \
|
||||||
cfi_adjust_cfa_offset (16); \
|
cfi_adjust_cfa_offset (16); \
|
||||||
mov x0, x16; /* get mask back. */ \
|
mov x0, x16; /* get mask back. */ \
|
||||||
CDISABLE; \
|
CDISABLE; \
|
||||||
ldr x0, [sp], 16; \
|
ldr x0, [sp], 16; \
|
||||||
cfi_adjust_cfa_offset (-16); \
|
cfi_adjust_cfa_offset (-16); \
|
||||||
ldr x30, [sp], 16; \
|
ldr x30, [sp], 16; \
|
||||||
cfi_adjust_cfa_offset (-16); \
|
cfi_adjust_cfa_offset (-16); \
|
||||||
cfi_restore (x30); \
|
cfi_restore (x30); \
|
||||||
cmn x0, 4095; \
|
cmn x0, 4095; \
|
||||||
b.cs .Lsyscall_error;
|
b.cs .Lsyscall_error;
|
||||||
|
|
||||||
# define DOCARGS_0 \
|
# define DOCARGS_0 \
|
||||||
str x30, [sp, -16]!; \
|
str x30, [sp, -16]!; \
|
||||||
@ -162,9 +162,9 @@ extern int __local_multiple_threads attribute_hidden;
|
|||||||
# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
|
# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
|
||||||
# else
|
# else
|
||||||
# define SINGLE_THREAD_P \
|
# define SINGLE_THREAD_P \
|
||||||
adrp x16, __local_multiple_threads; \
|
adrp x16, __local_multiple_threads; \
|
||||||
ldr w16, [x16, :lo12:__local_multiple_threads]; \
|
ldr w16, [x16, :lo12:__local_multiple_threads]; \
|
||||||
cmp w16, 0;
|
cmp w16, 0;
|
||||||
# endif
|
# endif
|
||||||
# else
|
# else
|
||||||
/* There is no __local_multiple_threads for librt, so use the TCB. */
|
/* There is no __local_multiple_threads for librt, so use the TCB. */
|
||||||
@ -174,18 +174,18 @@ extern int __local_multiple_threads attribute_hidden;
|
|||||||
header.multiple_threads) == 0, 1)
|
header.multiple_threads) == 0, 1)
|
||||||
# else
|
# else
|
||||||
# define SINGLE_THREAD_P \
|
# define SINGLE_THREAD_P \
|
||||||
stp x0, x30, [sp, -16]!; \
|
stp x0, x30, [sp, -16]!; \
|
||||||
cfi_adjust_cfa_offset (16); \
|
cfi_adjust_cfa_offset (16); \
|
||||||
cfi_rel_offset (x0, 0); \
|
cfi_rel_offset (x0, 0); \
|
||||||
cfi_rel_offset (x30, 8); \
|
cfi_rel_offset (x30, 8); \
|
||||||
bl __read_tp; \
|
bl __read_tp; \
|
||||||
sub x0, x0, PTHREAD_SIZEOF; \
|
sub x0, x0, PTHREAD_SIZEOF; \
|
||||||
ldr w16, [x0, PTHREAD_MULTIPLE_THREADS_OFFSET]; \
|
ldr w16, [x0, PTHREAD_MULTIPLE_THREADS_OFFSET]; \
|
||||||
ldp x0, x30, [sp], 16; \
|
ldp x0, x30, [sp], 16; \
|
||||||
cfi_restore (x0); \
|
cfi_restore (x0); \
|
||||||
cfi_restore (x30); \
|
cfi_restore (x30); \
|
||||||
cfi_adjust_cfa_offset (-16); \
|
cfi_adjust_cfa_offset (-16); \
|
||||||
cmp w16, 0
|
cmp w16, 0;
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user