clarify the purpose of this project
[nyanglibc.git] / nptl / pthread_cond_broadcast.shared.s
blob87814b542f268b2b3d49cc4e359c97bd1c1bf7fc
1 .text
2 #APP
3 .symver __pthread_cond_broadcast,pthread_cond_broadcast@@GLIBC_2.3.2
4 .section .rodata.str1.8,"aMS",@progbits,1
5 .align 8
6 .LC0:
7 .string "The futex facility returned an unexpected error code.\n"
8 #NO_APP
9 .text
10 .p2align 4,,15
11 .globl __pthread_cond_broadcast
12 .type __pthread_cond_broadcast, @function
13 __pthread_cond_broadcast:
14 pushq %r15
15 pushq %r14
16 pushq %r13
17 pushq %r12
18 pushq %rbp
19 pushq %rbx
20 subq $56, %rsp
21 movl 36(%rdi), %ebp
22 movl %ebp, %eax
23 shrl $3, %eax
24 testl %eax, %eax
25 je .L48
26 movl $128, %eax
27 andl $1, %ebp
28 leaq 32(%rdi), %rbx
29 cmovne %eax, %ebp
30 movl 32(%rdi), %eax
31 movq %rdi, %r9
32 .L4:
33 testb $3, %al
34 jne .L78
35 movl %eax, %edx
36 orl $1, %edx
37 lock cmpxchgl %edx, (%rbx)
38 jne .L4
39 .L5:
40 movq (%r9), %r14
41 movl %r14d, %r12d
42 movq %r14, %r8
43 notl %r12d
44 shrq %r8
45 andl $1, %r12d
46 movl %r12d, %r13d
47 salq $2, %r13
48 leaq (%r9,%r13), %rdx
49 movl 24(%rdx), %eax
50 testl %eax, %eax
51 je .L16
52 leaq 40(%r9,%r13), %rdi
53 addl %eax, %eax
54 lock addl %eax, (%rdi)
55 xorl %r10d, %r10d
56 movl $202, %eax
57 movl %ebp, %esi
58 movl $0, 24(%rdx)
59 movl $2147483647, %edx
60 xorb $-127, %sil
61 #APP
62 # 209 "../sysdeps/nptl/futex-internal.h" 1
63 syscall
65 # 0 "" 2
66 #NO_APP
67 cmpq $-4096, %rax
68 ja .L79
69 .L16:
70 movl 32(%r9), %eax
71 movl %r14d, %edi
72 andl $1, %edi
73 shrl $2, %eax
74 movl %eax, %esi
75 movl %eax, 24(%rsp)
76 movq 8(%r9), %rax
77 movl %edi, 28(%rsp)
78 salq $2, %rdi
79 leaq (%r9,%rdi), %r15
80 movq %rdi, 16(%rsp)
81 shrq %rax
82 addl 24(%r15), %r8d
83 movq %rax, 8(%rsp)
84 subl %esi, %r8d
85 cmpl %eax, %r8d
86 jne .L80
87 .L17:
88 movl 32(%r9), %eax
89 .L30:
90 movl %eax, %ecx
91 movl %eax, %edx
92 andl $-4, %ecx
93 lock cmpxchgl %ecx, (%rbx)
94 jne .L30
95 andl $3, %edx
96 cmpl $2, %edx
97 je .L81
98 .L48:
99 addq $56, %rsp
100 xorl %eax, %eax
101 popq %rbx
102 popq %rbp
103 popq %r12
104 popq %r13
105 popq %r14
106 popq %r15
108 .p2align 4,,10
109 .p2align 3
110 .L80:
111 leaq 40(%r9), %rax
112 movq %rax, 40(%rsp)
113 addq %r13, %rax
114 movq %rax, 32(%rsp)
115 lock orl $1, (%rax)
116 leaq 16(%r9,%r13), %r8
117 movl (%r8), %eax
118 .L18:
119 movl %eax, %edx
120 lock cmpxchgl %eax, (%r8)
121 jne .L18
122 shrl %edx
123 je .L19
124 movl %ebp, %r14d
125 movl $202, %r13d
126 xorb $-128, %r14b
127 jmp .L22
128 .p2align 4,,10
129 .p2align 3
130 .L21:
131 movl (%r8), %eax
132 shrl %eax
133 je .L19
134 .L22:
135 movl (%r8), %eax
136 .L20:
137 movl %eax, %ecx
138 orl $1, %ecx
139 lock cmpxchgl %ecx, (%r8)
140 jne .L20
141 movl %ecx, %eax
142 movl %ecx, %edx
143 shrl %eax
144 je .L21
145 xorl %r10d, %r10d
146 movl %r14d, %esi
147 movq %r8, %rdi
148 movl %r13d, %eax
149 #APP
150 # 146 "../sysdeps/nptl/futex-internal.h" 1
151 syscall
153 # 0 "" 2
154 #NO_APP
155 cmpq $-4096, %rax
156 jbe .L21
157 leal 11(%rax), %ecx
158 cmpl $11, %ecx
159 ja .L13
160 movl $1, %eax
161 salq %cl, %rax
162 testl $2177, %eax
163 je .L13
164 movl (%r8), %eax
165 shrl %eax
166 jne .L22
167 .p2align 4,,10
168 .p2align 3
169 .L19:
170 testl %r12d, %r12d
171 movl $-1, %eax
172 movq 8(%r9), %rdx
173 cmove %eax, %r12d
174 movl 24(%rsp), %eax
175 leal (%r12,%rax,2), %eax
176 addq %rdx, %rax
177 movq %rax, 8(%r9)
178 movq 32(%rsp), %rax
179 movl $0, (%rax)
180 movq (%r9), %rax
181 .L24:
182 movq %rax, %rcx
183 movq %rax, %rdx
184 xorq $1, %rcx
185 lock cmpxchgq %rcx, (%r9)
186 jne .L24
187 movq %rdx, %rax
188 movl 24(%rsp), %edx
189 addl 8(%rsp), %edx
190 shrq %rax
191 subl %edx, %eax
192 movl 32(%r9), %edx
193 leal 0(,%rax,4), %ecx
194 andl $3, %edx
195 orl %ecx, %edx
196 movl %edx, %esi
197 xchgl (%rbx), %esi
198 xorl %esi, %edx
199 andl $3, %edx
200 je .L25
201 orl $2, %ecx
202 movl %ecx, 32(%r9)
203 .L25:
204 addl 24(%r15), %eax
205 testl %eax, %eax
206 movl %eax, 24(%r15)
207 je .L33
208 movq 40(%rsp), %rdi
209 addq 16(%rsp), %rdi
210 addl %eax, %eax
211 lock addl %eax, (%rdi)
212 movl $0, 24(%r15)
213 movl 32(%r9), %eax
214 .L26:
215 movl %eax, %ecx
216 movl %eax, %edx
217 andl $-4, %ecx
218 lock cmpxchgl %ecx, (%rbx)
219 jne .L26
220 andl $3, %edx
221 xorb $-127, %bpl
222 cmpl $2, %edx
223 jne .L27
224 movl 28(%rsp), %r12d
225 movl $1, %r8d
226 jmp .L31
227 .p2align 4,,10
228 .p2align 3
229 .L81:
230 xorb $-127, %bpl
231 xorl %r8d, %r8d
232 .L31:
233 xorl %r10d, %r10d
234 movl $1, %edx
235 movl %ebp, %esi
236 movq %rbx, %rdi
237 movl $202, %eax
238 #APP
239 # 209 "../sysdeps/nptl/futex-internal.h" 1
240 syscall
242 # 0 "" 2
243 #NO_APP
244 cmpq $-4096, %rax
245 ja .L82
246 .L28:
247 testb %r8b, %r8b
248 je .L48
249 leaq 40(%r9,%r12,4), %rdi
250 .L27:
251 xorl %r10d, %r10d
252 movl $2147483647, %edx
253 movl %ebp, %esi
254 movl $202, %eax
255 #APP
256 # 209 "../sysdeps/nptl/futex-internal.h" 1
257 syscall
259 # 0 "" 2
260 #NO_APP
261 cmpq $-4096, %rax
262 jbe .L48
263 cmpl $-22, %eax
264 je .L48
265 cmpl $-14, %eax
266 je .L48
267 jmp .L13
268 .p2align 4,,10
269 .p2align 3
270 .L79:
271 cmpl $-22, %eax
272 je .L16
273 cmpl $-14, %eax
274 je .L16
275 .L13:
276 leaq .LC0(%rip), %rdi
277 call __libc_fatal@PLT
278 .p2align 4,,10
279 .p2align 3
280 .L33:
281 movl 28(%rsp), %r12d
282 jmp .L17
283 .L82:
284 cmpl $-22, %eax
285 je .L28
286 cmpl $-14, %eax
287 je .L28
288 jmp .L13
289 .p2align 4,,10
290 .p2align 3
291 .L78:
292 movl %ebp, %r12d
293 movl $202, %r8d
294 movl $1, %r13d
295 xorb $-128, %r12b
296 .p2align 4,,10
297 .p2align 3
298 .L7:
299 movl %eax, %edx
300 movl %eax, %ecx
301 andl $-4, %edx
302 andl $3, %ecx
303 orl $2, %edx
304 cmpl $2, %ecx
305 je .L9
306 lock cmpxchgl %edx, (%rbx)
307 jne .L7
308 testb $3, %al
309 je .L5
310 andl $-4, %eax
311 orl $2, %eax
312 movl %eax, %edx
313 .L9:
314 xorl %r10d, %r10d
315 movl %r12d, %esi
316 movq %rbx, %rdi
317 movl %r8d, %eax
318 #APP
319 # 146 "../sysdeps/nptl/futex-internal.h" 1
320 syscall
322 # 0 "" 2
323 #NO_APP
324 cmpq $-4096, %rax
325 ja .L83
326 movl (%rbx), %eax
327 jmp .L7
328 .p2align 4,,10
329 .p2align 3
330 .L83:
331 leal 11(%rax), %ecx
332 cmpl $11, %ecx
333 ja .L13
334 movq %r13, %rax
335 salq %cl, %rax
336 testl $2177, %eax
337 je .L13
338 movl (%rbx), %eax
339 jmp .L7
340 .size __pthread_cond_broadcast, .-__pthread_cond_broadcast