clarify the purpose of this project
[nyanglibc.git] / io / copy_file_range.shared.s
blobf94e5cca8ebdeface7a66e0896f66bb656011429
1 .text
2 #APP
3 memmove = __GI_memmove
4 memset = __GI_memset
5 memcpy = __GI_memcpy
6 #NO_APP
7 .p2align 4,,15
8 .globl copy_file_range
9 .type copy_file_range, @function
10 copy_file_range:
11 movq %rcx, %r10
12 #APP
13 # 28 "../sysdeps/unix/sysv/linux/copy_file_range.c" 1
14 movl %fs:24,%eax
15 # 0 "" 2
16 #NO_APP
17 testl %eax, %eax
18 jne .L2
19 movl $326, %eax
20 #APP
21 # 28 "../sysdeps/unix/sysv/linux/copy_file_range.c" 1
22 syscall
24 # 0 "" 2
25 #NO_APP
26 cmpq $-4096, %rax
27 ja .L9
28 rep ret
29 .p2align 4,,10
30 .p2align 3
31 .L2:
32 pushq %r15
33 pushq %r14
34 movq %r8, %r15
35 pushq %r13
36 pushq %r12
37 movq %rcx, %r14
38 pushq %rbp
39 pushq %rbx
40 movl %edx, %r13d
41 movq %rsi, %r12
42 movl %edi, %ebx
43 subq $24, %rsp
44 movl %r9d, 8(%rsp)
45 call __libc_enable_asynccancel
46 movl 8(%rsp), %r9d
47 movl %eax, %ebp
48 movq %r15, %r8
49 movq %r14, %r10
50 movl %r13d, %edx
51 movq %r12, %rsi
52 movl %ebx, %edi
53 movl $326, %eax
54 #APP
55 # 28 "../sysdeps/unix/sysv/linux/copy_file_range.c" 1
56 syscall
58 # 0 "" 2
59 #NO_APP
60 cmpq $-4096, %rax
61 ja .L10
62 .L4:
63 movl %ebp, %edi
64 movq %rax, 8(%rsp)
65 call __libc_disable_asynccancel
66 movq 8(%rsp), %rax
67 addq $24, %rsp
68 popq %rbx
69 popq %rbp
70 popq %r12
71 popq %r13
72 popq %r14
73 popq %r15
74 ret
75 .p2align 4,,10
76 .p2align 3
77 .L9:
78 movq __libc_errno@gottpoff(%rip), %rdx
79 negl %eax
80 movl %eax, %fs:(%rdx)
81 movq $-1, %rax
82 ret
83 .L10:
84 movq __libc_errno@gottpoff(%rip), %rdx
85 negl %eax
86 movl %eax, %fs:(%rdx)
87 movq $-1, %rax
88 jmp .L4
89 .size copy_file_range, .-copy_file_range
90 .hidden __libc_disable_asynccancel
91 .hidden __libc_enable_asynccancel