clarify the purpose of this project
[nyanglibc.git] / nptl / elision-timed.shared.s
blob74dd5c10df0a934007b35fbfdf18b06f54e3f042
1 .text
2 .p2align 4,,15
3 .globl __lll_clocklock_elision
4 .hidden __lll_clocklock_elision
5 .type __lll_clocklock_elision, @function
6 __lll_clocklock_elision:
7 movzwl (%rsi), %eax
8 testw %ax, %ax
9 jg .L2
10 movl 8+__elision_aconf(%rip), %r9d
11 movl $-1, %r10d
12 testl %r9d, %r9d
13 jg .L3
14 jmp .L4
15 .p2align 4,,10
16 .p2align 3
17 .L6:
18 testb $2, %al
19 je .L29
20 subl $1, %r9d
21 je .L4
22 .L3:
23 movl %r10d, %eax
24 xbegin .L5
25 .L5:
26 cmpl $-1, %eax
27 jne .L6
28 movl (%rdi), %eax
29 testl %eax, %eax
30 je .L24
31 xabort $255
32 subl $1, %r9d
33 jne .L3
34 .p2align 4,,10
35 .p2align 3
36 .L4:
37 xorl %eax, %eax
38 movl $1, %esi
39 lock cmpxchgl %esi, (%rdi)
40 jne .L30
41 .L24:
42 xorl %eax, %eax
43 ret
44 .p2align 4,,10
45 .p2align 3
46 .L2:
47 movzwl (%rsi), %eax
48 subl $1, %eax
49 movw %ax, (%rsi)
50 jmp .L4
51 .p2align 4,,10
52 .p2align 3
53 .L29:
54 testb $1, %al
55 je .L10
56 shrl $24, %eax
57 cmpl $255, %eax
58 je .L31
59 .L10:
60 movswl (%rsi), %eax
61 movl 4+__elision_aconf(%rip), %r9d
62 cmpl %r9d, %eax
63 je .L4
64 .L27:
65 movw %r9w, (%rsi)
66 jmp .L4
67 .p2align 4,,10
68 .p2align 3
69 .L30:
70 pushq %r14
71 movl $2, %r14d
72 pushq %r13
73 movl %r8d, %r13d
74 pushq %r12
75 movq %rcx, %r12
76 pushq %rbp
77 movl %edx, %ebp
78 pushq %rbx
79 movq %rdi, %rbx
80 jmp .L13
81 .p2align 4,,10
82 .p2align 3
83 .L14:
84 movl %r13d, %r8d
85 movq %r12, %rcx
86 movl %ebp, %edx
87 movl $2, %esi
88 movq %rbx, %rdi
89 call __GI___futex_abstimed_wait64
90 cmpl $22, %eax
91 je .L1
92 cmpl $110, %eax
93 je .L1
94 cmpl $75, %eax
95 je .L1
96 .L13:
97 movl %r14d, %eax
98 #APP
99 # 364 "../sysdeps/nptl/futex-internal.h" 1
100 xchgl %eax, (%rbx)
101 # 0 "" 2
102 #NO_APP
103 testl %eax, %eax
104 jne .L14
105 xorl %eax, %eax
106 .L1:
107 popq %rbx
108 popq %rbp
109 popq %r12
110 popq %r13
111 popq %r14
113 .L31:
114 movswl (%rsi), %eax
115 movl __elision_aconf(%rip), %r9d
116 cmpl %r9d, %eax
117 je .L4
118 jmp .L27
119 .size __lll_clocklock_elision, .-__lll_clocklock_elision
120 .hidden __elision_aconf