1bc3d5698SJohn Baldwin/* Do not modify. This file is auto-generated from x86cpuid.pl. */ 2bc3d5698SJohn Baldwin#ifdef PIC 3bc3d5698SJohn Baldwin.text 4bc3d5698SJohn Baldwin.globl OPENSSL_ia32_cpuid 5bc3d5698SJohn Baldwin.type OPENSSL_ia32_cpuid,@function 6bc3d5698SJohn Baldwin.align 16 7bc3d5698SJohn BaldwinOPENSSL_ia32_cpuid: 8bc3d5698SJohn Baldwin.L_OPENSSL_ia32_cpuid_begin: 9*c0855eaaSJohn Baldwin #ifdef __CET__ 10*c0855eaaSJohn Baldwin 11*c0855eaaSJohn Baldwin.byte 243,15,30,251 12*c0855eaaSJohn Baldwin #endif 13*c0855eaaSJohn Baldwin 14bc3d5698SJohn Baldwin pushl %ebp 15bc3d5698SJohn Baldwin pushl %ebx 16bc3d5698SJohn Baldwin pushl %esi 17bc3d5698SJohn Baldwin pushl %edi 18bc3d5698SJohn Baldwin xorl %edx,%edx 19bc3d5698SJohn Baldwin pushfl 20bc3d5698SJohn Baldwin popl %eax 21bc3d5698SJohn Baldwin movl %eax,%ecx 22bc3d5698SJohn Baldwin xorl $2097152,%eax 23bc3d5698SJohn Baldwin pushl %eax 24bc3d5698SJohn Baldwin popfl 25bc3d5698SJohn Baldwin pushfl 26bc3d5698SJohn Baldwin popl %eax 27bc3d5698SJohn Baldwin xorl %eax,%ecx 28bc3d5698SJohn Baldwin xorl %eax,%eax 29bc3d5698SJohn Baldwin movl 20(%esp),%esi 30bc3d5698SJohn Baldwin movl %eax,8(%esi) 31bc3d5698SJohn Baldwin btl $21,%ecx 32bc3d5698SJohn Baldwin jnc .L000nocpuid 33bc3d5698SJohn Baldwin .byte 0x0f,0xa2 34bc3d5698SJohn Baldwin movl %eax,%edi 35bc3d5698SJohn Baldwin xorl %eax,%eax 36bc3d5698SJohn Baldwin cmpl $1970169159,%ebx 37bc3d5698SJohn Baldwin setne %al 38bc3d5698SJohn Baldwin movl %eax,%ebp 39bc3d5698SJohn Baldwin cmpl $1231384169,%edx 40bc3d5698SJohn Baldwin setne %al 41bc3d5698SJohn Baldwin orl %eax,%ebp 42bc3d5698SJohn Baldwin cmpl $1818588270,%ecx 43bc3d5698SJohn Baldwin setne %al 44bc3d5698SJohn Baldwin orl %eax,%ebp 45bc3d5698SJohn Baldwin jz .L001intel 46bc3d5698SJohn Baldwin cmpl $1752462657,%ebx 47bc3d5698SJohn Baldwin setne %al 48bc3d5698SJohn Baldwin movl %eax,%esi 49bc3d5698SJohn Baldwin cmpl $1769238117,%edx 50bc3d5698SJohn Baldwin setne %al 51bc3d5698SJohn Baldwin orl %eax,%esi 52bc3d5698SJohn Baldwin cmpl $1145913699,%ecx 53bc3d5698SJohn Baldwin setne %al 54bc3d5698SJohn Baldwin orl %eax,%esi 55bc3d5698SJohn Baldwin jnz .L001intel 56bc3d5698SJohn Baldwin movl $2147483648,%eax 57bc3d5698SJohn Baldwin .byte 0x0f,0xa2 58bc3d5698SJohn Baldwin cmpl $2147483649,%eax 59bc3d5698SJohn Baldwin jb .L001intel 60bc3d5698SJohn Baldwin movl %eax,%esi 61bc3d5698SJohn Baldwin movl $2147483649,%eax 62bc3d5698SJohn Baldwin .byte 0x0f,0xa2 63bc3d5698SJohn Baldwin orl %ecx,%ebp 64bc3d5698SJohn Baldwin andl $2049,%ebp 65bc3d5698SJohn Baldwin cmpl $2147483656,%esi 66bc3d5698SJohn Baldwin jb .L001intel 67bc3d5698SJohn Baldwin movl $2147483656,%eax 68bc3d5698SJohn Baldwin .byte 0x0f,0xa2 69bc3d5698SJohn Baldwin movzbl %cl,%esi 70bc3d5698SJohn Baldwin incl %esi 71bc3d5698SJohn Baldwin movl $1,%eax 72bc3d5698SJohn Baldwin xorl %ecx,%ecx 73bc3d5698SJohn Baldwin .byte 0x0f,0xa2 74bc3d5698SJohn Baldwin btl $28,%edx 75bc3d5698SJohn Baldwin jnc .L002generic 76bc3d5698SJohn Baldwin shrl $16,%ebx 77bc3d5698SJohn Baldwin andl $255,%ebx 78bc3d5698SJohn Baldwin cmpl %esi,%ebx 79bc3d5698SJohn Baldwin ja .L002generic 80bc3d5698SJohn Baldwin andl $4026531839,%edx 81bc3d5698SJohn Baldwin jmp .L002generic 82bc3d5698SJohn Baldwin.L001intel: 83bc3d5698SJohn Baldwin cmpl $4,%edi 84bc3d5698SJohn Baldwin movl $-1,%esi 85bc3d5698SJohn Baldwin jb .L003nocacheinfo 86bc3d5698SJohn Baldwin movl $4,%eax 87bc3d5698SJohn Baldwin movl $0,%ecx 88bc3d5698SJohn Baldwin .byte 0x0f,0xa2 89bc3d5698SJohn Baldwin movl %eax,%esi 90bc3d5698SJohn Baldwin shrl $14,%esi 91bc3d5698SJohn Baldwin andl $4095,%esi 92bc3d5698SJohn Baldwin.L003nocacheinfo: 93bc3d5698SJohn Baldwin movl $1,%eax 94bc3d5698SJohn Baldwin xorl %ecx,%ecx 95bc3d5698SJohn Baldwin .byte 0x0f,0xa2 96bc3d5698SJohn Baldwin andl $3220176895,%edx 97bc3d5698SJohn Baldwin cmpl $0,%ebp 98bc3d5698SJohn Baldwin jne .L004notintel 99bc3d5698SJohn Baldwin orl $1073741824,%edx 100bc3d5698SJohn Baldwin andb $15,%ah 101bc3d5698SJohn Baldwin cmpb $15,%ah 102bc3d5698SJohn Baldwin jne .L004notintel 103bc3d5698SJohn Baldwin orl $1048576,%edx 104bc3d5698SJohn Baldwin.L004notintel: 105bc3d5698SJohn Baldwin btl $28,%edx 106bc3d5698SJohn Baldwin jnc .L002generic 107bc3d5698SJohn Baldwin andl $4026531839,%edx 108bc3d5698SJohn Baldwin cmpl $0,%esi 109bc3d5698SJohn Baldwin je .L002generic 110bc3d5698SJohn Baldwin orl $268435456,%edx 111bc3d5698SJohn Baldwin shrl $16,%ebx 112bc3d5698SJohn Baldwin cmpb $1,%bl 113bc3d5698SJohn Baldwin ja .L002generic 114bc3d5698SJohn Baldwin andl $4026531839,%edx 115bc3d5698SJohn Baldwin.L002generic: 116bc3d5698SJohn Baldwin andl $2048,%ebp 117bc3d5698SJohn Baldwin andl $4294965247,%ecx 118bc3d5698SJohn Baldwin movl %edx,%esi 119bc3d5698SJohn Baldwin orl %ecx,%ebp 120bc3d5698SJohn Baldwin cmpl $7,%edi 121bc3d5698SJohn Baldwin movl 20(%esp),%edi 122bc3d5698SJohn Baldwin jb .L005no_extended_info 123bc3d5698SJohn Baldwin movl $7,%eax 124bc3d5698SJohn Baldwin xorl %ecx,%ecx 125bc3d5698SJohn Baldwin .byte 0x0f,0xa2 126bc3d5698SJohn Baldwin movl %ebx,8(%edi) 127bc3d5698SJohn Baldwin.L005no_extended_info: 128bc3d5698SJohn Baldwin btl $27,%ebp 129bc3d5698SJohn Baldwin jnc .L006clear_avx 130bc3d5698SJohn Baldwin xorl %ecx,%ecx 131bc3d5698SJohn Baldwin.byte 15,1,208 132bc3d5698SJohn Baldwin andl $6,%eax 133bc3d5698SJohn Baldwin cmpl $6,%eax 134bc3d5698SJohn Baldwin je .L007done 135bc3d5698SJohn Baldwin cmpl $2,%eax 136bc3d5698SJohn Baldwin je .L006clear_avx 137bc3d5698SJohn Baldwin.L008clear_xmm: 138bc3d5698SJohn Baldwin andl $4261412861,%ebp 139bc3d5698SJohn Baldwin andl $4278190079,%esi 140bc3d5698SJohn Baldwin.L006clear_avx: 141bc3d5698SJohn Baldwin andl $4026525695,%ebp 142bc3d5698SJohn Baldwin andl $4294967263,8(%edi) 143bc3d5698SJohn Baldwin.L007done: 144bc3d5698SJohn Baldwin movl %esi,%eax 145bc3d5698SJohn Baldwin movl %ebp,%edx 146bc3d5698SJohn Baldwin.L000nocpuid: 147bc3d5698SJohn Baldwin popl %edi 148bc3d5698SJohn Baldwin popl %esi 149bc3d5698SJohn Baldwin popl %ebx 150bc3d5698SJohn Baldwin popl %ebp 151bc3d5698SJohn Baldwin ret 152bc3d5698SJohn Baldwin.size OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin 153bc3d5698SJohn Baldwin.globl OPENSSL_rdtsc 154bc3d5698SJohn Baldwin.type OPENSSL_rdtsc,@function 155bc3d5698SJohn Baldwin.align 16 156bc3d5698SJohn BaldwinOPENSSL_rdtsc: 157bc3d5698SJohn Baldwin.L_OPENSSL_rdtsc_begin: 158*c0855eaaSJohn Baldwin #ifdef __CET__ 159*c0855eaaSJohn Baldwin 160*c0855eaaSJohn Baldwin.byte 243,15,30,251 161*c0855eaaSJohn Baldwin #endif 162*c0855eaaSJohn Baldwin 163bc3d5698SJohn Baldwin xorl %eax,%eax 164bc3d5698SJohn Baldwin xorl %edx,%edx 165bc3d5698SJohn Baldwin call .L009PIC_me_up 166bc3d5698SJohn Baldwin.L009PIC_me_up: 167bc3d5698SJohn Baldwin popl %ecx 168bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P-.L009PIC_me_up(%ecx),%ecx 169bc3d5698SJohn Baldwin btl $4,(%ecx) 170bc3d5698SJohn Baldwin jnc .L010notsc 171bc3d5698SJohn Baldwin .byte 0x0f,0x31 172bc3d5698SJohn Baldwin.L010notsc: 173bc3d5698SJohn Baldwin ret 174bc3d5698SJohn Baldwin.size OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin 175bc3d5698SJohn Baldwin.globl OPENSSL_instrument_halt 176bc3d5698SJohn Baldwin.type OPENSSL_instrument_halt,@function 177bc3d5698SJohn Baldwin.align 16 178bc3d5698SJohn BaldwinOPENSSL_instrument_halt: 179bc3d5698SJohn Baldwin.L_OPENSSL_instrument_halt_begin: 180*c0855eaaSJohn Baldwin #ifdef __CET__ 181*c0855eaaSJohn Baldwin 182*c0855eaaSJohn Baldwin.byte 243,15,30,251 183*c0855eaaSJohn Baldwin #endif 184*c0855eaaSJohn Baldwin 185bc3d5698SJohn Baldwin call .L011PIC_me_up 186bc3d5698SJohn Baldwin.L011PIC_me_up: 187bc3d5698SJohn Baldwin popl %ecx 188bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P-.L011PIC_me_up(%ecx),%ecx 189bc3d5698SJohn Baldwin btl $4,(%ecx) 190bc3d5698SJohn Baldwin jnc .L012nohalt 191bc3d5698SJohn Baldwin.long 2421723150 192bc3d5698SJohn Baldwin andl $3,%eax 193bc3d5698SJohn Baldwin jnz .L012nohalt 194bc3d5698SJohn Baldwin pushfl 195bc3d5698SJohn Baldwin popl %eax 196bc3d5698SJohn Baldwin btl $9,%eax 197bc3d5698SJohn Baldwin jnc .L012nohalt 198bc3d5698SJohn Baldwin .byte 0x0f,0x31 199bc3d5698SJohn Baldwin pushl %edx 200bc3d5698SJohn Baldwin pushl %eax 201bc3d5698SJohn Baldwin hlt 202bc3d5698SJohn Baldwin .byte 0x0f,0x31 203bc3d5698SJohn Baldwin subl (%esp),%eax 204bc3d5698SJohn Baldwin sbbl 4(%esp),%edx 205bc3d5698SJohn Baldwin addl $8,%esp 206bc3d5698SJohn Baldwin ret 207bc3d5698SJohn Baldwin.L012nohalt: 208bc3d5698SJohn Baldwin xorl %eax,%eax 209bc3d5698SJohn Baldwin xorl %edx,%edx 210bc3d5698SJohn Baldwin ret 211bc3d5698SJohn Baldwin.size OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin 212bc3d5698SJohn Baldwin.globl OPENSSL_far_spin 213bc3d5698SJohn Baldwin.type OPENSSL_far_spin,@function 214bc3d5698SJohn Baldwin.align 16 215bc3d5698SJohn BaldwinOPENSSL_far_spin: 216bc3d5698SJohn Baldwin.L_OPENSSL_far_spin_begin: 217*c0855eaaSJohn Baldwin #ifdef __CET__ 218*c0855eaaSJohn Baldwin 219*c0855eaaSJohn Baldwin.byte 243,15,30,251 220*c0855eaaSJohn Baldwin #endif 221*c0855eaaSJohn Baldwin 222bc3d5698SJohn Baldwin pushfl 223bc3d5698SJohn Baldwin popl %eax 224bc3d5698SJohn Baldwin btl $9,%eax 225bc3d5698SJohn Baldwin jnc .L013nospin 226bc3d5698SJohn Baldwin movl 4(%esp),%eax 227bc3d5698SJohn Baldwin movl 8(%esp),%ecx 228bc3d5698SJohn Baldwin.long 2430111262 229bc3d5698SJohn Baldwin xorl %eax,%eax 230bc3d5698SJohn Baldwin movl (%ecx),%edx 231bc3d5698SJohn Baldwin jmp .L014spin 232bc3d5698SJohn Baldwin.align 16 233bc3d5698SJohn Baldwin.L014spin: 234bc3d5698SJohn Baldwin incl %eax 235bc3d5698SJohn Baldwin cmpl (%ecx),%edx 236bc3d5698SJohn Baldwin je .L014spin 237bc3d5698SJohn Baldwin.long 529567888 238bc3d5698SJohn Baldwin ret 239bc3d5698SJohn Baldwin.L013nospin: 240bc3d5698SJohn Baldwin xorl %eax,%eax 241bc3d5698SJohn Baldwin xorl %edx,%edx 242bc3d5698SJohn Baldwin ret 243bc3d5698SJohn Baldwin.size OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin 244bc3d5698SJohn Baldwin.globl OPENSSL_wipe_cpu 245bc3d5698SJohn Baldwin.type OPENSSL_wipe_cpu,@function 246bc3d5698SJohn Baldwin.align 16 247bc3d5698SJohn BaldwinOPENSSL_wipe_cpu: 248bc3d5698SJohn Baldwin.L_OPENSSL_wipe_cpu_begin: 249*c0855eaaSJohn Baldwin #ifdef __CET__ 250*c0855eaaSJohn Baldwin 251*c0855eaaSJohn Baldwin.byte 243,15,30,251 252*c0855eaaSJohn Baldwin #endif 253*c0855eaaSJohn Baldwin 254bc3d5698SJohn Baldwin xorl %eax,%eax 255bc3d5698SJohn Baldwin xorl %edx,%edx 256bc3d5698SJohn Baldwin call .L015PIC_me_up 257bc3d5698SJohn Baldwin.L015PIC_me_up: 258bc3d5698SJohn Baldwin popl %ecx 259bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P-.L015PIC_me_up(%ecx),%ecx 260bc3d5698SJohn Baldwin movl (%ecx),%ecx 261bc3d5698SJohn Baldwin btl $1,(%ecx) 262bc3d5698SJohn Baldwin jnc .L016no_x87 263bc3d5698SJohn Baldwin andl $83886080,%ecx 264bc3d5698SJohn Baldwin cmpl $83886080,%ecx 265bc3d5698SJohn Baldwin jne .L017no_sse2 266bc3d5698SJohn Baldwin pxor %xmm0,%xmm0 267bc3d5698SJohn Baldwin pxor %xmm1,%xmm1 268bc3d5698SJohn Baldwin pxor %xmm2,%xmm2 269bc3d5698SJohn Baldwin pxor %xmm3,%xmm3 270bc3d5698SJohn Baldwin pxor %xmm4,%xmm4 271bc3d5698SJohn Baldwin pxor %xmm5,%xmm5 272bc3d5698SJohn Baldwin pxor %xmm6,%xmm6 273bc3d5698SJohn Baldwin pxor %xmm7,%xmm7 274bc3d5698SJohn Baldwin.L017no_sse2: 275bc3d5698SJohn Baldwin.long 4007259865,4007259865,4007259865,4007259865,2430851995 276bc3d5698SJohn Baldwin.L016no_x87: 277bc3d5698SJohn Baldwin leal 4(%esp),%eax 278bc3d5698SJohn Baldwin ret 279bc3d5698SJohn Baldwin.size OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin 280bc3d5698SJohn Baldwin.globl OPENSSL_atomic_add 281bc3d5698SJohn Baldwin.type OPENSSL_atomic_add,@function 282bc3d5698SJohn Baldwin.align 16 283bc3d5698SJohn BaldwinOPENSSL_atomic_add: 284bc3d5698SJohn Baldwin.L_OPENSSL_atomic_add_begin: 285*c0855eaaSJohn Baldwin #ifdef __CET__ 286*c0855eaaSJohn Baldwin 287*c0855eaaSJohn Baldwin.byte 243,15,30,251 288*c0855eaaSJohn Baldwin #endif 289*c0855eaaSJohn Baldwin 290bc3d5698SJohn Baldwin movl 4(%esp),%edx 291bc3d5698SJohn Baldwin movl 8(%esp),%ecx 292bc3d5698SJohn Baldwin pushl %ebx 293bc3d5698SJohn Baldwin nop 294bc3d5698SJohn Baldwin movl (%edx),%eax 295bc3d5698SJohn Baldwin.L018spin: 296bc3d5698SJohn Baldwin leal (%eax,%ecx,1),%ebx 297bc3d5698SJohn Baldwin nop 298bc3d5698SJohn Baldwin.long 447811568 299bc3d5698SJohn Baldwin jne .L018spin 300bc3d5698SJohn Baldwin movl %ebx,%eax 301bc3d5698SJohn Baldwin popl %ebx 302bc3d5698SJohn Baldwin ret 303bc3d5698SJohn Baldwin.size OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin 304bc3d5698SJohn Baldwin.globl OPENSSL_cleanse 305bc3d5698SJohn Baldwin.type OPENSSL_cleanse,@function 306bc3d5698SJohn Baldwin.align 16 307bc3d5698SJohn BaldwinOPENSSL_cleanse: 308bc3d5698SJohn Baldwin.L_OPENSSL_cleanse_begin: 309*c0855eaaSJohn Baldwin #ifdef __CET__ 310*c0855eaaSJohn Baldwin 311*c0855eaaSJohn Baldwin.byte 243,15,30,251 312*c0855eaaSJohn Baldwin #endif 313*c0855eaaSJohn Baldwin 314bc3d5698SJohn Baldwin movl 4(%esp),%edx 315bc3d5698SJohn Baldwin movl 8(%esp),%ecx 316bc3d5698SJohn Baldwin xorl %eax,%eax 317bc3d5698SJohn Baldwin cmpl $7,%ecx 318bc3d5698SJohn Baldwin jae .L019lot 319bc3d5698SJohn Baldwin cmpl $0,%ecx 320bc3d5698SJohn Baldwin je .L020ret 321bc3d5698SJohn Baldwin.L021little: 322bc3d5698SJohn Baldwin movb %al,(%edx) 323bc3d5698SJohn Baldwin subl $1,%ecx 324bc3d5698SJohn Baldwin leal 1(%edx),%edx 325bc3d5698SJohn Baldwin jnz .L021little 326bc3d5698SJohn Baldwin.L020ret: 327bc3d5698SJohn Baldwin ret 328bc3d5698SJohn Baldwin.align 16 329bc3d5698SJohn Baldwin.L019lot: 330bc3d5698SJohn Baldwin testl $3,%edx 331bc3d5698SJohn Baldwin jz .L022aligned 332bc3d5698SJohn Baldwin movb %al,(%edx) 333bc3d5698SJohn Baldwin leal -1(%ecx),%ecx 334bc3d5698SJohn Baldwin leal 1(%edx),%edx 335bc3d5698SJohn Baldwin jmp .L019lot 336bc3d5698SJohn Baldwin.L022aligned: 337bc3d5698SJohn Baldwin movl %eax,(%edx) 338bc3d5698SJohn Baldwin leal -4(%ecx),%ecx 339bc3d5698SJohn Baldwin testl $-4,%ecx 340bc3d5698SJohn Baldwin leal 4(%edx),%edx 341bc3d5698SJohn Baldwin jnz .L022aligned 342bc3d5698SJohn Baldwin cmpl $0,%ecx 343bc3d5698SJohn Baldwin jne .L021little 344bc3d5698SJohn Baldwin ret 345bc3d5698SJohn Baldwin.size OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin 346bc3d5698SJohn Baldwin.globl CRYPTO_memcmp 347bc3d5698SJohn Baldwin.type CRYPTO_memcmp,@function 348bc3d5698SJohn Baldwin.align 16 349bc3d5698SJohn BaldwinCRYPTO_memcmp: 350bc3d5698SJohn Baldwin.L_CRYPTO_memcmp_begin: 351*c0855eaaSJohn Baldwin #ifdef __CET__ 352*c0855eaaSJohn Baldwin 353*c0855eaaSJohn Baldwin.byte 243,15,30,251 354*c0855eaaSJohn Baldwin #endif 355*c0855eaaSJohn Baldwin 356bc3d5698SJohn Baldwin pushl %esi 357bc3d5698SJohn Baldwin pushl %edi 358bc3d5698SJohn Baldwin movl 12(%esp),%esi 359bc3d5698SJohn Baldwin movl 16(%esp),%edi 360bc3d5698SJohn Baldwin movl 20(%esp),%ecx 361bc3d5698SJohn Baldwin xorl %eax,%eax 362bc3d5698SJohn Baldwin xorl %edx,%edx 363bc3d5698SJohn Baldwin cmpl $0,%ecx 364bc3d5698SJohn Baldwin je .L023no_data 365bc3d5698SJohn Baldwin.L024loop: 366bc3d5698SJohn Baldwin movb (%esi),%dl 367bc3d5698SJohn Baldwin leal 1(%esi),%esi 368bc3d5698SJohn Baldwin xorb (%edi),%dl 369bc3d5698SJohn Baldwin leal 1(%edi),%edi 370bc3d5698SJohn Baldwin orb %dl,%al 371bc3d5698SJohn Baldwin decl %ecx 372bc3d5698SJohn Baldwin jnz .L024loop 373bc3d5698SJohn Baldwin negl %eax 374bc3d5698SJohn Baldwin shrl $31,%eax 375bc3d5698SJohn Baldwin.L023no_data: 376bc3d5698SJohn Baldwin popl %edi 377bc3d5698SJohn Baldwin popl %esi 378bc3d5698SJohn Baldwin ret 379bc3d5698SJohn Baldwin.size CRYPTO_memcmp,.-.L_CRYPTO_memcmp_begin 380bc3d5698SJohn Baldwin.globl OPENSSL_instrument_bus 381bc3d5698SJohn Baldwin.type OPENSSL_instrument_bus,@function 382bc3d5698SJohn Baldwin.align 16 383bc3d5698SJohn BaldwinOPENSSL_instrument_bus: 384bc3d5698SJohn Baldwin.L_OPENSSL_instrument_bus_begin: 385*c0855eaaSJohn Baldwin #ifdef __CET__ 386*c0855eaaSJohn Baldwin 387*c0855eaaSJohn Baldwin.byte 243,15,30,251 388*c0855eaaSJohn Baldwin #endif 389*c0855eaaSJohn Baldwin 390bc3d5698SJohn Baldwin pushl %ebp 391bc3d5698SJohn Baldwin pushl %ebx 392bc3d5698SJohn Baldwin pushl %esi 393bc3d5698SJohn Baldwin pushl %edi 394bc3d5698SJohn Baldwin movl $0,%eax 395bc3d5698SJohn Baldwin call .L025PIC_me_up 396bc3d5698SJohn Baldwin.L025PIC_me_up: 397bc3d5698SJohn Baldwin popl %edx 398bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P-.L025PIC_me_up(%edx),%edx 399bc3d5698SJohn Baldwin btl $4,(%edx) 400bc3d5698SJohn Baldwin jnc .L026nogo 401bc3d5698SJohn Baldwin btl $19,(%edx) 402bc3d5698SJohn Baldwin jnc .L026nogo 403bc3d5698SJohn Baldwin movl 20(%esp),%edi 404bc3d5698SJohn Baldwin movl 24(%esp),%ecx 405bc3d5698SJohn Baldwin .byte 0x0f,0x31 406bc3d5698SJohn Baldwin movl %eax,%esi 407bc3d5698SJohn Baldwin movl $0,%ebx 408bc3d5698SJohn Baldwin clflush (%edi) 409bc3d5698SJohn Baldwin.byte 240 410bc3d5698SJohn Baldwin addl %ebx,(%edi) 411bc3d5698SJohn Baldwin jmp .L027loop 412bc3d5698SJohn Baldwin.align 16 413bc3d5698SJohn Baldwin.L027loop: 414bc3d5698SJohn Baldwin .byte 0x0f,0x31 415bc3d5698SJohn Baldwin movl %eax,%edx 416bc3d5698SJohn Baldwin subl %esi,%eax 417bc3d5698SJohn Baldwin movl %edx,%esi 418bc3d5698SJohn Baldwin movl %eax,%ebx 419bc3d5698SJohn Baldwin clflush (%edi) 420bc3d5698SJohn Baldwin.byte 240 421bc3d5698SJohn Baldwin addl %eax,(%edi) 422bc3d5698SJohn Baldwin leal 4(%edi),%edi 423bc3d5698SJohn Baldwin subl $1,%ecx 424bc3d5698SJohn Baldwin jnz .L027loop 425bc3d5698SJohn Baldwin movl 24(%esp),%eax 426bc3d5698SJohn Baldwin.L026nogo: 427bc3d5698SJohn Baldwin popl %edi 428bc3d5698SJohn Baldwin popl %esi 429bc3d5698SJohn Baldwin popl %ebx 430bc3d5698SJohn Baldwin popl %ebp 431bc3d5698SJohn Baldwin ret 432bc3d5698SJohn Baldwin.size OPENSSL_instrument_bus,.-.L_OPENSSL_instrument_bus_begin 433bc3d5698SJohn Baldwin.globl OPENSSL_instrument_bus2 434bc3d5698SJohn Baldwin.type OPENSSL_instrument_bus2,@function 435bc3d5698SJohn Baldwin.align 16 436bc3d5698SJohn BaldwinOPENSSL_instrument_bus2: 437bc3d5698SJohn Baldwin.L_OPENSSL_instrument_bus2_begin: 438*c0855eaaSJohn Baldwin #ifdef __CET__ 439*c0855eaaSJohn Baldwin 440*c0855eaaSJohn Baldwin.byte 243,15,30,251 441*c0855eaaSJohn Baldwin #endif 442*c0855eaaSJohn Baldwin 443bc3d5698SJohn Baldwin pushl %ebp 444bc3d5698SJohn Baldwin pushl %ebx 445bc3d5698SJohn Baldwin pushl %esi 446bc3d5698SJohn Baldwin pushl %edi 447bc3d5698SJohn Baldwin movl $0,%eax 448bc3d5698SJohn Baldwin call .L028PIC_me_up 449bc3d5698SJohn Baldwin.L028PIC_me_up: 450bc3d5698SJohn Baldwin popl %edx 451bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P-.L028PIC_me_up(%edx),%edx 452bc3d5698SJohn Baldwin btl $4,(%edx) 453bc3d5698SJohn Baldwin jnc .L029nogo 454bc3d5698SJohn Baldwin btl $19,(%edx) 455bc3d5698SJohn Baldwin jnc .L029nogo 456bc3d5698SJohn Baldwin movl 20(%esp),%edi 457bc3d5698SJohn Baldwin movl 24(%esp),%ecx 458bc3d5698SJohn Baldwin movl 28(%esp),%ebp 459bc3d5698SJohn Baldwin .byte 0x0f,0x31 460bc3d5698SJohn Baldwin movl %eax,%esi 461bc3d5698SJohn Baldwin movl $0,%ebx 462bc3d5698SJohn Baldwin clflush (%edi) 463bc3d5698SJohn Baldwin.byte 240 464bc3d5698SJohn Baldwin addl %ebx,(%edi) 465bc3d5698SJohn Baldwin .byte 0x0f,0x31 466bc3d5698SJohn Baldwin movl %eax,%edx 467bc3d5698SJohn Baldwin subl %esi,%eax 468bc3d5698SJohn Baldwin movl %edx,%esi 469bc3d5698SJohn Baldwin movl %eax,%ebx 470bc3d5698SJohn Baldwin jmp .L030loop2 471bc3d5698SJohn Baldwin.align 16 472bc3d5698SJohn Baldwin.L030loop2: 473bc3d5698SJohn Baldwin clflush (%edi) 474bc3d5698SJohn Baldwin.byte 240 475bc3d5698SJohn Baldwin addl %eax,(%edi) 476bc3d5698SJohn Baldwin subl $1,%ebp 477bc3d5698SJohn Baldwin jz .L031done2 478bc3d5698SJohn Baldwin .byte 0x0f,0x31 479bc3d5698SJohn Baldwin movl %eax,%edx 480bc3d5698SJohn Baldwin subl %esi,%eax 481bc3d5698SJohn Baldwin movl %edx,%esi 482bc3d5698SJohn Baldwin cmpl %ebx,%eax 483bc3d5698SJohn Baldwin movl %eax,%ebx 484bc3d5698SJohn Baldwin movl $0,%edx 485bc3d5698SJohn Baldwin setne %dl 486bc3d5698SJohn Baldwin subl %edx,%ecx 487bc3d5698SJohn Baldwin leal (%edi,%edx,4),%edi 488bc3d5698SJohn Baldwin jnz .L030loop2 489bc3d5698SJohn Baldwin.L031done2: 490bc3d5698SJohn Baldwin movl 24(%esp),%eax 491bc3d5698SJohn Baldwin subl %ecx,%eax 492bc3d5698SJohn Baldwin.L029nogo: 493bc3d5698SJohn Baldwin popl %edi 494bc3d5698SJohn Baldwin popl %esi 495bc3d5698SJohn Baldwin popl %ebx 496bc3d5698SJohn Baldwin popl %ebp 497bc3d5698SJohn Baldwin ret 498bc3d5698SJohn Baldwin.size OPENSSL_instrument_bus2,.-.L_OPENSSL_instrument_bus2_begin 499bc3d5698SJohn Baldwin.globl OPENSSL_ia32_rdrand_bytes 500bc3d5698SJohn Baldwin.type OPENSSL_ia32_rdrand_bytes,@function 501bc3d5698SJohn Baldwin.align 16 502bc3d5698SJohn BaldwinOPENSSL_ia32_rdrand_bytes: 503bc3d5698SJohn Baldwin.L_OPENSSL_ia32_rdrand_bytes_begin: 504*c0855eaaSJohn Baldwin #ifdef __CET__ 505*c0855eaaSJohn Baldwin 506*c0855eaaSJohn Baldwin.byte 243,15,30,251 507*c0855eaaSJohn Baldwin #endif 508*c0855eaaSJohn Baldwin 509bc3d5698SJohn Baldwin pushl %edi 510bc3d5698SJohn Baldwin pushl %ebx 511bc3d5698SJohn Baldwin xorl %eax,%eax 512bc3d5698SJohn Baldwin movl 12(%esp),%edi 513bc3d5698SJohn Baldwin movl 16(%esp),%ebx 514bc3d5698SJohn Baldwin cmpl $0,%ebx 515bc3d5698SJohn Baldwin je .L032done 516bc3d5698SJohn Baldwin movl $8,%ecx 517bc3d5698SJohn Baldwin.L033loop: 518bc3d5698SJohn Baldwin.byte 15,199,242 519bc3d5698SJohn Baldwin jc .L034break 520bc3d5698SJohn Baldwin loop .L033loop 521bc3d5698SJohn Baldwin jmp .L032done 522bc3d5698SJohn Baldwin.align 16 523bc3d5698SJohn Baldwin.L034break: 524bc3d5698SJohn Baldwin cmpl $4,%ebx 525bc3d5698SJohn Baldwin jb .L035tail 526bc3d5698SJohn Baldwin movl %edx,(%edi) 527bc3d5698SJohn Baldwin leal 4(%edi),%edi 528bc3d5698SJohn Baldwin addl $4,%eax 529bc3d5698SJohn Baldwin subl $4,%ebx 530bc3d5698SJohn Baldwin jz .L032done 531bc3d5698SJohn Baldwin movl $8,%ecx 532bc3d5698SJohn Baldwin jmp .L033loop 533bc3d5698SJohn Baldwin.align 16 534bc3d5698SJohn Baldwin.L035tail: 535bc3d5698SJohn Baldwin movb %dl,(%edi) 536bc3d5698SJohn Baldwin leal 1(%edi),%edi 537bc3d5698SJohn Baldwin incl %eax 538bc3d5698SJohn Baldwin shrl $8,%edx 539bc3d5698SJohn Baldwin decl %ebx 540bc3d5698SJohn Baldwin jnz .L035tail 541bc3d5698SJohn Baldwin.L032done: 542bc3d5698SJohn Baldwin xorl %edx,%edx 543bc3d5698SJohn Baldwin popl %ebx 544bc3d5698SJohn Baldwin popl %edi 545bc3d5698SJohn Baldwin ret 546bc3d5698SJohn Baldwin.size OPENSSL_ia32_rdrand_bytes,.-.L_OPENSSL_ia32_rdrand_bytes_begin 547bc3d5698SJohn Baldwin.globl OPENSSL_ia32_rdseed_bytes 548bc3d5698SJohn Baldwin.type OPENSSL_ia32_rdseed_bytes,@function 549bc3d5698SJohn Baldwin.align 16 550bc3d5698SJohn BaldwinOPENSSL_ia32_rdseed_bytes: 551bc3d5698SJohn Baldwin.L_OPENSSL_ia32_rdseed_bytes_begin: 552*c0855eaaSJohn Baldwin #ifdef __CET__ 553*c0855eaaSJohn Baldwin 554*c0855eaaSJohn Baldwin.byte 243,15,30,251 555*c0855eaaSJohn Baldwin #endif 556*c0855eaaSJohn Baldwin 557bc3d5698SJohn Baldwin pushl %edi 558bc3d5698SJohn Baldwin pushl %ebx 559bc3d5698SJohn Baldwin xorl %eax,%eax 560bc3d5698SJohn Baldwin movl 12(%esp),%edi 561bc3d5698SJohn Baldwin movl 16(%esp),%ebx 562bc3d5698SJohn Baldwin cmpl $0,%ebx 563bc3d5698SJohn Baldwin je .L036done 564bc3d5698SJohn Baldwin movl $8,%ecx 565bc3d5698SJohn Baldwin.L037loop: 566bc3d5698SJohn Baldwin.byte 15,199,250 567bc3d5698SJohn Baldwin jc .L038break 568bc3d5698SJohn Baldwin loop .L037loop 569bc3d5698SJohn Baldwin jmp .L036done 570bc3d5698SJohn Baldwin.align 16 571bc3d5698SJohn Baldwin.L038break: 572bc3d5698SJohn Baldwin cmpl $4,%ebx 573bc3d5698SJohn Baldwin jb .L039tail 574bc3d5698SJohn Baldwin movl %edx,(%edi) 575bc3d5698SJohn Baldwin leal 4(%edi),%edi 576bc3d5698SJohn Baldwin addl $4,%eax 577bc3d5698SJohn Baldwin subl $4,%ebx 578bc3d5698SJohn Baldwin jz .L036done 579bc3d5698SJohn Baldwin movl $8,%ecx 580bc3d5698SJohn Baldwin jmp .L037loop 581bc3d5698SJohn Baldwin.align 16 582bc3d5698SJohn Baldwin.L039tail: 583bc3d5698SJohn Baldwin movb %dl,(%edi) 584bc3d5698SJohn Baldwin leal 1(%edi),%edi 585bc3d5698SJohn Baldwin incl %eax 586bc3d5698SJohn Baldwin shrl $8,%edx 587bc3d5698SJohn Baldwin decl %ebx 588bc3d5698SJohn Baldwin jnz .L039tail 589bc3d5698SJohn Baldwin.L036done: 590bc3d5698SJohn Baldwin xorl %edx,%edx 591bc3d5698SJohn Baldwin popl %ebx 592bc3d5698SJohn Baldwin popl %edi 593bc3d5698SJohn Baldwin ret 594bc3d5698SJohn Baldwin.size OPENSSL_ia32_rdseed_bytes,.-.L_OPENSSL_ia32_rdseed_bytes_begin 595bc3d5698SJohn Baldwin.hidden OPENSSL_cpuid_setup 596bc3d5698SJohn Baldwin.hidden OPENSSL_ia32cap_P 597bc3d5698SJohn Baldwin.comm OPENSSL_ia32cap_P,16,4 598bc3d5698SJohn Baldwin.section .init 599bc3d5698SJohn Baldwin call OPENSSL_cpuid_setup 600*c0855eaaSJohn Baldwin 601*c0855eaaSJohn Baldwin .section ".note.gnu.property", "a" 602*c0855eaaSJohn Baldwin .p2align 2 603*c0855eaaSJohn Baldwin .long 1f - 0f 604*c0855eaaSJohn Baldwin .long 4f - 1f 605*c0855eaaSJohn Baldwin .long 5 606*c0855eaaSJohn Baldwin0: 607*c0855eaaSJohn Baldwin .asciz "GNU" 608*c0855eaaSJohn Baldwin1: 609*c0855eaaSJohn Baldwin .p2align 2 610*c0855eaaSJohn Baldwin .long 0xc0000002 611*c0855eaaSJohn Baldwin .long 3f - 2f 612*c0855eaaSJohn Baldwin2: 613*c0855eaaSJohn Baldwin .long 3 614*c0855eaaSJohn Baldwin3: 615*c0855eaaSJohn Baldwin .p2align 2 616*c0855eaaSJohn Baldwin4: 617bc3d5698SJohn Baldwin#else 618bc3d5698SJohn Baldwin.text 619bc3d5698SJohn Baldwin.globl OPENSSL_ia32_cpuid 620bc3d5698SJohn Baldwin.type OPENSSL_ia32_cpuid,@function 621bc3d5698SJohn Baldwin.align 16 622bc3d5698SJohn BaldwinOPENSSL_ia32_cpuid: 623bc3d5698SJohn Baldwin.L_OPENSSL_ia32_cpuid_begin: 624*c0855eaaSJohn Baldwin #ifdef __CET__ 625*c0855eaaSJohn Baldwin 626*c0855eaaSJohn Baldwin.byte 243,15,30,251 627*c0855eaaSJohn Baldwin #endif 628*c0855eaaSJohn Baldwin 629bc3d5698SJohn Baldwin pushl %ebp 630bc3d5698SJohn Baldwin pushl %ebx 631bc3d5698SJohn Baldwin pushl %esi 632bc3d5698SJohn Baldwin pushl %edi 633bc3d5698SJohn Baldwin xorl %edx,%edx 634bc3d5698SJohn Baldwin pushfl 635bc3d5698SJohn Baldwin popl %eax 636bc3d5698SJohn Baldwin movl %eax,%ecx 637bc3d5698SJohn Baldwin xorl $2097152,%eax 638bc3d5698SJohn Baldwin pushl %eax 639bc3d5698SJohn Baldwin popfl 640bc3d5698SJohn Baldwin pushfl 641bc3d5698SJohn Baldwin popl %eax 642bc3d5698SJohn Baldwin xorl %eax,%ecx 643bc3d5698SJohn Baldwin xorl %eax,%eax 644bc3d5698SJohn Baldwin movl 20(%esp),%esi 645bc3d5698SJohn Baldwin movl %eax,8(%esi) 646bc3d5698SJohn Baldwin btl $21,%ecx 647bc3d5698SJohn Baldwin jnc .L000nocpuid 648bc3d5698SJohn Baldwin .byte 0x0f,0xa2 649bc3d5698SJohn Baldwin movl %eax,%edi 650bc3d5698SJohn Baldwin xorl %eax,%eax 651bc3d5698SJohn Baldwin cmpl $1970169159,%ebx 652bc3d5698SJohn Baldwin setne %al 653bc3d5698SJohn Baldwin movl %eax,%ebp 654bc3d5698SJohn Baldwin cmpl $1231384169,%edx 655bc3d5698SJohn Baldwin setne %al 656bc3d5698SJohn Baldwin orl %eax,%ebp 657bc3d5698SJohn Baldwin cmpl $1818588270,%ecx 658bc3d5698SJohn Baldwin setne %al 659bc3d5698SJohn Baldwin orl %eax,%ebp 660bc3d5698SJohn Baldwin jz .L001intel 661bc3d5698SJohn Baldwin cmpl $1752462657,%ebx 662bc3d5698SJohn Baldwin setne %al 663bc3d5698SJohn Baldwin movl %eax,%esi 664bc3d5698SJohn Baldwin cmpl $1769238117,%edx 665bc3d5698SJohn Baldwin setne %al 666bc3d5698SJohn Baldwin orl %eax,%esi 667bc3d5698SJohn Baldwin cmpl $1145913699,%ecx 668bc3d5698SJohn Baldwin setne %al 669bc3d5698SJohn Baldwin orl %eax,%esi 670bc3d5698SJohn Baldwin jnz .L001intel 671bc3d5698SJohn Baldwin movl $2147483648,%eax 672bc3d5698SJohn Baldwin .byte 0x0f,0xa2 673bc3d5698SJohn Baldwin cmpl $2147483649,%eax 674bc3d5698SJohn Baldwin jb .L001intel 675bc3d5698SJohn Baldwin movl %eax,%esi 676bc3d5698SJohn Baldwin movl $2147483649,%eax 677bc3d5698SJohn Baldwin .byte 0x0f,0xa2 678bc3d5698SJohn Baldwin orl %ecx,%ebp 679bc3d5698SJohn Baldwin andl $2049,%ebp 680bc3d5698SJohn Baldwin cmpl $2147483656,%esi 681bc3d5698SJohn Baldwin jb .L001intel 682bc3d5698SJohn Baldwin movl $2147483656,%eax 683bc3d5698SJohn Baldwin .byte 0x0f,0xa2 684bc3d5698SJohn Baldwin movzbl %cl,%esi 685bc3d5698SJohn Baldwin incl %esi 686bc3d5698SJohn Baldwin movl $1,%eax 687bc3d5698SJohn Baldwin xorl %ecx,%ecx 688bc3d5698SJohn Baldwin .byte 0x0f,0xa2 689bc3d5698SJohn Baldwin btl $28,%edx 690bc3d5698SJohn Baldwin jnc .L002generic 691bc3d5698SJohn Baldwin shrl $16,%ebx 692bc3d5698SJohn Baldwin andl $255,%ebx 693bc3d5698SJohn Baldwin cmpl %esi,%ebx 694bc3d5698SJohn Baldwin ja .L002generic 695bc3d5698SJohn Baldwin andl $4026531839,%edx 696bc3d5698SJohn Baldwin jmp .L002generic 697bc3d5698SJohn Baldwin.L001intel: 698bc3d5698SJohn Baldwin cmpl $4,%edi 699bc3d5698SJohn Baldwin movl $-1,%esi 700bc3d5698SJohn Baldwin jb .L003nocacheinfo 701bc3d5698SJohn Baldwin movl $4,%eax 702bc3d5698SJohn Baldwin movl $0,%ecx 703bc3d5698SJohn Baldwin .byte 0x0f,0xa2 704bc3d5698SJohn Baldwin movl %eax,%esi 705bc3d5698SJohn Baldwin shrl $14,%esi 706bc3d5698SJohn Baldwin andl $4095,%esi 707bc3d5698SJohn Baldwin.L003nocacheinfo: 708bc3d5698SJohn Baldwin movl $1,%eax 709bc3d5698SJohn Baldwin xorl %ecx,%ecx 710bc3d5698SJohn Baldwin .byte 0x0f,0xa2 711bc3d5698SJohn Baldwin andl $3220176895,%edx 712bc3d5698SJohn Baldwin cmpl $0,%ebp 713bc3d5698SJohn Baldwin jne .L004notintel 714bc3d5698SJohn Baldwin orl $1073741824,%edx 715bc3d5698SJohn Baldwin andb $15,%ah 716bc3d5698SJohn Baldwin cmpb $15,%ah 717bc3d5698SJohn Baldwin jne .L004notintel 718bc3d5698SJohn Baldwin orl $1048576,%edx 719bc3d5698SJohn Baldwin.L004notintel: 720bc3d5698SJohn Baldwin btl $28,%edx 721bc3d5698SJohn Baldwin jnc .L002generic 722bc3d5698SJohn Baldwin andl $4026531839,%edx 723bc3d5698SJohn Baldwin cmpl $0,%esi 724bc3d5698SJohn Baldwin je .L002generic 725bc3d5698SJohn Baldwin orl $268435456,%edx 726bc3d5698SJohn Baldwin shrl $16,%ebx 727bc3d5698SJohn Baldwin cmpb $1,%bl 728bc3d5698SJohn Baldwin ja .L002generic 729bc3d5698SJohn Baldwin andl $4026531839,%edx 730bc3d5698SJohn Baldwin.L002generic: 731bc3d5698SJohn Baldwin andl $2048,%ebp 732bc3d5698SJohn Baldwin andl $4294965247,%ecx 733bc3d5698SJohn Baldwin movl %edx,%esi 734bc3d5698SJohn Baldwin orl %ecx,%ebp 735bc3d5698SJohn Baldwin cmpl $7,%edi 736bc3d5698SJohn Baldwin movl 20(%esp),%edi 737bc3d5698SJohn Baldwin jb .L005no_extended_info 738bc3d5698SJohn Baldwin movl $7,%eax 739bc3d5698SJohn Baldwin xorl %ecx,%ecx 740bc3d5698SJohn Baldwin .byte 0x0f,0xa2 741bc3d5698SJohn Baldwin movl %ebx,8(%edi) 742bc3d5698SJohn Baldwin.L005no_extended_info: 743bc3d5698SJohn Baldwin btl $27,%ebp 744bc3d5698SJohn Baldwin jnc .L006clear_avx 745bc3d5698SJohn Baldwin xorl %ecx,%ecx 746bc3d5698SJohn Baldwin.byte 15,1,208 747bc3d5698SJohn Baldwin andl $6,%eax 748bc3d5698SJohn Baldwin cmpl $6,%eax 749bc3d5698SJohn Baldwin je .L007done 750bc3d5698SJohn Baldwin cmpl $2,%eax 751bc3d5698SJohn Baldwin je .L006clear_avx 752bc3d5698SJohn Baldwin.L008clear_xmm: 753bc3d5698SJohn Baldwin andl $4261412861,%ebp 754bc3d5698SJohn Baldwin andl $4278190079,%esi 755bc3d5698SJohn Baldwin.L006clear_avx: 756bc3d5698SJohn Baldwin andl $4026525695,%ebp 757bc3d5698SJohn Baldwin andl $4294967263,8(%edi) 758bc3d5698SJohn Baldwin.L007done: 759bc3d5698SJohn Baldwin movl %esi,%eax 760bc3d5698SJohn Baldwin movl %ebp,%edx 761bc3d5698SJohn Baldwin.L000nocpuid: 762bc3d5698SJohn Baldwin popl %edi 763bc3d5698SJohn Baldwin popl %esi 764bc3d5698SJohn Baldwin popl %ebx 765bc3d5698SJohn Baldwin popl %ebp 766bc3d5698SJohn Baldwin ret 767bc3d5698SJohn Baldwin.size OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin 768bc3d5698SJohn Baldwin.globl OPENSSL_rdtsc 769bc3d5698SJohn Baldwin.type OPENSSL_rdtsc,@function 770bc3d5698SJohn Baldwin.align 16 771bc3d5698SJohn BaldwinOPENSSL_rdtsc: 772bc3d5698SJohn Baldwin.L_OPENSSL_rdtsc_begin: 773*c0855eaaSJohn Baldwin #ifdef __CET__ 774*c0855eaaSJohn Baldwin 775*c0855eaaSJohn Baldwin.byte 243,15,30,251 776*c0855eaaSJohn Baldwin #endif 777*c0855eaaSJohn Baldwin 778bc3d5698SJohn Baldwin xorl %eax,%eax 779bc3d5698SJohn Baldwin xorl %edx,%edx 780bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P,%ecx 781bc3d5698SJohn Baldwin btl $4,(%ecx) 782bc3d5698SJohn Baldwin jnc .L009notsc 783bc3d5698SJohn Baldwin .byte 0x0f,0x31 784bc3d5698SJohn Baldwin.L009notsc: 785bc3d5698SJohn Baldwin ret 786bc3d5698SJohn Baldwin.size OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin 787bc3d5698SJohn Baldwin.globl OPENSSL_instrument_halt 788bc3d5698SJohn Baldwin.type OPENSSL_instrument_halt,@function 789bc3d5698SJohn Baldwin.align 16 790bc3d5698SJohn BaldwinOPENSSL_instrument_halt: 791bc3d5698SJohn Baldwin.L_OPENSSL_instrument_halt_begin: 792*c0855eaaSJohn Baldwin #ifdef __CET__ 793*c0855eaaSJohn Baldwin 794*c0855eaaSJohn Baldwin.byte 243,15,30,251 795*c0855eaaSJohn Baldwin #endif 796*c0855eaaSJohn Baldwin 797bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P,%ecx 798bc3d5698SJohn Baldwin btl $4,(%ecx) 799bc3d5698SJohn Baldwin jnc .L010nohalt 800bc3d5698SJohn Baldwin.long 2421723150 801bc3d5698SJohn Baldwin andl $3,%eax 802bc3d5698SJohn Baldwin jnz .L010nohalt 803bc3d5698SJohn Baldwin pushfl 804bc3d5698SJohn Baldwin popl %eax 805bc3d5698SJohn Baldwin btl $9,%eax 806bc3d5698SJohn Baldwin jnc .L010nohalt 807bc3d5698SJohn Baldwin .byte 0x0f,0x31 808bc3d5698SJohn Baldwin pushl %edx 809bc3d5698SJohn Baldwin pushl %eax 810bc3d5698SJohn Baldwin hlt 811bc3d5698SJohn Baldwin .byte 0x0f,0x31 812bc3d5698SJohn Baldwin subl (%esp),%eax 813bc3d5698SJohn Baldwin sbbl 4(%esp),%edx 814bc3d5698SJohn Baldwin addl $8,%esp 815bc3d5698SJohn Baldwin ret 816bc3d5698SJohn Baldwin.L010nohalt: 817bc3d5698SJohn Baldwin xorl %eax,%eax 818bc3d5698SJohn Baldwin xorl %edx,%edx 819bc3d5698SJohn Baldwin ret 820bc3d5698SJohn Baldwin.size OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin 821bc3d5698SJohn Baldwin.globl OPENSSL_far_spin 822bc3d5698SJohn Baldwin.type OPENSSL_far_spin,@function 823bc3d5698SJohn Baldwin.align 16 824bc3d5698SJohn BaldwinOPENSSL_far_spin: 825bc3d5698SJohn Baldwin.L_OPENSSL_far_spin_begin: 826*c0855eaaSJohn Baldwin #ifdef __CET__ 827*c0855eaaSJohn Baldwin 828*c0855eaaSJohn Baldwin.byte 243,15,30,251 829*c0855eaaSJohn Baldwin #endif 830*c0855eaaSJohn Baldwin 831bc3d5698SJohn Baldwin pushfl 832bc3d5698SJohn Baldwin popl %eax 833bc3d5698SJohn Baldwin btl $9,%eax 834bc3d5698SJohn Baldwin jnc .L011nospin 835bc3d5698SJohn Baldwin movl 4(%esp),%eax 836bc3d5698SJohn Baldwin movl 8(%esp),%ecx 837bc3d5698SJohn Baldwin.long 2430111262 838bc3d5698SJohn Baldwin xorl %eax,%eax 839bc3d5698SJohn Baldwin movl (%ecx),%edx 840bc3d5698SJohn Baldwin jmp .L012spin 841bc3d5698SJohn Baldwin.align 16 842bc3d5698SJohn Baldwin.L012spin: 843bc3d5698SJohn Baldwin incl %eax 844bc3d5698SJohn Baldwin cmpl (%ecx),%edx 845bc3d5698SJohn Baldwin je .L012spin 846bc3d5698SJohn Baldwin.long 529567888 847bc3d5698SJohn Baldwin ret 848bc3d5698SJohn Baldwin.L011nospin: 849bc3d5698SJohn Baldwin xorl %eax,%eax 850bc3d5698SJohn Baldwin xorl %edx,%edx 851bc3d5698SJohn Baldwin ret 852bc3d5698SJohn Baldwin.size OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin 853bc3d5698SJohn Baldwin.globl OPENSSL_wipe_cpu 854bc3d5698SJohn Baldwin.type OPENSSL_wipe_cpu,@function 855bc3d5698SJohn Baldwin.align 16 856bc3d5698SJohn BaldwinOPENSSL_wipe_cpu: 857bc3d5698SJohn Baldwin.L_OPENSSL_wipe_cpu_begin: 858*c0855eaaSJohn Baldwin #ifdef __CET__ 859*c0855eaaSJohn Baldwin 860*c0855eaaSJohn Baldwin.byte 243,15,30,251 861*c0855eaaSJohn Baldwin #endif 862*c0855eaaSJohn Baldwin 863bc3d5698SJohn Baldwin xorl %eax,%eax 864bc3d5698SJohn Baldwin xorl %edx,%edx 865bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P,%ecx 866bc3d5698SJohn Baldwin movl (%ecx),%ecx 867bc3d5698SJohn Baldwin btl $1,(%ecx) 868bc3d5698SJohn Baldwin jnc .L013no_x87 869bc3d5698SJohn Baldwin andl $83886080,%ecx 870bc3d5698SJohn Baldwin cmpl $83886080,%ecx 871bc3d5698SJohn Baldwin jne .L014no_sse2 872bc3d5698SJohn Baldwin pxor %xmm0,%xmm0 873bc3d5698SJohn Baldwin pxor %xmm1,%xmm1 874bc3d5698SJohn Baldwin pxor %xmm2,%xmm2 875bc3d5698SJohn Baldwin pxor %xmm3,%xmm3 876bc3d5698SJohn Baldwin pxor %xmm4,%xmm4 877bc3d5698SJohn Baldwin pxor %xmm5,%xmm5 878bc3d5698SJohn Baldwin pxor %xmm6,%xmm6 879bc3d5698SJohn Baldwin pxor %xmm7,%xmm7 880bc3d5698SJohn Baldwin.L014no_sse2: 881bc3d5698SJohn Baldwin.long 4007259865,4007259865,4007259865,4007259865,2430851995 882bc3d5698SJohn Baldwin.L013no_x87: 883bc3d5698SJohn Baldwin leal 4(%esp),%eax 884bc3d5698SJohn Baldwin ret 885bc3d5698SJohn Baldwin.size OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin 886bc3d5698SJohn Baldwin.globl OPENSSL_atomic_add 887bc3d5698SJohn Baldwin.type OPENSSL_atomic_add,@function 888bc3d5698SJohn Baldwin.align 16 889bc3d5698SJohn BaldwinOPENSSL_atomic_add: 890bc3d5698SJohn Baldwin.L_OPENSSL_atomic_add_begin: 891*c0855eaaSJohn Baldwin #ifdef __CET__ 892*c0855eaaSJohn Baldwin 893*c0855eaaSJohn Baldwin.byte 243,15,30,251 894*c0855eaaSJohn Baldwin #endif 895*c0855eaaSJohn Baldwin 896bc3d5698SJohn Baldwin movl 4(%esp),%edx 897bc3d5698SJohn Baldwin movl 8(%esp),%ecx 898bc3d5698SJohn Baldwin pushl %ebx 899bc3d5698SJohn Baldwin nop 900bc3d5698SJohn Baldwin movl (%edx),%eax 901bc3d5698SJohn Baldwin.L015spin: 902bc3d5698SJohn Baldwin leal (%eax,%ecx,1),%ebx 903bc3d5698SJohn Baldwin nop 904bc3d5698SJohn Baldwin.long 447811568 905bc3d5698SJohn Baldwin jne .L015spin 906bc3d5698SJohn Baldwin movl %ebx,%eax 907bc3d5698SJohn Baldwin popl %ebx 908bc3d5698SJohn Baldwin ret 909bc3d5698SJohn Baldwin.size OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin 910bc3d5698SJohn Baldwin.globl OPENSSL_cleanse 911bc3d5698SJohn Baldwin.type OPENSSL_cleanse,@function 912bc3d5698SJohn Baldwin.align 16 913bc3d5698SJohn BaldwinOPENSSL_cleanse: 914bc3d5698SJohn Baldwin.L_OPENSSL_cleanse_begin: 915*c0855eaaSJohn Baldwin #ifdef __CET__ 916*c0855eaaSJohn Baldwin 917*c0855eaaSJohn Baldwin.byte 243,15,30,251 918*c0855eaaSJohn Baldwin #endif 919*c0855eaaSJohn Baldwin 920bc3d5698SJohn Baldwin movl 4(%esp),%edx 921bc3d5698SJohn Baldwin movl 8(%esp),%ecx 922bc3d5698SJohn Baldwin xorl %eax,%eax 923bc3d5698SJohn Baldwin cmpl $7,%ecx 924bc3d5698SJohn Baldwin jae .L016lot 925bc3d5698SJohn Baldwin cmpl $0,%ecx 926bc3d5698SJohn Baldwin je .L017ret 927bc3d5698SJohn Baldwin.L018little: 928bc3d5698SJohn Baldwin movb %al,(%edx) 929bc3d5698SJohn Baldwin subl $1,%ecx 930bc3d5698SJohn Baldwin leal 1(%edx),%edx 931bc3d5698SJohn Baldwin jnz .L018little 932bc3d5698SJohn Baldwin.L017ret: 933bc3d5698SJohn Baldwin ret 934bc3d5698SJohn Baldwin.align 16 935bc3d5698SJohn Baldwin.L016lot: 936bc3d5698SJohn Baldwin testl $3,%edx 937bc3d5698SJohn Baldwin jz .L019aligned 938bc3d5698SJohn Baldwin movb %al,(%edx) 939bc3d5698SJohn Baldwin leal -1(%ecx),%ecx 940bc3d5698SJohn Baldwin leal 1(%edx),%edx 941bc3d5698SJohn Baldwin jmp .L016lot 942bc3d5698SJohn Baldwin.L019aligned: 943bc3d5698SJohn Baldwin movl %eax,(%edx) 944bc3d5698SJohn Baldwin leal -4(%ecx),%ecx 945bc3d5698SJohn Baldwin testl $-4,%ecx 946bc3d5698SJohn Baldwin leal 4(%edx),%edx 947bc3d5698SJohn Baldwin jnz .L019aligned 948bc3d5698SJohn Baldwin cmpl $0,%ecx 949bc3d5698SJohn Baldwin jne .L018little 950bc3d5698SJohn Baldwin ret 951bc3d5698SJohn Baldwin.size OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin 952bc3d5698SJohn Baldwin.globl CRYPTO_memcmp 953bc3d5698SJohn Baldwin.type CRYPTO_memcmp,@function 954bc3d5698SJohn Baldwin.align 16 955bc3d5698SJohn BaldwinCRYPTO_memcmp: 956bc3d5698SJohn Baldwin.L_CRYPTO_memcmp_begin: 957*c0855eaaSJohn Baldwin #ifdef __CET__ 958*c0855eaaSJohn Baldwin 959*c0855eaaSJohn Baldwin.byte 243,15,30,251 960*c0855eaaSJohn Baldwin #endif 961*c0855eaaSJohn Baldwin 962bc3d5698SJohn Baldwin pushl %esi 963bc3d5698SJohn Baldwin pushl %edi 964bc3d5698SJohn Baldwin movl 12(%esp),%esi 965bc3d5698SJohn Baldwin movl 16(%esp),%edi 966bc3d5698SJohn Baldwin movl 20(%esp),%ecx 967bc3d5698SJohn Baldwin xorl %eax,%eax 968bc3d5698SJohn Baldwin xorl %edx,%edx 969bc3d5698SJohn Baldwin cmpl $0,%ecx 970bc3d5698SJohn Baldwin je .L020no_data 971bc3d5698SJohn Baldwin.L021loop: 972bc3d5698SJohn Baldwin movb (%esi),%dl 973bc3d5698SJohn Baldwin leal 1(%esi),%esi 974bc3d5698SJohn Baldwin xorb (%edi),%dl 975bc3d5698SJohn Baldwin leal 1(%edi),%edi 976bc3d5698SJohn Baldwin orb %dl,%al 977bc3d5698SJohn Baldwin decl %ecx 978bc3d5698SJohn Baldwin jnz .L021loop 979bc3d5698SJohn Baldwin negl %eax 980bc3d5698SJohn Baldwin shrl $31,%eax 981bc3d5698SJohn Baldwin.L020no_data: 982bc3d5698SJohn Baldwin popl %edi 983bc3d5698SJohn Baldwin popl %esi 984bc3d5698SJohn Baldwin ret 985bc3d5698SJohn Baldwin.size CRYPTO_memcmp,.-.L_CRYPTO_memcmp_begin 986bc3d5698SJohn Baldwin.globl OPENSSL_instrument_bus 987bc3d5698SJohn Baldwin.type OPENSSL_instrument_bus,@function 988bc3d5698SJohn Baldwin.align 16 989bc3d5698SJohn BaldwinOPENSSL_instrument_bus: 990bc3d5698SJohn Baldwin.L_OPENSSL_instrument_bus_begin: 991*c0855eaaSJohn Baldwin #ifdef __CET__ 992*c0855eaaSJohn Baldwin 993*c0855eaaSJohn Baldwin.byte 243,15,30,251 994*c0855eaaSJohn Baldwin #endif 995*c0855eaaSJohn Baldwin 996bc3d5698SJohn Baldwin pushl %ebp 997bc3d5698SJohn Baldwin pushl %ebx 998bc3d5698SJohn Baldwin pushl %esi 999bc3d5698SJohn Baldwin pushl %edi 1000bc3d5698SJohn Baldwin movl $0,%eax 1001bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P,%edx 1002bc3d5698SJohn Baldwin btl $4,(%edx) 1003bc3d5698SJohn Baldwin jnc .L022nogo 1004bc3d5698SJohn Baldwin btl $19,(%edx) 1005bc3d5698SJohn Baldwin jnc .L022nogo 1006bc3d5698SJohn Baldwin movl 20(%esp),%edi 1007bc3d5698SJohn Baldwin movl 24(%esp),%ecx 1008bc3d5698SJohn Baldwin .byte 0x0f,0x31 1009bc3d5698SJohn Baldwin movl %eax,%esi 1010bc3d5698SJohn Baldwin movl $0,%ebx 1011bc3d5698SJohn Baldwin clflush (%edi) 1012bc3d5698SJohn Baldwin.byte 240 1013bc3d5698SJohn Baldwin addl %ebx,(%edi) 1014bc3d5698SJohn Baldwin jmp .L023loop 1015bc3d5698SJohn Baldwin.align 16 1016bc3d5698SJohn Baldwin.L023loop: 1017bc3d5698SJohn Baldwin .byte 0x0f,0x31 1018bc3d5698SJohn Baldwin movl %eax,%edx 1019bc3d5698SJohn Baldwin subl %esi,%eax 1020bc3d5698SJohn Baldwin movl %edx,%esi 1021bc3d5698SJohn Baldwin movl %eax,%ebx 1022bc3d5698SJohn Baldwin clflush (%edi) 1023bc3d5698SJohn Baldwin.byte 240 1024bc3d5698SJohn Baldwin addl %eax,(%edi) 1025bc3d5698SJohn Baldwin leal 4(%edi),%edi 1026bc3d5698SJohn Baldwin subl $1,%ecx 1027bc3d5698SJohn Baldwin jnz .L023loop 1028bc3d5698SJohn Baldwin movl 24(%esp),%eax 1029bc3d5698SJohn Baldwin.L022nogo: 1030bc3d5698SJohn Baldwin popl %edi 1031bc3d5698SJohn Baldwin popl %esi 1032bc3d5698SJohn Baldwin popl %ebx 1033bc3d5698SJohn Baldwin popl %ebp 1034bc3d5698SJohn Baldwin ret 1035bc3d5698SJohn Baldwin.size OPENSSL_instrument_bus,.-.L_OPENSSL_instrument_bus_begin 1036bc3d5698SJohn Baldwin.globl OPENSSL_instrument_bus2 1037bc3d5698SJohn Baldwin.type OPENSSL_instrument_bus2,@function 1038bc3d5698SJohn Baldwin.align 16 1039bc3d5698SJohn BaldwinOPENSSL_instrument_bus2: 1040bc3d5698SJohn Baldwin.L_OPENSSL_instrument_bus2_begin: 1041*c0855eaaSJohn Baldwin #ifdef __CET__ 1042*c0855eaaSJohn Baldwin 1043*c0855eaaSJohn Baldwin.byte 243,15,30,251 1044*c0855eaaSJohn Baldwin #endif 1045*c0855eaaSJohn Baldwin 1046bc3d5698SJohn Baldwin pushl %ebp 1047bc3d5698SJohn Baldwin pushl %ebx 1048bc3d5698SJohn Baldwin pushl %esi 1049bc3d5698SJohn Baldwin pushl %edi 1050bc3d5698SJohn Baldwin movl $0,%eax 1051bc3d5698SJohn Baldwin leal OPENSSL_ia32cap_P,%edx 1052bc3d5698SJohn Baldwin btl $4,(%edx) 1053bc3d5698SJohn Baldwin jnc .L024nogo 1054bc3d5698SJohn Baldwin btl $19,(%edx) 1055bc3d5698SJohn Baldwin jnc .L024nogo 1056bc3d5698SJohn Baldwin movl 20(%esp),%edi 1057bc3d5698SJohn Baldwin movl 24(%esp),%ecx 1058bc3d5698SJohn Baldwin movl 28(%esp),%ebp 1059bc3d5698SJohn Baldwin .byte 0x0f,0x31 1060bc3d5698SJohn Baldwin movl %eax,%esi 1061bc3d5698SJohn Baldwin movl $0,%ebx 1062bc3d5698SJohn Baldwin clflush (%edi) 1063bc3d5698SJohn Baldwin.byte 240 1064bc3d5698SJohn Baldwin addl %ebx,(%edi) 1065bc3d5698SJohn Baldwin .byte 0x0f,0x31 1066bc3d5698SJohn Baldwin movl %eax,%edx 1067bc3d5698SJohn Baldwin subl %esi,%eax 1068bc3d5698SJohn Baldwin movl %edx,%esi 1069bc3d5698SJohn Baldwin movl %eax,%ebx 1070bc3d5698SJohn Baldwin jmp .L025loop2 1071bc3d5698SJohn Baldwin.align 16 1072bc3d5698SJohn Baldwin.L025loop2: 1073bc3d5698SJohn Baldwin clflush (%edi) 1074bc3d5698SJohn Baldwin.byte 240 1075bc3d5698SJohn Baldwin addl %eax,(%edi) 1076bc3d5698SJohn Baldwin subl $1,%ebp 1077bc3d5698SJohn Baldwin jz .L026done2 1078bc3d5698SJohn Baldwin .byte 0x0f,0x31 1079bc3d5698SJohn Baldwin movl %eax,%edx 1080bc3d5698SJohn Baldwin subl %esi,%eax 1081bc3d5698SJohn Baldwin movl %edx,%esi 1082bc3d5698SJohn Baldwin cmpl %ebx,%eax 1083bc3d5698SJohn Baldwin movl %eax,%ebx 1084bc3d5698SJohn Baldwin movl $0,%edx 1085bc3d5698SJohn Baldwin setne %dl 1086bc3d5698SJohn Baldwin subl %edx,%ecx 1087bc3d5698SJohn Baldwin leal (%edi,%edx,4),%edi 1088bc3d5698SJohn Baldwin jnz .L025loop2 1089bc3d5698SJohn Baldwin.L026done2: 1090bc3d5698SJohn Baldwin movl 24(%esp),%eax 1091bc3d5698SJohn Baldwin subl %ecx,%eax 1092bc3d5698SJohn Baldwin.L024nogo: 1093bc3d5698SJohn Baldwin popl %edi 1094bc3d5698SJohn Baldwin popl %esi 1095bc3d5698SJohn Baldwin popl %ebx 1096bc3d5698SJohn Baldwin popl %ebp 1097bc3d5698SJohn Baldwin ret 1098bc3d5698SJohn Baldwin.size OPENSSL_instrument_bus2,.-.L_OPENSSL_instrument_bus2_begin 1099bc3d5698SJohn Baldwin.globl OPENSSL_ia32_rdrand_bytes 1100bc3d5698SJohn Baldwin.type OPENSSL_ia32_rdrand_bytes,@function 1101bc3d5698SJohn Baldwin.align 16 1102bc3d5698SJohn BaldwinOPENSSL_ia32_rdrand_bytes: 1103bc3d5698SJohn Baldwin.L_OPENSSL_ia32_rdrand_bytes_begin: 1104*c0855eaaSJohn Baldwin #ifdef __CET__ 1105*c0855eaaSJohn Baldwin 1106*c0855eaaSJohn Baldwin.byte 243,15,30,251 1107*c0855eaaSJohn Baldwin #endif 1108*c0855eaaSJohn Baldwin 1109bc3d5698SJohn Baldwin pushl %edi 1110bc3d5698SJohn Baldwin pushl %ebx 1111bc3d5698SJohn Baldwin xorl %eax,%eax 1112bc3d5698SJohn Baldwin movl 12(%esp),%edi 1113bc3d5698SJohn Baldwin movl 16(%esp),%ebx 1114bc3d5698SJohn Baldwin cmpl $0,%ebx 1115bc3d5698SJohn Baldwin je .L027done 1116bc3d5698SJohn Baldwin movl $8,%ecx 1117bc3d5698SJohn Baldwin.L028loop: 1118bc3d5698SJohn Baldwin.byte 15,199,242 1119bc3d5698SJohn Baldwin jc .L029break 1120bc3d5698SJohn Baldwin loop .L028loop 1121bc3d5698SJohn Baldwin jmp .L027done 1122bc3d5698SJohn Baldwin.align 16 1123bc3d5698SJohn Baldwin.L029break: 1124bc3d5698SJohn Baldwin cmpl $4,%ebx 1125bc3d5698SJohn Baldwin jb .L030tail 1126bc3d5698SJohn Baldwin movl %edx,(%edi) 1127bc3d5698SJohn Baldwin leal 4(%edi),%edi 1128bc3d5698SJohn Baldwin addl $4,%eax 1129bc3d5698SJohn Baldwin subl $4,%ebx 1130bc3d5698SJohn Baldwin jz .L027done 1131bc3d5698SJohn Baldwin movl $8,%ecx 1132bc3d5698SJohn Baldwin jmp .L028loop 1133bc3d5698SJohn Baldwin.align 16 1134bc3d5698SJohn Baldwin.L030tail: 1135bc3d5698SJohn Baldwin movb %dl,(%edi) 1136bc3d5698SJohn Baldwin leal 1(%edi),%edi 1137bc3d5698SJohn Baldwin incl %eax 1138bc3d5698SJohn Baldwin shrl $8,%edx 1139bc3d5698SJohn Baldwin decl %ebx 1140bc3d5698SJohn Baldwin jnz .L030tail 1141bc3d5698SJohn Baldwin.L027done: 1142bc3d5698SJohn Baldwin xorl %edx,%edx 1143bc3d5698SJohn Baldwin popl %ebx 1144bc3d5698SJohn Baldwin popl %edi 1145bc3d5698SJohn Baldwin ret 1146bc3d5698SJohn Baldwin.size OPENSSL_ia32_rdrand_bytes,.-.L_OPENSSL_ia32_rdrand_bytes_begin 1147bc3d5698SJohn Baldwin.globl OPENSSL_ia32_rdseed_bytes 1148bc3d5698SJohn Baldwin.type OPENSSL_ia32_rdseed_bytes,@function 1149bc3d5698SJohn Baldwin.align 16 1150bc3d5698SJohn BaldwinOPENSSL_ia32_rdseed_bytes: 1151bc3d5698SJohn Baldwin.L_OPENSSL_ia32_rdseed_bytes_begin: 1152*c0855eaaSJohn Baldwin #ifdef __CET__ 1153*c0855eaaSJohn Baldwin 1154*c0855eaaSJohn Baldwin.byte 243,15,30,251 1155*c0855eaaSJohn Baldwin #endif 1156*c0855eaaSJohn Baldwin 1157bc3d5698SJohn Baldwin pushl %edi 1158bc3d5698SJohn Baldwin pushl %ebx 1159bc3d5698SJohn Baldwin xorl %eax,%eax 1160bc3d5698SJohn Baldwin movl 12(%esp),%edi 1161bc3d5698SJohn Baldwin movl 16(%esp),%ebx 1162bc3d5698SJohn Baldwin cmpl $0,%ebx 1163bc3d5698SJohn Baldwin je .L031done 1164bc3d5698SJohn Baldwin movl $8,%ecx 1165bc3d5698SJohn Baldwin.L032loop: 1166bc3d5698SJohn Baldwin.byte 15,199,250 1167bc3d5698SJohn Baldwin jc .L033break 1168bc3d5698SJohn Baldwin loop .L032loop 1169bc3d5698SJohn Baldwin jmp .L031done 1170bc3d5698SJohn Baldwin.align 16 1171bc3d5698SJohn Baldwin.L033break: 1172bc3d5698SJohn Baldwin cmpl $4,%ebx 1173bc3d5698SJohn Baldwin jb .L034tail 1174bc3d5698SJohn Baldwin movl %edx,(%edi) 1175bc3d5698SJohn Baldwin leal 4(%edi),%edi 1176bc3d5698SJohn Baldwin addl $4,%eax 1177bc3d5698SJohn Baldwin subl $4,%ebx 1178bc3d5698SJohn Baldwin jz .L031done 1179bc3d5698SJohn Baldwin movl $8,%ecx 1180bc3d5698SJohn Baldwin jmp .L032loop 1181bc3d5698SJohn Baldwin.align 16 1182bc3d5698SJohn Baldwin.L034tail: 1183bc3d5698SJohn Baldwin movb %dl,(%edi) 1184bc3d5698SJohn Baldwin leal 1(%edi),%edi 1185bc3d5698SJohn Baldwin incl %eax 1186bc3d5698SJohn Baldwin shrl $8,%edx 1187bc3d5698SJohn Baldwin decl %ebx 1188bc3d5698SJohn Baldwin jnz .L034tail 1189bc3d5698SJohn Baldwin.L031done: 1190bc3d5698SJohn Baldwin xorl %edx,%edx 1191bc3d5698SJohn Baldwin popl %ebx 1192bc3d5698SJohn Baldwin popl %edi 1193bc3d5698SJohn Baldwin ret 1194bc3d5698SJohn Baldwin.size OPENSSL_ia32_rdseed_bytes,.-.L_OPENSSL_ia32_rdseed_bytes_begin 1195bc3d5698SJohn Baldwin.hidden OPENSSL_cpuid_setup 1196bc3d5698SJohn Baldwin.hidden OPENSSL_ia32cap_P 1197bc3d5698SJohn Baldwin.comm OPENSSL_ia32cap_P,16,4 1198bc3d5698SJohn Baldwin.section .init 1199bc3d5698SJohn Baldwin call OPENSSL_cpuid_setup 1200*c0855eaaSJohn Baldwin 1201*c0855eaaSJohn Baldwin .section ".note.gnu.property", "a" 1202*c0855eaaSJohn Baldwin .p2align 2 1203*c0855eaaSJohn Baldwin .long 1f - 0f 1204*c0855eaaSJohn Baldwin .long 4f - 1f 1205*c0855eaaSJohn Baldwin .long 5 1206*c0855eaaSJohn Baldwin0: 1207*c0855eaaSJohn Baldwin .asciz "GNU" 1208*c0855eaaSJohn Baldwin1: 1209*c0855eaaSJohn Baldwin .p2align 2 1210*c0855eaaSJohn Baldwin .long 0xc0000002 1211*c0855eaaSJohn Baldwin .long 3f - 2f 1212*c0855eaaSJohn Baldwin2: 1213*c0855eaaSJohn Baldwin .long 3 1214*c0855eaaSJohn Baldwin3: 1215*c0855eaaSJohn Baldwin .p2align 2 1216*c0855eaaSJohn Baldwin4: 1217bc3d5698SJohn Baldwin#endif 1218