clarify the purpose of this project
[nyanglibc.git] / rt / timer_create.shared.s
blob239c244fc065219f8d50f7230e063ae991f4b2ac
1 .text
2 #APP
3 .symver __timer_create_new,timer_create@@GLIBC_2.3.3
4 .symver __timer_create_old,timer_create@GLIBC_2.2.5
5 #NO_APP
6 .p2align 4,,15
7 .globl __timer_create_new
8 .type __timer_create_new, @function
9 __timer_create_new:
10 pushq %r14
11 pushq %r13
12 pushq %r12
13 pushq %rbp
14 movq %rdx, %r12
15 pushq %rbx
16 movq %rsi, %rbp
17 movl $-6, %ebx
18 subq $96, %rsp
19 cmpl $2, %edi
20 je .L2
21 movl %edi, %ebx
22 cmpl $3, %edi
23 movl $-2, %eax
24 cmove %eax, %ebx
25 .L2:
26 testq %rbp, %rbp
27 je .L3
28 cmpl $2, 12(%rbp)
29 je .L22
30 .L4:
31 leaq 28(%rsp), %rdx
32 movq %rbp, %rsi
33 movl %ebx, %edi
34 movl $222, %eax
35 #APP
36 # 68 "../sysdeps/unix/sysv/linux/timer_create.c" 1
37 syscall
39 # 0 "" 2
40 #NO_APP
41 cmpq $-4096, %rax
42 ja .L23
43 movslq 28(%rsp), %rax
44 movq %rax, (%r12)
45 xorl %eax, %eax
46 .L1:
47 addq $96, %rsp
48 popq %rbx
49 popq %rbp
50 popq %r12
51 popq %r13
52 popq %r14
53 ret
54 .p2align 4,,10
55 .p2align 3
56 .L3:
57 movq $0, 32(%rsp)
58 movq $14, 40(%rsp)
59 leaq 32(%rsp), %rbp
60 jmp .L4
61 .p2align 4,,10
62 .p2align 3
63 .L23:
64 movq errno@gottpoff(%rip), %rdx
65 negl %eax
66 movl %eax, %fs:(%rdx)
67 addq $96, %rsp
68 movl $-1, %eax
69 popq %rbx
70 popq %rbp
71 popq %r12
72 popq %r13
73 popq %r14
74 ret
75 .p2align 4,,10
76 .p2align 3
77 .L22:
78 leaq __start_helper_thread(%rip), %rsi
79 leaq __helper_once(%rip), %rdi
80 call pthread_once@PLT
81 movl __helper_tid(%rip), %eax
82 testl %eax, %eax
83 je .L24
84 movl $88, %edi
85 call malloc@PLT
86 testq %rax, %rax
87 movq %rax, %r13
88 je .L9
89 movq 0(%rbp), %rax
90 leaq 24(%r13), %r14
91 movq %r14, %rdi
92 movq %rax, 16(%r13)
93 movq 16(%rbp), %rax
94 movq %rax, 8(%r13)
95 call pthread_attr_init@PLT
96 movq 24(%rbp), %rax
97 testq %rax, %rax
98 je .L10
99 movl (%rax), %edx
100 movl %edx, 24(%r13)
101 movl 4(%rax), %edx
102 movl %edx, 28(%r13)
103 movl 8(%rax), %edx
104 movl %edx, 32(%r13)
105 movq 16(%rax), %rdx
106 movq %rdx, 40(%r13)
107 movq 24(%rax), %rdx
108 movq 32(%rax), %rax
109 movq %rdx, 48(%r13)
110 movq %rax, 56(%r13)
111 .L10:
112 movq %r14, %rdi
113 movl $1, %esi
114 call pthread_attr_setdetachstate@PLT
115 movabsq $17179869216, %rax
116 pxor %xmm0, %xmm0
117 movq %rax, 40(%rsp)
118 movl __helper_tid(%rip), %eax
119 leaq 32(%rsp), %rsi
120 movq $0, 84(%rsp)
121 movl $0, 92(%rsp)
122 movq %r13, %rdx
123 movups %xmm0, 52(%rsp)
124 movl %eax, 48(%rsp)
125 movq %r13, 32(%rsp)
126 movl %ebx, %edi
127 movups %xmm0, 68(%rsp)
128 movl $222, %eax
129 #APP
130 # 125 "../sysdeps/unix/sysv/linux/timer_create.c" 1
131 syscall
133 # 0 "" 2
134 #NO_APP
135 cmpl $-4096, %eax
136 ja .L25
137 leaq __active_timer_sigev_thread_lock(%rip), %rdi
138 call pthread_mutex_lock@PLT
139 movq __active_timer_sigev_thread(%rip), %rax
140 leaq __active_timer_sigev_thread_lock(%rip), %rdi
141 movq %r13, __active_timer_sigev_thread(%rip)
142 movq %rax, 80(%r13)
143 shrq %r13
144 call pthread_mutex_unlock@PLT
145 movabsq $-9223372036854775808, %rax
146 orq %rax, %r13
147 xorl %eax, %eax
148 movq %r13, (%r12)
149 jmp .L1
150 .L24:
151 movq errno@gottpoff(%rip), %rax
152 movl $11, %fs:(%rax)
153 .L9:
154 movl $-1, %eax
155 jmp .L1
156 .L25:
157 movq %r13, %rdi
158 movq %rax, 8(%rsp)
159 call free@PLT
160 movq 8(%rsp), %rax
161 movq errno@gottpoff(%rip), %rdx
162 negl %eax
163 movl %eax, %fs:(%rdx)
164 jmp .L9
165 .size __timer_create_new, .-__timer_create_new
166 .p2align 4,,15
167 .globl __timer_create_old
168 .type __timer_create_old, @function
169 __timer_create_old:
170 pushq %rbx
171 movq %rdx, %rbx
172 subq $16, %rsp
173 leaq 8(%rsp), %rdx
174 call __timer_create_new@PLT
175 testl %eax, %eax
176 movl %eax, %r8d
177 jne .L26
178 movq 8(%rsp), %rdi
179 xorl %edx, %edx
180 leaq __compat_timer_list(%rip), %rcx
181 xorl %r9d, %r9d
182 jmp .L30
183 .p2align 4,,10
184 .p2align 3
185 .L28:
186 addq $1, %rdx
187 cmpq $256, %rdx
188 je .L34
189 .L30:
190 cmpq $0, (%rcx,%rdx,8)
191 leaq 0(,%rdx,8), %rsi
192 jne .L28
193 movq %r9, %rax
194 lock cmpxchgq %rdi, (%rcx,%rsi)
195 jne .L35
196 movl %edx, (%rbx)
197 .L26:
198 addq $16, %rsp
199 movl %r8d, %eax
200 popq %rbx
202 .p2align 4,,10
203 .p2align 3
204 .L34:
205 call __timer_delete_new@PLT
206 movq errno@gottpoff(%rip), %rax
207 movl $-1, %r8d
208 movl $22, %fs:(%rax)
209 jmp .L26
210 .L35:
211 movq 8(%rsp), %rdi
212 jmp .L28
213 .size __timer_create_old, .-__timer_create_old
214 .hidden __compat_timer_list
215 .comm __compat_timer_list,2048,32
216 .hidden __active_timer_sigev_thread
217 .hidden __active_timer_sigev_thread_lock
218 .hidden __helper_tid
219 .hidden __helper_once
220 .hidden __start_helper_thread