OLD | NEW |
1 #if defined(__i386__) | 1 #if defined(__i386__) |
2 .file "crypto/cpu-x86-asm.S" | 2 .file "crypto/cpu-x86-asm.S" |
3 .text | 3 .text |
4 .globl OPENSSL_ia32_cpuid | 4 .globl OPENSSL_ia32_cpuid |
| 5 .hidden OPENSSL_ia32_cpuid |
5 .type OPENSSL_ia32_cpuid,@function | 6 .type OPENSSL_ia32_cpuid,@function |
6 .align 16 | 7 .align 16 |
7 OPENSSL_ia32_cpuid: | 8 OPENSSL_ia32_cpuid: |
8 .L_OPENSSL_ia32_cpuid_begin: | 9 .L_OPENSSL_ia32_cpuid_begin: |
9 pushl %ebp | 10 pushl %ebp |
10 pushl %ebx | 11 pushl %ebx |
11 pushl %esi | 12 pushl %esi |
12 pushl %edi | 13 pushl %edi |
13 xorl %edx,%edx | 14 xorl %edx,%edx |
14 pushfl | 15 pushfl |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 movl %esi,%eax | 141 movl %esi,%eax |
141 movl %ebp,%edx | 142 movl %ebp,%edx |
142 .L000nocpuid: | 143 .L000nocpuid: |
143 popl %edi | 144 popl %edi |
144 popl %esi | 145 popl %esi |
145 popl %ebx | 146 popl %ebx |
146 popl %ebp | 147 popl %ebp |
147 ret | 148 ret |
148 .size OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin | 149 .size OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin |
149 .globl OPENSSL_rdtsc | 150 .globl OPENSSL_rdtsc |
| 151 .hidden OPENSSL_rdtsc |
150 .type OPENSSL_rdtsc,@function | 152 .type OPENSSL_rdtsc,@function |
151 .align 16 | 153 .align 16 |
152 OPENSSL_rdtsc: | 154 OPENSSL_rdtsc: |
153 .L_OPENSSL_rdtsc_begin: | 155 .L_OPENSSL_rdtsc_begin: |
154 xorl %eax,%eax | 156 xorl %eax,%eax |
155 xorl %edx,%edx | 157 xorl %edx,%edx |
156 call .L009PIC_me_up | 158 call .L009PIC_me_up |
157 .L009PIC_me_up: | 159 .L009PIC_me_up: |
158 popl %ecx | 160 popl %ecx |
159 leal OPENSSL_ia32cap_P-.L009PIC_me_up(%ecx),%ecx | 161 leal OPENSSL_ia32cap_P-.L009PIC_me_up(%ecx),%ecx |
160 btl $4,(%ecx) | 162 btl $4,(%ecx) |
161 jnc .L010notsc | 163 jnc .L010notsc |
162 .byte 0x0f,0x31 | 164 .byte 0x0f,0x31 |
163 .L010notsc: | 165 .L010notsc: |
164 ret | 166 ret |
165 .size OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin | 167 .size OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin |
166 .globl OPENSSL_instrument_halt | 168 .globl OPENSSL_instrument_halt |
| 169 .hidden OPENSSL_instrument_halt |
167 .type OPENSSL_instrument_halt,@function | 170 .type OPENSSL_instrument_halt,@function |
168 .align 16 | 171 .align 16 |
169 OPENSSL_instrument_halt: | 172 OPENSSL_instrument_halt: |
170 .L_OPENSSL_instrument_halt_begin: | 173 .L_OPENSSL_instrument_halt_begin: |
171 call .L011PIC_me_up | 174 call .L011PIC_me_up |
172 .L011PIC_me_up: | 175 .L011PIC_me_up: |
173 popl %ecx | 176 popl %ecx |
174 leal OPENSSL_ia32cap_P-.L011PIC_me_up(%ecx),%ecx | 177 leal OPENSSL_ia32cap_P-.L011PIC_me_up(%ecx),%ecx |
175 btl $4,(%ecx) | 178 btl $4,(%ecx) |
176 jnc .L012nohalt | 179 jnc .L012nohalt |
(...skipping 12 matching lines...) Expand all Loading... |
189 subl (%esp),%eax | 192 subl (%esp),%eax |
190 sbbl 4(%esp),%edx | 193 sbbl 4(%esp),%edx |
191 addl $8,%esp | 194 addl $8,%esp |
192 ret | 195 ret |
193 .L012nohalt: | 196 .L012nohalt: |
194 xorl %eax,%eax | 197 xorl %eax,%eax |
195 xorl %edx,%edx | 198 xorl %edx,%edx |
196 ret | 199 ret |
197 .size OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin | 200 .size OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin |
198 .globl OPENSSL_far_spin | 201 .globl OPENSSL_far_spin |
| 202 .hidden OPENSSL_far_spin |
199 .type OPENSSL_far_spin,@function | 203 .type OPENSSL_far_spin,@function |
200 .align 16 | 204 .align 16 |
201 OPENSSL_far_spin: | 205 OPENSSL_far_spin: |
202 .L_OPENSSL_far_spin_begin: | 206 .L_OPENSSL_far_spin_begin: |
203 pushfl | 207 pushfl |
204 popl %eax | 208 popl %eax |
205 btl $9,%eax | 209 btl $9,%eax |
206 jnc .L013nospin | 210 jnc .L013nospin |
207 movl 4(%esp),%eax | 211 movl 4(%esp),%eax |
208 movl 8(%esp),%ecx | 212 movl 8(%esp),%ecx |
209 .long 2430111262 | 213 .long 2430111262 |
210 xorl %eax,%eax | 214 xorl %eax,%eax |
211 movl (%ecx),%edx | 215 movl (%ecx),%edx |
212 jmp .L014spin | 216 jmp .L014spin |
213 .align 16 | 217 .align 16 |
214 .L014spin: | 218 .L014spin: |
215 incl %eax | 219 incl %eax |
216 cmpl (%ecx),%edx | 220 cmpl (%ecx),%edx |
217 je .L014spin | 221 je .L014spin |
218 .long 529567888 | 222 .long 529567888 |
219 ret | 223 ret |
220 .L013nospin: | 224 .L013nospin: |
221 xorl %eax,%eax | 225 xorl %eax,%eax |
222 xorl %edx,%edx | 226 xorl %edx,%edx |
223 ret | 227 ret |
224 .size OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin | 228 .size OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin |
225 .globl OPENSSL_wipe_cpu | 229 .globl OPENSSL_wipe_cpu |
| 230 .hidden OPENSSL_wipe_cpu |
226 .type OPENSSL_wipe_cpu,@function | 231 .type OPENSSL_wipe_cpu,@function |
227 .align 16 | 232 .align 16 |
228 OPENSSL_wipe_cpu: | 233 OPENSSL_wipe_cpu: |
229 .L_OPENSSL_wipe_cpu_begin: | 234 .L_OPENSSL_wipe_cpu_begin: |
230 xorl %eax,%eax | 235 xorl %eax,%eax |
231 xorl %edx,%edx | 236 xorl %edx,%edx |
232 call .L015PIC_me_up | 237 call .L015PIC_me_up |
233 .L015PIC_me_up: | 238 .L015PIC_me_up: |
234 popl %ecx | 239 popl %ecx |
235 leal OPENSSL_ia32cap_P-.L015PIC_me_up(%ecx),%ecx | 240 leal OPENSSL_ia32cap_P-.L015PIC_me_up(%ecx),%ecx |
236 movl (%ecx),%ecx | 241 movl (%ecx),%ecx |
237 btl $1,(%ecx) | 242 btl $1,(%ecx) |
238 jnc .L016no_x87 | 243 jnc .L016no_x87 |
239 .long 4007259865,4007259865,4007259865,4007259865,2430851995 | 244 .long 4007259865,4007259865,4007259865,4007259865,2430851995 |
240 .L016no_x87: | 245 .L016no_x87: |
241 leal 4(%esp),%eax | 246 leal 4(%esp),%eax |
242 ret | 247 ret |
243 .size OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin | 248 .size OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin |
244 .globl OPENSSL_atomic_add | 249 .globl OPENSSL_atomic_add |
| 250 .hidden OPENSSL_atomic_add |
245 .type OPENSSL_atomic_add,@function | 251 .type OPENSSL_atomic_add,@function |
246 .align 16 | 252 .align 16 |
247 OPENSSL_atomic_add: | 253 OPENSSL_atomic_add: |
248 .L_OPENSSL_atomic_add_begin: | 254 .L_OPENSSL_atomic_add_begin: |
249 movl 4(%esp),%edx | 255 movl 4(%esp),%edx |
250 movl 8(%esp),%ecx | 256 movl 8(%esp),%ecx |
251 pushl %ebx | 257 pushl %ebx |
252 nop | 258 nop |
253 movl (%edx),%eax | 259 movl (%edx),%eax |
254 .L017spin: | 260 .L017spin: |
255 leal (%eax,%ecx,1),%ebx | 261 leal (%eax,%ecx,1),%ebx |
256 nop | 262 nop |
257 .long 447811568 | 263 .long 447811568 |
258 jne .L017spin | 264 jne .L017spin |
259 movl %ebx,%eax | 265 movl %ebx,%eax |
260 popl %ebx | 266 popl %ebx |
261 ret | 267 ret |
262 .size OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin | 268 .size OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin |
263 .globl OPENSSL_indirect_call | 269 .globl OPENSSL_indirect_call |
| 270 .hidden OPENSSL_indirect_call |
264 .type OPENSSL_indirect_call,@function | 271 .type OPENSSL_indirect_call,@function |
265 .align 16 | 272 .align 16 |
266 OPENSSL_indirect_call: | 273 OPENSSL_indirect_call: |
267 .L_OPENSSL_indirect_call_begin: | 274 .L_OPENSSL_indirect_call_begin: |
268 pushl %ebp | 275 pushl %ebp |
269 movl %esp,%ebp | 276 movl %esp,%ebp |
270 subl $28,%esp | 277 subl $28,%esp |
271 movl 12(%ebp),%ecx | 278 movl 12(%ebp),%ecx |
272 movl %ecx,(%esp) | 279 movl %ecx,(%esp) |
273 movl 16(%ebp),%edx | 280 movl 16(%ebp),%edx |
274 movl %edx,4(%esp) | 281 movl %edx,4(%esp) |
275 movl 20(%ebp),%eax | 282 movl 20(%ebp),%eax |
276 movl %eax,8(%esp) | 283 movl %eax,8(%esp) |
277 movl 24(%ebp),%eax | 284 movl 24(%ebp),%eax |
278 movl %eax,12(%esp) | 285 movl %eax,12(%esp) |
279 movl 28(%ebp),%eax | 286 movl 28(%ebp),%eax |
280 movl %eax,16(%esp) | 287 movl %eax,16(%esp) |
281 movl 32(%ebp),%eax | 288 movl 32(%ebp),%eax |
282 movl %eax,20(%esp) | 289 movl %eax,20(%esp) |
283 movl 36(%ebp),%eax | 290 movl 36(%ebp),%eax |
284 movl %eax,24(%esp) | 291 movl %eax,24(%esp) |
285 call *8(%ebp) | 292 call *8(%ebp) |
286 movl %ebp,%esp | 293 movl %ebp,%esp |
287 popl %ebp | 294 popl %ebp |
288 ret | 295 ret |
289 .size OPENSSL_indirect_call,.-.L_OPENSSL_indirect_call_begin | 296 .size OPENSSL_indirect_call,.-.L_OPENSSL_indirect_call_begin |
290 .globl OPENSSL_cleanse | |
291 .type OPENSSL_cleanse,@function | |
292 .align 16 | |
293 OPENSSL_cleanse: | |
294 .L_OPENSSL_cleanse_begin: | |
295 movl 4(%esp),%edx | |
296 movl 8(%esp),%ecx | |
297 xorl %eax,%eax | |
298 cmpl $7,%ecx | |
299 jae .L018lot | |
300 cmpl $0,%ecx | |
301 je .L019ret | |
302 .L020little: | |
303 movb %al,(%edx) | |
304 subl $1,%ecx | |
305 leal 1(%edx),%edx | |
306 jnz .L020little | |
307 .L019ret: | |
308 ret | |
309 .align 16 | |
310 .L018lot: | |
311 testl $3,%edx | |
312 jz .L021aligned | |
313 movb %al,(%edx) | |
314 leal -1(%ecx),%ecx | |
315 leal 1(%edx),%edx | |
316 jmp .L018lot | |
317 .L021aligned: | |
318 movl %eax,(%edx) | |
319 leal -4(%ecx),%ecx | |
320 testl $-4,%ecx | |
321 leal 4(%edx),%edx | |
322 jnz .L021aligned | |
323 cmpl $0,%ecx | |
324 jne .L020little | |
325 ret | |
326 .size OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin | |
327 .globl OPENSSL_ia32_rdrand | 297 .globl OPENSSL_ia32_rdrand |
| 298 .hidden OPENSSL_ia32_rdrand |
328 .type OPENSSL_ia32_rdrand,@function | 299 .type OPENSSL_ia32_rdrand,@function |
329 .align 16 | 300 .align 16 |
330 OPENSSL_ia32_rdrand: | 301 OPENSSL_ia32_rdrand: |
331 .L_OPENSSL_ia32_rdrand_begin: | 302 .L_OPENSSL_ia32_rdrand_begin: |
332 movl $8,%ecx | 303 movl $8,%ecx |
333 .L022loop: | 304 .L018loop: |
334 .byte 15,199,240 | 305 .byte 15,199,240 |
335 » jc» .L023break | 306 » jc» .L019break |
336 » loop» .L022loop | 307 » loop» .L018loop |
337 .L023break: | 308 .L019break: |
338 cmpl $0,%eax | 309 cmpl $0,%eax |
339 cmovel %ecx,%eax | 310 cmovel %ecx,%eax |
340 ret | 311 ret |
341 .size OPENSSL_ia32_rdrand,.-.L_OPENSSL_ia32_rdrand_begin | 312 .size OPENSSL_ia32_rdrand,.-.L_OPENSSL_ia32_rdrand_begin |
342 .hidden OPENSSL_ia32cap_P | 313 .hidden OPENSSL_ia32cap_P |
343 #endif | 314 #endif |
OLD | NEW |