1 1.14 christos #include <machine/asm.h> 2 1.14 christos .text 3 1.14 christos .globl OPENSSL_ia32_cpuid 4 1.14 christos .type OPENSSL_ia32_cpuid,@function 5 1.14 christos .align 16 6 1.14 christos OPENSSL_ia32_cpuid: 7 1.14 christos .L_OPENSSL_ia32_cpuid_begin: 8 1.18 christos #ifdef __CET__ 9 1.18 christos 10 1.18 christos .byte 243,15,30,251 11 1.18 christos #endif 12 1.18 christos 13 1.14 christos pushl %ebp 14 1.14 christos pushl %ebx 15 1.14 christos pushl %esi 16 1.14 christos pushl %edi 17 1.14 christos xorl %edx,%edx 18 1.14 christos pushfl 19 1.14 christos popl %eax 20 1.14 christos movl %eax,%ecx 21 1.14 christos xorl $2097152,%eax 22 1.14 christos pushl %eax 23 1.14 christos popfl 24 1.14 christos pushfl 25 1.14 christos popl %eax 26 1.14 christos xorl %eax,%ecx 27 1.14 christos xorl %eax,%eax 28 1.15 christos movl 20(%esp),%esi 29 1.15 christos movl %eax,8(%esi) 30 1.14 christos btl $21,%ecx 31 1.14 christos jnc .L000nocpuid 32 1.14 christos .byte 0x0f,0xa2 33 1.14 christos movl %eax,%edi 34 1.14 christos xorl %eax,%eax 35 1.14 christos cmpl $1970169159,%ebx 36 1.14 christos setne %al 37 1.14 christos movl %eax,%ebp 38 1.14 christos cmpl $1231384169,%edx 39 1.14 christos setne %al 40 1.14 christos orl %eax,%ebp 41 1.14 christos cmpl $1818588270,%ecx 42 1.14 christos setne %al 43 1.14 christos orl %eax,%ebp 44 1.14 christos jz .L001intel 45 1.14 christos cmpl $1752462657,%ebx 46 1.14 christos setne %al 47 1.14 christos movl %eax,%esi 48 1.14 christos cmpl $1769238117,%edx 49 1.14 christos setne %al 50 1.14 christos orl %eax,%esi 51 1.14 christos cmpl $1145913699,%ecx 52 1.14 christos setne %al 53 1.14 christos orl %eax,%esi 54 1.14 christos jnz .L001intel 55 1.14 christos movl $2147483648,%eax 56 1.14 christos .byte 0x0f,0xa2 57 1.14 christos cmpl $2147483649,%eax 58 1.14 christos jb .L001intel 59 1.14 christos movl %eax,%esi 60 1.14 christos movl $2147483649,%eax 61 1.14 christos .byte 0x0f,0xa2 62 1.14 christos orl %ecx,%ebp 63 1.14 christos andl $2049,%ebp 64 1.14 christos cmpl $2147483656,%esi 65 1.14 christos jb .L001intel 66 1.14 christos movl $2147483656,%eax 67 1.14 christos .byte 0x0f,0xa2 68 1.14 christos movzbl %cl,%esi 69 1.14 christos incl %esi 70 1.14 christos movl $1,%eax 71 1.14 christos xorl %ecx,%ecx 72 1.14 christos .byte 0x0f,0xa2 73 1.14 christos btl $28,%edx 74 1.14 christos jnc .L002generic 75 1.14 christos shrl $16,%ebx 76 1.14 christos andl $255,%ebx 77 1.14 christos cmpl %esi,%ebx 78 1.14 christos ja .L002generic 79 1.14 christos andl $4026531839,%edx 80 1.14 christos jmp .L002generic 81 1.14 christos .L001intel: 82 1.14 christos cmpl $4,%edi 83 1.15 christos movl $-1,%esi 84 1.15 christos jb .L003nocacheinfo 85 1.14 christos movl $4,%eax 86 1.14 christos movl $0,%ecx 87 1.14 christos .byte 0x0f,0xa2 88 1.15 christos movl %eax,%esi 89 1.15 christos shrl $14,%esi 90 1.15 christos andl $4095,%esi 91 1.15 christos .L003nocacheinfo: 92 1.14 christos movl $1,%eax 93 1.14 christos xorl %ecx,%ecx 94 1.14 christos .byte 0x0f,0xa2 95 1.14 christos andl $3220176895,%edx 96 1.14 christos cmpl $0,%ebp 97 1.15 christos jne .L004notintel 98 1.14 christos orl $1073741824,%edx 99 1.14 christos andb $15,%ah 100 1.14 christos cmpb $15,%ah 101 1.15 christos jne .L004notintel 102 1.14 christos orl $1048576,%edx 103 1.15 christos .L004notintel: 104 1.14 christos btl $28,%edx 105 1.14 christos jnc .L002generic 106 1.14 christos andl $4026531839,%edx 107 1.15 christos cmpl $0,%esi 108 1.14 christos je .L002generic 109 1.14 christos orl $268435456,%edx 110 1.14 christos shrl $16,%ebx 111 1.14 christos cmpb $1,%bl 112 1.14 christos ja .L002generic 113 1.14 christos andl $4026531839,%edx 114 1.14 christos .L002generic: 115 1.14 christos andl $2048,%ebp 116 1.14 christos andl $4294965247,%ecx 117 1.14 christos movl %edx,%esi 118 1.14 christos orl %ecx,%ebp 119 1.15 christos cmpl $7,%edi 120 1.15 christos movl 20(%esp),%edi 121 1.15 christos jb .L005no_extended_info 122 1.15 christos movl $7,%eax 123 1.15 christos xorl %ecx,%ecx 124 1.15 christos .byte 0x0f,0xa2 125 1.15 christos movl %ebx,8(%edi) 126 1.15 christos .L005no_extended_info: 127 1.15 christos btl $27,%ebp 128 1.14 christos jnc .L006clear_avx 129 1.14 christos xorl %ecx,%ecx 130 1.14 christos .byte 15,1,208 131 1.14 christos andl $6,%eax 132 1.14 christos cmpl $6,%eax 133 1.14 christos je .L007done 134 1.14 christos cmpl $2,%eax 135 1.14 christos je .L006clear_avx 136 1.14 christos .L008clear_xmm: 137 1.14 christos andl $4261412861,%ebp 138 1.14 christos andl $4278190079,%esi 139 1.14 christos .L006clear_avx: 140 1.14 christos andl $4026525695,%ebp 141 1.14 christos andl $4294967263,8(%edi) 142 1.14 christos .L007done: 143 1.14 christos movl %esi,%eax 144 1.14 christos movl %ebp,%edx 145 1.14 christos .L000nocpuid: 146 1.14 christos popl %edi 147 1.14 christos popl %esi 148 1.14 christos popl %ebx 149 1.14 christos popl %ebp 150 1.14 christos ret 151 1.14 christos .size OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin 152 1.14 christos .globl OPENSSL_rdtsc 153 1.14 christos .type OPENSSL_rdtsc,@function 154 1.14 christos .align 16 155 1.14 christos OPENSSL_rdtsc: 156 1.14 christos .L_OPENSSL_rdtsc_begin: 157 1.18 christos #ifdef __CET__ 158 1.18 christos 159 1.18 christos .byte 243,15,30,251 160 1.18 christos #endif 161 1.18 christos 162 1.14 christos xorl %eax,%eax 163 1.14 christos xorl %edx,%edx 164 1.16 nakayama call .L009PIC_me_up 165 1.16 nakayama .L009PIC_me_up: 166 1.16 nakayama popl %ecx 167 1.16 nakayama leal OPENSSL_ia32cap_P-.L009PIC_me_up(%ecx),%ecx 168 1.14 christos btl $4,(%ecx) 169 1.16 nakayama jnc .L010notsc 170 1.14 christos .byte 0x0f,0x31 171 1.16 nakayama .L010notsc: 172 1.14 christos ret 173 1.14 christos .size OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin 174 1.14 christos .globl OPENSSL_instrument_halt 175 1.14 christos .type OPENSSL_instrument_halt,@function 176 1.14 christos .align 16 177 1.14 christos OPENSSL_instrument_halt: 178 1.14 christos .L_OPENSSL_instrument_halt_begin: 179 1.18 christos #ifdef __CET__ 180 1.18 christos 181 1.18 christos .byte 243,15,30,251 182 1.18 christos #endif 183 1.18 christos 184 1.16 nakayama call .L011PIC_me_up 185 1.16 nakayama .L011PIC_me_up: 186 1.16 nakayama popl %ecx 187 1.16 nakayama leal OPENSSL_ia32cap_P-.L011PIC_me_up(%ecx),%ecx 188 1.14 christos btl $4,(%ecx) 189 1.16 nakayama jnc .L012nohalt 190 1.14 christos .long 2421723150 191 1.14 christos andl $3,%eax 192 1.16 nakayama jnz .L012nohalt 193 1.14 christos pushfl 194 1.14 christos popl %eax 195 1.14 christos btl $9,%eax 196 1.16 nakayama jnc .L012nohalt 197 1.14 christos .byte 0x0f,0x31 198 1.14 christos pushl %edx 199 1.14 christos pushl %eax 200 1.14 christos hlt 201 1.14 christos .byte 0x0f,0x31 202 1.14 christos subl (%esp),%eax 203 1.14 christos sbbl 4(%esp),%edx 204 1.14 christos addl $8,%esp 205 1.14 christos ret 206 1.16 nakayama .L012nohalt: 207 1.14 christos xorl %eax,%eax 208 1.14 christos xorl %edx,%edx 209 1.14 christos ret 210 1.14 christos .size OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin 211 1.14 christos .globl OPENSSL_far_spin 212 1.14 christos .type OPENSSL_far_spin,@function 213 1.14 christos .align 16 214 1.14 christos OPENSSL_far_spin: 215 1.14 christos .L_OPENSSL_far_spin_begin: 216 1.18 christos #ifdef __CET__ 217 1.18 christos 218 1.18 christos .byte 243,15,30,251 219 1.18 christos #endif 220 1.18 christos 221 1.14 christos pushfl 222 1.14 christos popl %eax 223 1.14 christos btl $9,%eax 224 1.16 nakayama jnc .L013nospin 225 1.14 christos movl 4(%esp),%eax 226 1.14 christos movl 8(%esp),%ecx 227 1.14 christos .long 2430111262 228 1.14 christos xorl %eax,%eax 229 1.14 christos movl (%ecx),%edx 230 1.16 nakayama jmp .L014spin 231 1.14 christos .align 16 232 1.16 nakayama .L014spin: 233 1.14 christos incl %eax 234 1.14 christos cmpl (%ecx),%edx 235 1.16 nakayama je .L014spin 236 1.14 christos .long 529567888 237 1.14 christos ret 238 1.16 nakayama .L013nospin: 239 1.14 christos xorl %eax,%eax 240 1.14 christos xorl %edx,%edx 241 1.14 christos ret 242 1.14 christos .size OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin 243 1.14 christos .globl OPENSSL_wipe_cpu 244 1.14 christos .type OPENSSL_wipe_cpu,@function 245 1.14 christos .align 16 246 1.14 christos OPENSSL_wipe_cpu: 247 1.14 christos .L_OPENSSL_wipe_cpu_begin: 248 1.18 christos #ifdef __CET__ 249 1.18 christos 250 1.18 christos .byte 243,15,30,251 251 1.18 christos #endif 252 1.18 christos 253 1.14 christos xorl %eax,%eax 254 1.14 christos xorl %edx,%edx 255 1.16 nakayama call .L015PIC_me_up 256 1.16 nakayama .L015PIC_me_up: 257 1.16 nakayama popl %ecx 258 1.16 nakayama leal OPENSSL_ia32cap_P-.L015PIC_me_up(%ecx),%ecx 259 1.14 christos movl (%ecx),%ecx 260 1.14 christos btl $1,(%ecx) 261 1.16 nakayama jnc .L016no_x87 262 1.16 nakayama andl $83886080,%ecx 263 1.16 nakayama cmpl $83886080,%ecx 264 1.16 nakayama jne .L017no_sse2 265 1.16 nakayama pxor %xmm0,%xmm0 266 1.16 nakayama pxor %xmm1,%xmm1 267 1.16 nakayama pxor %xmm2,%xmm2 268 1.16 nakayama pxor %xmm3,%xmm3 269 1.16 nakayama pxor %xmm4,%xmm4 270 1.16 nakayama pxor %xmm5,%xmm5 271 1.16 nakayama pxor %xmm6,%xmm6 272 1.16 nakayama pxor %xmm7,%xmm7 273 1.16 nakayama .L017no_sse2: 274 1.14 christos .long 4007259865,4007259865,4007259865,4007259865,2430851995 275 1.16 nakayama .L016no_x87: 276 1.14 christos leal 4(%esp),%eax 277 1.14 christos ret 278 1.14 christos .size OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin 279 1.14 christos .globl OPENSSL_atomic_add 280 1.14 christos .type OPENSSL_atomic_add,@function 281 1.14 christos .align 16 282 1.14 christos OPENSSL_atomic_add: 283 1.14 christos .L_OPENSSL_atomic_add_begin: 284 1.18 christos #ifdef __CET__ 285 1.18 christos 286 1.18 christos .byte 243,15,30,251 287 1.18 christos #endif 288 1.18 christos 289 1.14 christos movl 4(%esp),%edx 290 1.14 christos movl 8(%esp),%ecx 291 1.14 christos pushl %ebx 292 1.14 christos nop 293 1.14 christos movl (%edx),%eax 294 1.16 nakayama .L018spin: 295 1.14 christos leal (%eax,%ecx,1),%ebx 296 1.14 christos nop 297 1.14 christos .long 447811568 298 1.16 nakayama jne .L018spin 299 1.14 christos movl %ebx,%eax 300 1.14 christos popl %ebx 301 1.14 christos ret 302 1.14 christos .size OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin 303 1.14 christos .globl OPENSSL_cleanse 304 1.14 christos .type OPENSSL_cleanse,@function 305 1.14 christos .align 16 306 1.14 christos OPENSSL_cleanse: 307 1.14 christos .L_OPENSSL_cleanse_begin: 308 1.18 christos #ifdef __CET__ 309 1.18 christos 310 1.18 christos .byte 243,15,30,251 311 1.18 christos #endif 312 1.18 christos 313 1.14 christos movl 4(%esp),%edx 314 1.14 christos movl 8(%esp),%ecx 315 1.14 christos xorl %eax,%eax 316 1.14 christos cmpl $7,%ecx 317 1.16 nakayama jae .L019lot 318 1.14 christos cmpl $0,%ecx 319 1.16 nakayama je .L020ret 320 1.16 nakayama .L021little: 321 1.14 christos movb %al,(%edx) 322 1.14 christos subl $1,%ecx 323 1.14 christos leal 1(%edx),%edx 324 1.16 nakayama jnz .L021little 325 1.16 nakayama .L020ret: 326 1.14 christos ret 327 1.14 christos .align 16 328 1.16 nakayama .L019lot: 329 1.14 christos testl $3,%edx 330 1.16 nakayama jz .L022aligned 331 1.14 christos movb %al,(%edx) 332 1.14 christos leal -1(%ecx),%ecx 333 1.14 christos leal 1(%edx),%edx 334 1.16 nakayama jmp .L019lot 335 1.16 nakayama .L022aligned: 336 1.14 christos movl %eax,(%edx) 337 1.14 christos leal -4(%ecx),%ecx 338 1.14 christos testl $-4,%ecx 339 1.14 christos leal 4(%edx),%edx 340 1.16 nakayama jnz .L022aligned 341 1.14 christos cmpl $0,%ecx 342 1.16 nakayama jne .L021little 343 1.14 christos ret 344 1.14 christos .size OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin 345 1.15 christos .globl CRYPTO_memcmp 346 1.15 christos .type CRYPTO_memcmp,@function 347 1.15 christos .align 16 348 1.15 christos CRYPTO_memcmp: 349 1.15 christos .L_CRYPTO_memcmp_begin: 350 1.18 christos #ifdef __CET__ 351 1.18 christos 352 1.18 christos .byte 243,15,30,251 353 1.18 christos #endif 354 1.18 christos 355 1.15 christos pushl %esi 356 1.15 christos pushl %edi 357 1.15 christos movl 12(%esp),%esi 358 1.15 christos movl 16(%esp),%edi 359 1.15 christos movl 20(%esp),%ecx 360 1.15 christos xorl %eax,%eax 361 1.15 christos xorl %edx,%edx 362 1.15 christos cmpl $0,%ecx 363 1.16 nakayama je .L023no_data 364 1.16 nakayama .L024loop: 365 1.15 christos movb (%esi),%dl 366 1.15 christos leal 1(%esi),%esi 367 1.15 christos xorb (%edi),%dl 368 1.15 christos leal 1(%edi),%edi 369 1.15 christos orb %dl,%al 370 1.15 christos decl %ecx 371 1.16 nakayama jnz .L024loop 372 1.15 christos negl %eax 373 1.15 christos shrl $31,%eax 374 1.16 nakayama .L023no_data: 375 1.15 christos popl %edi 376 1.15 christos popl %esi 377 1.15 christos ret 378 1.15 christos .size CRYPTO_memcmp,.-.L_CRYPTO_memcmp_begin 379 1.15 christos .globl OPENSSL_instrument_bus 380 1.15 christos .type OPENSSL_instrument_bus,@function 381 1.15 christos .align 16 382 1.15 christos OPENSSL_instrument_bus: 383 1.15 christos .L_OPENSSL_instrument_bus_begin: 384 1.18 christos #ifdef __CET__ 385 1.18 christos 386 1.18 christos .byte 243,15,30,251 387 1.18 christos #endif 388 1.18 christos 389 1.15 christos pushl %ebp 390 1.15 christos pushl %ebx 391 1.15 christos pushl %esi 392 1.15 christos pushl %edi 393 1.15 christos movl $0,%eax 394 1.16 nakayama call .L025PIC_me_up 395 1.16 nakayama .L025PIC_me_up: 396 1.16 nakayama popl %edx 397 1.16 nakayama leal OPENSSL_ia32cap_P-.L025PIC_me_up(%edx),%edx 398 1.16 nakayama btl $4,(%edx) 399 1.16 nakayama jnc .L026nogo 400 1.16 nakayama btl $19,(%edx) 401 1.16 nakayama jnc .L026nogo 402 1.16 nakayama movl 20(%esp),%edi 403 1.16 nakayama movl 24(%esp),%ecx 404 1.16 nakayama .byte 0x0f,0x31 405 1.16 nakayama movl %eax,%esi 406 1.16 nakayama movl $0,%ebx 407 1.16 nakayama clflush (%edi) 408 1.16 nakayama .byte 240 409 1.16 nakayama addl %ebx,(%edi) 410 1.16 nakayama jmp .L027loop 411 1.16 nakayama .align 16 412 1.16 nakayama .L027loop: 413 1.16 nakayama .byte 0x0f,0x31 414 1.16 nakayama movl %eax,%edx 415 1.16 nakayama subl %esi,%eax 416 1.16 nakayama movl %edx,%esi 417 1.16 nakayama movl %eax,%ebx 418 1.16 nakayama clflush (%edi) 419 1.16 nakayama .byte 240 420 1.16 nakayama addl %eax,(%edi) 421 1.16 nakayama leal 4(%edi),%edi 422 1.16 nakayama subl $1,%ecx 423 1.16 nakayama jnz .L027loop 424 1.16 nakayama movl 24(%esp),%eax 425 1.16 nakayama .L026nogo: 426 1.15 christos popl %edi 427 1.15 christos popl %esi 428 1.15 christos popl %ebx 429 1.15 christos popl %ebp 430 1.15 christos ret 431 1.15 christos .size OPENSSL_instrument_bus,.-.L_OPENSSL_instrument_bus_begin 432 1.15 christos .globl OPENSSL_instrument_bus2 433 1.15 christos .type OPENSSL_instrument_bus2,@function 434 1.15 christos .align 16 435 1.15 christos OPENSSL_instrument_bus2: 436 1.15 christos .L_OPENSSL_instrument_bus2_begin: 437 1.18 christos #ifdef __CET__ 438 1.18 christos 439 1.18 christos .byte 243,15,30,251 440 1.18 christos #endif 441 1.18 christos 442 1.15 christos pushl %ebp 443 1.15 christos pushl %ebx 444 1.15 christos pushl %esi 445 1.15 christos pushl %edi 446 1.15 christos movl $0,%eax 447 1.16 nakayama call .L028PIC_me_up 448 1.16 nakayama .L028PIC_me_up: 449 1.16 nakayama popl %edx 450 1.16 nakayama leal OPENSSL_ia32cap_P-.L028PIC_me_up(%edx),%edx 451 1.16 nakayama btl $4,(%edx) 452 1.16 nakayama jnc .L029nogo 453 1.16 nakayama btl $19,(%edx) 454 1.16 nakayama jnc .L029nogo 455 1.16 nakayama movl 20(%esp),%edi 456 1.16 nakayama movl 24(%esp),%ecx 457 1.16 nakayama movl 28(%esp),%ebp 458 1.16 nakayama .byte 0x0f,0x31 459 1.16 nakayama movl %eax,%esi 460 1.16 nakayama movl $0,%ebx 461 1.16 nakayama clflush (%edi) 462 1.16 nakayama .byte 240 463 1.16 nakayama addl %ebx,(%edi) 464 1.16 nakayama .byte 0x0f,0x31 465 1.16 nakayama movl %eax,%edx 466 1.16 nakayama subl %esi,%eax 467 1.16 nakayama movl %edx,%esi 468 1.16 nakayama movl %eax,%ebx 469 1.16 nakayama jmp .L030loop2 470 1.16 nakayama .align 16 471 1.16 nakayama .L030loop2: 472 1.16 nakayama clflush (%edi) 473 1.16 nakayama .byte 240 474 1.16 nakayama addl %eax,(%edi) 475 1.16 nakayama subl $1,%ebp 476 1.16 nakayama jz .L031done2 477 1.16 nakayama .byte 0x0f,0x31 478 1.16 nakayama movl %eax,%edx 479 1.16 nakayama subl %esi,%eax 480 1.16 nakayama movl %edx,%esi 481 1.16 nakayama cmpl %ebx,%eax 482 1.16 nakayama movl %eax,%ebx 483 1.16 nakayama movl $0,%edx 484 1.16 nakayama setne %dl 485 1.16 nakayama subl %edx,%ecx 486 1.16 nakayama leal (%edi,%edx,4),%edi 487 1.16 nakayama jnz .L030loop2 488 1.16 nakayama .L031done2: 489 1.16 nakayama movl 24(%esp),%eax 490 1.16 nakayama subl %ecx,%eax 491 1.16 nakayama .L029nogo: 492 1.15 christos popl %edi 493 1.15 christos popl %esi 494 1.15 christos popl %ebx 495 1.15 christos popl %ebp 496 1.15 christos ret 497 1.15 christos .size OPENSSL_instrument_bus2,.-.L_OPENSSL_instrument_bus2_begin 498 1.15 christos .globl OPENSSL_ia32_rdrand_bytes 499 1.15 christos .type OPENSSL_ia32_rdrand_bytes,@function 500 1.15 christos .align 16 501 1.15 christos OPENSSL_ia32_rdrand_bytes: 502 1.15 christos .L_OPENSSL_ia32_rdrand_bytes_begin: 503 1.18 christos #ifdef __CET__ 504 1.18 christos 505 1.18 christos .byte 243,15,30,251 506 1.18 christos #endif 507 1.18 christos 508 1.15 christos pushl %edi 509 1.15 christos pushl %ebx 510 1.15 christos xorl %eax,%eax 511 1.15 christos movl 12(%esp),%edi 512 1.15 christos movl 16(%esp),%ebx 513 1.15 christos cmpl $0,%ebx 514 1.17 christos je .L032done 515 1.15 christos movl $8,%ecx 516 1.17 christos .L033loop: 517 1.15 christos .byte 15,199,242 518 1.17 christos jc .L034break 519 1.17 christos loop .L033loop 520 1.17 christos jmp .L032done 521 1.15 christos .align 16 522 1.17 christos .L034break: 523 1.15 christos cmpl $4,%ebx 524 1.17 christos jb .L035tail 525 1.15 christos movl %edx,(%edi) 526 1.15 christos leal 4(%edi),%edi 527 1.15 christos addl $4,%eax 528 1.15 christos subl $4,%ebx 529 1.17 christos jz .L032done 530 1.15 christos movl $8,%ecx 531 1.17 christos jmp .L033loop 532 1.15 christos .align 16 533 1.17 christos .L035tail: 534 1.15 christos movb %dl,(%edi) 535 1.15 christos leal 1(%edi),%edi 536 1.15 christos incl %eax 537 1.15 christos shrl $8,%edx 538 1.15 christos decl %ebx 539 1.17 christos jnz .L035tail 540 1.17 christos .L032done: 541 1.17 christos xorl %edx,%edx 542 1.15 christos popl %ebx 543 1.15 christos popl %edi 544 1.15 christos ret 545 1.15 christos .size OPENSSL_ia32_rdrand_bytes,.-.L_OPENSSL_ia32_rdrand_bytes_begin 546 1.15 christos .globl OPENSSL_ia32_rdseed_bytes 547 1.15 christos .type OPENSSL_ia32_rdseed_bytes,@function 548 1.15 christos .align 16 549 1.15 christos OPENSSL_ia32_rdseed_bytes: 550 1.15 christos .L_OPENSSL_ia32_rdseed_bytes_begin: 551 1.18 christos #ifdef __CET__ 552 1.18 christos 553 1.18 christos .byte 243,15,30,251 554 1.18 christos #endif 555 1.18 christos 556 1.15 christos pushl %edi 557 1.15 christos pushl %ebx 558 1.15 christos xorl %eax,%eax 559 1.15 christos movl 12(%esp),%edi 560 1.15 christos movl 16(%esp),%ebx 561 1.15 christos cmpl $0,%ebx 562 1.17 christos je .L036done 563 1.15 christos movl $8,%ecx 564 1.17 christos .L037loop: 565 1.15 christos .byte 15,199,250 566 1.17 christos jc .L038break 567 1.17 christos loop .L037loop 568 1.17 christos jmp .L036done 569 1.15 christos .align 16 570 1.17 christos .L038break: 571 1.15 christos cmpl $4,%ebx 572 1.17 christos jb .L039tail 573 1.15 christos movl %edx,(%edi) 574 1.15 christos leal 4(%edi),%edi 575 1.15 christos addl $4,%eax 576 1.15 christos subl $4,%ebx 577 1.17 christos jz .L036done 578 1.15 christos movl $8,%ecx 579 1.17 christos jmp .L037loop 580 1.15 christos .align 16 581 1.17 christos .L039tail: 582 1.15 christos movb %dl,(%edi) 583 1.15 christos leal 1(%edi),%edi 584 1.15 christos incl %eax 585 1.15 christos shrl $8,%edx 586 1.15 christos decl %ebx 587 1.17 christos jnz .L039tail 588 1.17 christos .L036done: 589 1.17 christos xorl %edx,%edx 590 1.15 christos popl %ebx 591 1.15 christos popl %edi 592 1.15 christos ret 593 1.15 christos .size OPENSSL_ia32_rdseed_bytes,.-.L_OPENSSL_ia32_rdseed_bytes_begin 594 1.14 christos .hidden OPENSSL_cpuid_setup 595 1.14 christos .hidden OPENSSL_ia32cap_P 596 1.14 christos .comm OPENSSL_ia32cap_P,16,4 597 1.14 christos .section .init 598 1.14 christos PIC_PROLOGUE 599 1.14 christos call PIC_PLT(OPENSSL_cpuid_setup) 600 1.14 christos PIC_EPILOGUE 601 1.18 christos 602 1.18 christos .section ".note.gnu.property", "a" 603 1.18 christos .p2align 2 604 1.18 christos .long 1f - 0f 605 1.18 christos .long 4f - 1f 606 1.18 christos .long 5 607 1.18 christos 0: 608 1.18 christos .asciz "GNU" 609 1.18 christos 1: 610 1.18 christos .p2align 2 611 1.18 christos .long 0xc0000002 612 1.18 christos .long 3f - 2f 613 1.18 christos 2: 614 1.18 christos .long 3 615 1.18 christos 3: 616 1.18 christos .p2align 2 617 1.18 christos 4: 618