clarify the purpose of this project
[nyanglibc.git] / nptl / pthread_attr_copy.s
blobac4a128bf4ee2fbdba4d4994a2f5ee9433edfa7d
1 .text
2 .p2align 4,,15
3 .globl __pthread_attr_copy
4 .hidden __pthread_attr_copy
5 .type __pthread_attr_copy, @function
6 __pthread_attr_copy:
7 pushq %r13
8 pushq %r12
9 pushq %rbp
10 pushq %rbx
11 movq %rdi, %rbp
12 subq $72, %rsp
13 movq 48(%rsi), %rax
14 movdqu (%rsi), %xmm0
15 movq %rax, 48(%rsp)
16 movq 40(%rsi), %rax
17 movaps %xmm0, (%rsp)
18 testq %rax, %rax
19 movdqu 16(%rsi), %xmm0
20 movaps %xmm0, 16(%rsp)
21 movdqu 32(%rsi), %xmm0
22 movaps %xmm0, 32(%rsp)
23 movq $0, 40(%rsp)
24 je .L2
25 movq %rsi, %rbx
26 movq 8(%rax), %rsi
27 testq %rsi, %rsi
28 jne .L3
29 cmpb $0, 144(%rax)
30 movq %rsp, %r13
31 jne .L4
32 .L2:
33 movdqa (%rsp), %xmm0
34 xorl %r12d, %r12d
35 movq 48(%rsp), %rax
36 movups %xmm0, 0(%rbp)
37 movdqa 16(%rsp), %xmm0
38 movq %rax, 48(%rbp)
39 movl %r12d, %eax
40 movups %xmm0, 16(%rbp)
41 movdqa 32(%rsp), %xmm0
42 movups %xmm0, 32(%rbp)
43 addq $72, %rsp
44 popq %rbx
45 popq %rbp
46 popq %r12
47 popq %r13
48 ret
49 .p2align 4,,10
50 .p2align 3
51 .L3:
52 movq (%rax), %rdx
53 movq %rsp, %r13
54 movq %r13, %rdi
55 call __pthread_attr_setaffinity_np
56 testl %eax, %eax
57 movl %eax, %r12d
58 jne .L5
59 movq 40(%rbx), %rax
60 cmpb $0, 144(%rax)
61 je .L2
62 .p2align 4,,10
63 .p2align 3
64 .L4:
65 leaq 16(%rax), %rsi
66 movq %r13, %rdi
67 call __pthread_attr_setsigmask_internal
68 testl %eax, %eax
69 movl %eax, %r12d
70 je .L2
71 .L5:
72 movq %r13, %rdi
73 call __pthread_attr_destroy
74 addq $72, %rsp
75 movl %r12d, %eax
76 popq %rbx
77 popq %rbp
78 popq %r12
79 popq %r13
80 ret
81 .size __pthread_attr_copy, .-__pthread_attr_copy
82 .hidden __pthread_attr_destroy
83 .hidden __pthread_attr_setsigmask_internal
84 .hidden __pthread_attr_setaffinity_np