clarify the purpose of this project
[nyanglibc.git] / libio / fputc.s
blob0df1f13bc9be9eeaa273ca7cc2e955473b8b5d31
1 .text
2 .p2align 4,,15
3 .globl fputc
4 .type fputc, @function
5 fputc:
6 .LFB68:
7 pushq %r12
8 pushq %rbp
9 pushq %rbx
10 testb $-128, 116(%rsi)
11 movq %rsi, %rbx
12 jne .L2
13 movq 40(%rsi), %rdx
14 cmpq 48(%rsi), %rdx
15 movzbl %dil, %r8d
16 jnb .L20
17 leaq 1(%rdx), %rcx
18 movq %rcx, 40(%rsi)
19 movb %dil, (%rdx)
20 .L1:
21 popq %rbx
22 movl %r8d, %eax
23 popq %rbp
24 popq %r12
25 ret
26 .p2align 4,,10
27 .p2align 3
28 .L2:
29 movl (%rsi), %edx
30 movl %edi, %ebp
31 andl $32768, %edx
32 jne .L5
33 movq 136(%rsi), %rdi
34 movq %fs:16, %r12
35 cmpq %r12, 8(%rdi)
36 je .L6
37 #APP
38 # 37 "fputc.c" 1
39 movl %fs:24,%eax
40 # 0 "" 2
41 #NO_APP
42 testl %eax, %eax
43 jne .L7
44 movl $1, %edx
45 #APP
46 # 47 "../sysdeps/unix/sysv/linux/x86/lowlevellock.h" 1
47 cmpxchgl %edx, (%rdi)
48 # 0 "" 2
49 #NO_APP
50 .L8:
51 movq 136(%rbx), %rdi
52 movq %r12, 8(%rdi)
53 .L6:
54 addl $1, 4(%rdi)
55 .L5:
56 movq 40(%rbx), %rax
57 cmpq 48(%rbx), %rax
58 movzbl %bpl, %r8d
59 jnb .L21
60 leaq 1(%rax), %rdx
61 movq %rdx, 40(%rbx)
62 movb %bpl, (%rax)
63 .L12:
64 testl $32768, (%rbx)
65 jne .L1
66 movq 136(%rbx), %rdi
67 movl 4(%rdi), %eax
68 subl $1, %eax
69 testl %eax, %eax
70 movl %eax, 4(%rdi)
71 jne .L1
72 movq $0, 8(%rdi)
73 #APP
74 # 885 "libioP.h" 1
75 movl %fs:24,%edx
76 # 0 "" 2
77 #NO_APP
78 testl %edx, %edx
79 jne .L13
80 subl $1, (%rdi)
81 movl %r8d, %eax
82 popq %rbx
83 popq %rbp
84 popq %r12
85 ret
86 .p2align 4,,10
87 .p2align 3
88 .L21:
89 movl %r8d, %esi
90 movq %rbx, %rdi
91 .LEHB0:
92 call __overflow
93 .LEHE0:
94 movl %eax, %r8d
95 jmp .L12
96 .p2align 4,,10
97 .p2align 3
98 .L20:
99 movq %rbx, %rdi
100 movl %r8d, %esi
101 popq %rbx
102 popq %rbp
103 popq %r12
104 .LEHB1:
105 jmp __overflow
106 .LEHE1:
107 .p2align 4,,10
108 .p2align 3
109 .L7:
110 movl $1, %ecx
111 movl %edx, %eax
112 lock cmpxchgl %ecx, (%rdi)
113 je .L8
114 .LEHB2:
115 call __lll_lock_wait_private
116 .LEHE2:
117 jmp .L8
118 .p2align 4,,10
119 .p2align 3
120 .L13:
121 #APP
122 # 885 "libioP.h" 1
123 xchgl %eax, (%rdi)
124 # 0 "" 2
125 #NO_APP
126 cmpl $1, %eax
127 jle .L1
128 xorl %r10d, %r10d
129 movl $1, %edx
130 movl $129, %esi
131 movl $202, %eax
132 #APP
133 # 885 "libioP.h" 1
134 syscall
136 # 0 "" 2
137 #NO_APP
138 jmp .L1
139 .L17:
140 testl $32768, (%rbx)
141 movq %rax, %r8
142 jne .L15
143 movq 136(%rbx), %rdi
144 movl 4(%rdi), %eax
145 subl $1, %eax
146 testl %eax, %eax
147 movl %eax, 4(%rdi)
148 jne .L15
149 movq $0, 8(%rdi)
150 #APP
151 # 885 "libioP.h" 1
152 movl %fs:24,%edx
153 # 0 "" 2
154 #NO_APP
155 testl %edx, %edx
156 jne .L16
157 subl $1, (%rdi)
158 .L15:
159 movq %r8, %rdi
160 .LEHB3:
161 call _Unwind_Resume@PLT
162 .LEHE3:
163 .L16:
164 #APP
165 # 885 "libioP.h" 1
166 xchgl %eax, (%rdi)
167 # 0 "" 2
168 #NO_APP
169 subl $1, %eax
170 jle .L15
171 xorl %r10d, %r10d
172 movl $1, %edx
173 movl $129, %esi
174 movl $202, %eax
175 #APP
176 # 885 "libioP.h" 1
177 syscall
179 # 0 "" 2
180 #NO_APP
181 jmp .L15
182 .LFE68:
183 .globl __gcc_personality_v0
184 .section .gcc_except_table,"a",@progbits
185 .LLSDA68:
186 .byte 0xff
187 .byte 0xff
188 .byte 0x1
189 .uleb128 .LLSDACSE68-.LLSDACSB68
190 .LLSDACSB68:
191 .uleb128 .LEHB0-.LFB68
192 .uleb128 .LEHE0-.LEHB0
193 .uleb128 .L17-.LFB68
194 .uleb128 0
195 .uleb128 .LEHB1-.LFB68
196 .uleb128 .LEHE1-.LEHB1
197 .uleb128 0
198 .uleb128 0
199 .uleb128 .LEHB2-.LFB68
200 .uleb128 .LEHE2-.LEHB2
201 .uleb128 .L17-.LFB68
202 .uleb128 0
203 .uleb128 .LEHB3-.LFB68
204 .uleb128 .LEHE3-.LEHB3
205 .uleb128 0
206 .uleb128 0
207 .LLSDACSE68:
208 .text
209 .size fputc, .-fputc
210 .hidden DW.ref.__gcc_personality_v0
211 .weak DW.ref.__gcc_personality_v0
212 .section .data.DW.ref.__gcc_personality_v0,"awG",@progbits,DW.ref.__gcc_personality_v0,comdat
213 .align 8
214 .type DW.ref.__gcc_personality_v0, @object
215 .size DW.ref.__gcc_personality_v0, 8
216 DW.ref.__gcc_personality_v0:
217 .quad __gcc_personality_v0
218 .hidden __lll_lock_wait_private
219 .hidden __overflow