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