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