clarify the purpose of this project
[nyanglibc.git] / nptl / pthread_join_common.s
blob07f4d065eab6b6686e6113049c0ebf3d3d29683a
1 .text
2 .p2align 4,,15
3 .type cleanup, @function
4 cleanup:
5 movq %rdi, -8(%rsp)
6 movq %fs:16, %rax
7 xorl %edx, %edx
8 lock cmpxchgq %rdx, -8(%rsp)
9 ret
10 .size cleanup, .-cleanup
11 .p2align 4,,15
12 .globl __pthread_clockjoin_ex
13 .type __pthread_clockjoin_ex, @function
14 __pthread_clockjoin_ex:
15 movl 720(%rdi), %eax
16 testl %eax, %eax
17 js .L17
18 cmpq %rdi, 1576(%rdi)
19 je .L8
20 movq %fs:16, %r9
21 cmpq %rdi, %r9
22 je .L6
23 cmpq %rdi, 1576(%r9)
24 je .L28
25 .L7:
26 leaq 1576(%rdi), %r10
27 xorl %r11d, %r11d
28 movq %r9, %rax
29 lock cmpxchgq %r11, (%r10)
30 je .L8
31 pushq %r15
32 pushq %r14
33 pushq %r13
34 pushq %r12
35 movq %rsi, %r13
36 pushq %rbp
37 pushq %rbx
38 movq %rcx, %r12
39 movl %edx, %ebp
40 movq %rdi, %rbx
41 subq $56, %rsp
42 testb %r8b, %r8b
43 jne .L9
44 .L27:
45 movq 1584(%rbx), %rax
46 .L10:
47 testq %r13, %r13
48 movl $-1, 720(%rbx)
49 je .L16
50 movq %rax, 0(%r13)
51 .L16:
52 movq %rbx, %rdi
53 call __free_tcb@PLT
54 xorl %eax, %eax
55 .L3:
56 addq $56, %rsp
57 popq %rbx
58 popq %rbp
59 popq %r12
60 popq %r13
61 popq %r14
62 popq %r15
63 ret
64 .p2align 4,,10
65 .p2align 3
66 .L28:
67 testb $60, 776(%rdi)
68 jne .L7
69 .L6:
70 movl 776(%r9), %r10d
71 movl $35, %eax
72 andl $-71, %r10d
73 cmpl $8, %r10d
74 je .L7
75 rep ret
76 .p2align 4,,10
77 .p2align 3
78 .L8:
79 movl $22, %eax
80 ret
81 .p2align 4,,10
82 .p2align 3
83 .L9:
84 leaq 16(%rsp), %r15
85 leaq cleanup(%rip), %rsi
86 movq %r10, %rdx
87 leaq 720(%rbx), %r14
88 movq %r15, %rdi
89 call __pthread_cleanup_push@PLT
90 jmp .L11
91 .p2align 4,,10
92 .p2align 3
93 .L13:
94 movl $128, %r8d
95 movq %r12, %rcx
96 movl %ebp, %edx
97 movq %r14, %rdi
98 call __futex_abstimed_wait_cancelable64@PLT
99 cmpl $110, %eax
100 je .L12
101 cmpl $75, %eax
102 je .L12
103 .L11:
104 movl (%r14), %esi
105 testl %esi, %esi
106 jne .L13
107 xorl %esi, %esi
108 movq %r15, %rdi
109 call __pthread_cleanup_pop@PLT
110 movq 1584(%rbx), %rax
111 jmp .L10
112 .p2align 4,,10
113 .p2align 3
114 .L17:
115 movl $3, %eax
117 .p2align 4,,10
118 .p2align 3
119 .L12:
120 xorl %esi, %esi
121 movq %r15, %rdi
122 movl %eax, 12(%rsp)
123 call __pthread_cleanup_pop@PLT
124 movl 12(%rsp), %eax
125 testl %eax, %eax
126 je .L27
127 movq $0, 1576(%rbx)
128 jmp .L3
129 .size __pthread_clockjoin_ex, .-__pthread_clockjoin_ex