The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/crypto/openssl/i386/x86cpuid.S

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: 69d67b7ba1d52c17698de22429e7b91f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.