clarify the purpose of this project
[nyanglibc.git] / stdlib / random.shared.s
blob3f30b6845a113f17c46589ca723741c4eeb56068
1 .text
2 #APP
3 memmove = __GI_memmove
4 memset = __GI_memset
5 memcpy = __GI_memcpy
6 #NO_APP
7 .p2align 4,,15
8 .type __srandom.part.0, @function
9 __srandom.part.0:
10 xorl %r10d, %r10d
11 movl $1, %edx
12 movl $129, %esi
13 leaq lock(%rip), %rdi
14 movl $202, %eax
15 #APP
16 # 212 "random.c" 1
17 syscall
19 # 0 "" 2
20 #NO_APP
21 ret
22 .size __srandom.part.0, .-__srandom.part.0
23 .set __setstate.part.1,__srandom.part.0
24 .p2align 4,,15
25 .globl __srandom
26 .type __srandom, @function
27 __srandom:
28 pushq %rbx
29 movl %edi, %ebx
30 #APP
31 # 210 "random.c" 1
32 movl %fs:24,%eax
33 # 0 "" 2
34 #NO_APP
35 testl %eax, %eax
36 jne .L4
37 movl $1, %edx
38 #APP
39 # 47 "../sysdeps/unix/sysv/linux/x86/lowlevellock.h" 1
40 cmpxchgl %edx, lock(%rip)
41 # 0 "" 2
42 #NO_APP
43 .L5:
44 leaq unsafe_state(%rip), %rsi
45 movl %ebx, %edi
46 call __srandom_r
47 #APP
48 # 212 "random.c" 1
49 movl %fs:24,%eax
50 # 0 "" 2
51 #NO_APP
52 testl %eax, %eax
53 jne .L6
54 subl $1, lock(%rip)
55 .L3:
56 popq %rbx
57 ret
58 .p2align 4,,10
59 .p2align 3
60 .L4:
61 xorl %eax, %eax
62 movl $1, %edx
63 lock cmpxchgl %edx, lock(%rip)
64 je .L5
65 leaq lock(%rip), %rdi
66 call __lll_lock_wait_private
67 jmp .L5
68 .p2align 4,,10
69 .p2align 3
70 .L6:
71 xorl %eax, %eax
72 #APP
73 # 212 "random.c" 1
74 xchgl %eax, lock(%rip)
75 # 0 "" 2
76 #NO_APP
77 cmpl $1, %eax
78 jle .L3
79 popq %rbx
80 jmp __srandom.part.0
81 .size __srandom, .-__srandom
82 .weak srand
83 .set srand,__srandom
84 .weak srandom
85 .set srandom,__srandom
86 .p2align 4,,15
87 .globl __initstate
88 .type __initstate, @function
89 __initstate:
90 pushq %rbp
91 pushq %rbx
92 movl %edi, %ebp
93 subq $24, %rsp
94 #APP
95 # 235 "random.c" 1
96 movl %fs:24,%eax
97 # 0 "" 2
98 #NO_APP
99 testl %eax, %eax
100 jne .L10
101 movl $1, %ecx
102 #APP
103 # 47 "../sysdeps/unix/sysv/linux/x86/lowlevellock.h" 1
104 cmpxchgl %ecx, lock(%rip)
105 # 0 "" 2
106 #NO_APP
107 .L11:
108 movq 16+unsafe_state(%rip), %rax
109 leaq unsafe_state(%rip), %rcx
110 movl %ebp, %edi
111 leaq -4(%rax), %rbx
112 call __initstate_r
113 movl %eax, %r8d
114 #APP
115 # 241 "random.c" 1
116 movl %fs:24,%eax
117 # 0 "" 2
118 #NO_APP
119 testl %eax, %eax
120 jne .L12
121 subl $1, lock(%rip)
122 .L13:
123 cmpl $-1, %r8d
124 movl $0, %eax
125 cmove %rax, %rbx
126 addq $24, %rsp
127 movq %rbx, %rax
128 popq %rbx
129 popq %rbp
131 .p2align 4,,10
132 .p2align 3
133 .L10:
134 xorl %eax, %eax
135 movl $1, %ecx
136 lock cmpxchgl %ecx, lock(%rip)
137 je .L11
138 leaq lock(%rip), %rdi
139 movq %rdx, 8(%rsp)
140 movq %rsi, (%rsp)
141 call __lll_lock_wait_private
142 movq 8(%rsp), %rdx
143 movq (%rsp), %rsi
144 jmp .L11
145 .p2align 4,,10
146 .p2align 3
147 .L12:
148 xorl %eax, %eax
149 #APP
150 # 241 "random.c" 1
151 xchgl %eax, lock(%rip)
152 # 0 "" 2
153 #NO_APP
154 cmpl $1, %eax
155 jle .L13
156 xorl %r10d, %r10d
157 movl $1, %edx
158 movl $129, %esi
159 leaq lock(%rip), %rdi
160 movl $202, %eax
161 #APP
162 # 241 "random.c" 1
163 syscall
165 # 0 "" 2
166 #NO_APP
167 jmp .L13
168 .size __initstate, .-__initstate
169 .weak initstate
170 .set initstate,__initstate
171 .p2align 4,,15
172 .globl __setstate
173 .type __setstate, @function
174 __setstate:
175 pushq %rbp
176 pushq %rbx
177 movq %rdi, %rbp
178 subq $8, %rsp
179 #APP
180 # 261 "random.c" 1
181 movl %fs:24,%eax
182 # 0 "" 2
183 #NO_APP
184 testl %eax, %eax
185 jne .L17
186 movl $1, %edx
187 #APP
188 # 47 "../sysdeps/unix/sysv/linux/x86/lowlevellock.h" 1
189 cmpxchgl %edx, lock(%rip)
190 # 0 "" 2
191 #NO_APP
192 .L18:
193 movq 16+unsafe_state(%rip), %rax
194 leaq unsafe_state(%rip), %rsi
195 movq %rbp, %rdi
196 leaq -4(%rax), %rbx
197 call __setstate_r
198 testl %eax, %eax
199 movl $0, %eax
200 cmovs %rax, %rbx
201 #APP
202 # 268 "random.c" 1
203 movl %fs:24,%eax
204 # 0 "" 2
205 #NO_APP
206 testl %eax, %eax
207 jne .L20
208 subl $1, lock(%rip)
209 .L16:
210 addq $8, %rsp
211 movq %rbx, %rax
212 popq %rbx
213 popq %rbp
215 .p2align 4,,10
216 .p2align 3
217 .L17:
218 xorl %eax, %eax
219 movl $1, %edx
220 lock cmpxchgl %edx, lock(%rip)
221 je .L18
222 leaq lock(%rip), %rdi
223 call __lll_lock_wait_private
224 jmp .L18
225 .p2align 4,,10
226 .p2align 3
227 .L20:
228 xorl %eax, %eax
229 #APP
230 # 268 "random.c" 1
231 xchgl %eax, lock(%rip)
232 # 0 "" 2
233 #NO_APP
234 cmpl $1, %eax
235 jle .L16
236 call __setstate.part.1
237 jmp .L16
238 .size __setstate, .-__setstate
239 .weak setstate
240 .set setstate,__setstate
241 .p2align 4,,15
242 .globl __random
243 .hidden __random
244 .type __random, @function
245 __random:
246 subq $24, %rsp
247 #APP
248 # 291 "random.c" 1
249 movl %fs:24,%eax
250 # 0 "" 2
251 #NO_APP
252 testl %eax, %eax
253 jne .L24
254 movl $1, %edx
255 #APP
256 # 47 "../sysdeps/unix/sysv/linux/x86/lowlevellock.h" 1
257 cmpxchgl %edx, lock(%rip)
258 # 0 "" 2
259 #NO_APP
260 .L25:
261 leaq 12(%rsp), %rsi
262 leaq unsafe_state(%rip), %rdi
263 call __random_r
264 #APP
265 # 295 "random.c" 1
266 movl %fs:24,%eax
267 # 0 "" 2
268 #NO_APP
269 testl %eax, %eax
270 jne .L26
271 subl $1, lock(%rip)
272 .L27:
273 movslq 12(%rsp), %rax
274 addq $24, %rsp
276 .p2align 4,,10
277 .p2align 3
278 .L24:
279 xorl %eax, %eax
280 movl $1, %edx
281 lock cmpxchgl %edx, lock(%rip)
282 je .L25
283 leaq lock(%rip), %rdi
284 call __lll_lock_wait_private
285 jmp .L25
286 .p2align 4,,10
287 .p2align 3
288 .L26:
289 xorl %eax, %eax
290 #APP
291 # 295 "random.c" 1
292 xchgl %eax, lock(%rip)
293 # 0 "" 2
294 #NO_APP
295 cmpl $1, %eax
296 jle .L27
297 xorl %r10d, %r10d
298 movl $1, %edx
299 movl $129, %esi
300 leaq lock(%rip), %rdi
301 movl $202, %eax
302 #APP
303 # 295 "random.c" 1
304 syscall
306 # 0 "" 2
307 #NO_APP
308 jmp .L27
309 .size __random, .-__random
310 .weak random
311 .set random,__random
312 .local lock
313 .comm lock,4,4
314 .section .data.rel.local,"aw",@progbits
315 .align 32
316 .type unsafe_state, @object
317 .size unsafe_state, 48
318 unsafe_state:
319 .quad randtbl+16
320 .quad randtbl+4
321 .quad randtbl+4
322 .long 3
323 .long 31
324 .long 3
325 .zero 4
326 .quad randtbl+128
327 .data
328 .align 32
329 .type randtbl, @object
330 .size randtbl, 128
331 randtbl:
332 .long 3
333 .long -1726662223
334 .long 379960547
335 .long 1735697613
336 .long 1040273694
337 .long 1313901226
338 .long 1627687941
339 .long -179304937
340 .long -2073333483
341 .long 1780058412
342 .long -1989503057
343 .long -615974602
344 .long 344556628
345 .long 939512070
346 .long -1249116260
347 .long 1507946756
348 .long -812545463
349 .long 154635395
350 .long 1388815473
351 .long -1926676823
352 .long 525320961
353 .long -1009028674
354 .long 968117788
355 .long -123449607
356 .long 1284210865
357 .long 435012392
358 .long -2017506339
359 .long -911064859
360 .long -370259173
361 .long 1132637927
362 .long 1398500161
363 .long -205601318
364 .hidden __random_r
365 .hidden __setstate_r
366 .hidden __initstate_r
367 .hidden __lll_lock_wait_private
368 .hidden __srandom_r