clarify the purpose of this project
[nyanglibc.git] / nptl / pthread_rwlock_rdlock.shared.s
blob693555053694f9e9b43ee3d7065a2c5cf96f0f0e
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 __GI___pthread_rwlock_rdlock
9 .hidden __GI___pthread_rwlock_rdlock
10 .type __GI___pthread_rwlock_rdlock, @function
11 __GI___pthread_rwlock_rdlock:
12 movl 24(%rdi), %edx
13 #APP
14 # 298 "pthread_rwlock_common.c" 1
15 movl %fs:720,%eax
16 # 0 "" 2
17 #NO_APP
18 cmpl %eax, %edx
19 je .L29
20 pushq %r12
21 pushq %rbp
22 pushq %rbx
23 cmpl $2, 48(%rdi)
24 movq %rdi, %rbx
25 je .L3
26 .L10:
27 movl $8, %eax
28 lock xaddl %eax, (%rbx)
29 addl $8, %eax
30 .L4:
31 testl %eax, %eax
32 js .L12
33 testb $1, %al
34 jne .L13
35 .L32:
36 xorl %edx, %edx
37 .L1:
38 popq %rbx
39 movl %edx, %eax
40 popq %rbp
41 popq %r12
42 ret
43 .p2align 4,,10
44 .p2align 3
45 .L3:
46 movl (%rdi), %esi
47 movl $128, %ebp
48 .L7:
49 movl %esi, %eax
50 andl $3, %eax
51 cmpl $2, %eax
52 jne .L10
53 movl %esi, %eax
54 shrl $3, %eax
55 testl %eax, %eax
56 je .L10
57 movl %esi, %edx
58 movl %esi, %eax
59 orl $4, %edx
60 lock cmpxchgl %edx, (%rbx)
61 movl %eax, %esi
62 je .L6
63 jmp .L7
64 .p2align 4,,10
65 .p2align 3
66 .L56:
67 cmpl $75, %eax
68 je .L1
69 .L6:
70 movl (%rbx), %esi
71 testb $4, %sil
72 je .L7
73 movl 28(%rbx), %r8d
74 movq %rbx, %rdi
75 testl %r8d, %r8d
76 cmovne %ebp, %r8d
77 xorl %edx, %edx
78 xorl %ecx, %ecx
79 call __GI___futex_abstimed_wait64
80 cmpl $110, %eax
81 movl %eax, %edx
82 jne .L56
83 popq %rbx
84 movl %edx, %eax
85 popq %rbp
86 popq %r12
87 ret
88 .p2align 4,,10
89 .p2align 3
90 .L13:
91 movl %eax, %edx
92 andl $3, %edx
93 cmpl $1, %edx
94 jne .L57
95 movl %eax, %edx
96 xorl $1, %edx
97 lock cmpxchgl %edx, (%rbx)
98 jne .L13
99 leaq 8(%rbx), %rdi
100 xorl %eax, %eax
101 xchgl (%rdi), %eax
102 testb $2, %al
103 je .L32
104 cmpl $1, 28(%rbx)
105 movl $2147483647, %edx
106 movl $202, %eax
107 sbbl %esi, %esi
108 xorl %r10d, %r10d
109 andl $128, %esi
110 addl $1, %esi
111 #APP
112 # 209 "../sysdeps/nptl/futex-internal.h" 1
113 syscall
115 # 0 "" 2
116 #NO_APP
117 cmpq $-4096, %rax
118 jbe .L32
119 cmpl $-22, %eax
120 je .L32
121 cmpl $-14, %eax
122 je .L32
123 leaq .LC0(%rip), %rdi
124 call __libc_fatal@PLT
125 .p2align 4,,10
126 .p2align 3
127 .L29:
128 movl $35, %edx
129 movl %edx, %eax
131 .p2align 4,,10
132 .p2align 3
133 .L12:
134 leal -8(%rax), %edx
135 lock cmpxchgl %edx, (%rbx)
136 jne .L4
137 movl $11, %edx
138 jmp .L1
139 .L57:
140 leaq 8(%rbx), %rbp
141 xorl %r12d, %r12d
142 .L18:
143 movl 0(%rbp), %eax
144 movl %eax, %edx
145 orl $2, %edx
146 cmpl $3, %edx
147 je .L27
148 testb %r12b, %r12b
149 jne .L32
150 movl (%rbx), %eax
151 testb $1, %al
152 jne .L18
153 movl 0(%rbp), %eax
154 movl %eax, %edx
155 orl $2, %edx
156 cmpl $3, %edx
157 jne .L32
158 movl $1, %r12d
159 .L27:
160 movl 28(%rbx), %r8d
161 movl $128, %edx
162 testl %r8d, %r8d
163 cmovne %edx, %r8d
164 testb $2, %al
165 jne .L23
166 movl $3, %edx
167 lock cmpxchgl %edx, 0(%rbp)
168 jne .L18
169 .L23:
170 xorl %edx, %edx
171 xorl %ecx, %ecx
172 movl $3, %esi
173 movq %rbp, %rdi
174 call __GI___futex_abstimed_wait64
175 cmpl $110, %eax
176 movl %eax, %edx
177 je .L21
178 cmpl $75, %eax
179 jne .L18
180 .L21:
181 movl (%rbx), %eax
182 .L24:
183 testb $1, %al
184 je .L26
185 leal -8(%rax), %ecx
186 lock cmpxchgl %ecx, (%rbx)
187 je .L1
188 jmp .L24
189 .p2align 4,,10
190 .p2align 3
191 .L26:
192 movl 0(%rbp), %eax
193 orl $2, %eax
194 cmpl $3, %eax
195 je .L26
196 jmp .L32
197 .size __GI___pthread_rwlock_rdlock, .-__GI___pthread_rwlock_rdlock
198 .weak pthread_rwlock_rdlock
199 .set pthread_rwlock_rdlock,__GI___pthread_rwlock_rdlock
200 .globl __pthread_rwlock_rdlock
201 .set __pthread_rwlock_rdlock,__GI___pthread_rwlock_rdlock