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/amd64/e_padlock-x86_64.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 e_padlock-x86_64.pl. */
    3 .text   
    4 .globl  padlock_capability
    5 .type   padlock_capability,@function
    6 .align  16
    7 padlock_capability:
    8         movq    %rbx,%r8
    9         xorl    %eax,%eax
   10         cpuid
   11         xorl    %eax,%eax
   12         cmpl    $0x746e6543,%ebx
   13         jne     .Lzhaoxin
   14         cmpl    $0x48727561,%edx
   15         jne     .Lnoluck
   16         cmpl    $0x736c7561,%ecx
   17         jne     .Lnoluck
   18         jmp     .LzhaoxinEnd
   19 .Lzhaoxin:
   20         cmpl    $0x68532020,%ebx
   21         jne     .Lnoluck
   22         cmpl    $0x68676e61,%edx
   23         jne     .Lnoluck
   24         cmpl    $0x20206961,%ecx
   25         jne     .Lnoluck
   26 .LzhaoxinEnd:
   27         movl    $0xC0000000,%eax
   28         cpuid
   29         movl    %eax,%edx
   30         xorl    %eax,%eax
   31         cmpl    $0xC0000001,%edx
   32         jb      .Lnoluck
   33         movl    $0xC0000001,%eax
   34         cpuid
   35         movl    %edx,%eax
   36         andl    $0xffffffef,%eax
   37         orl     $0x10,%eax
   38 .Lnoluck:
   39         movq    %r8,%rbx
   40         .byte   0xf3,0xc3
   41 .size   padlock_capability,.-padlock_capability
   42 
   43 .globl  padlock_key_bswap
   44 .type   padlock_key_bswap,@function
   45 .align  16
   46 padlock_key_bswap:
   47         movl    240(%rdi),%edx
   48 .Lbswap_loop:
   49         movl    (%rdi),%eax
   50         bswapl  %eax
   51         movl    %eax,(%rdi)
   52         leaq    4(%rdi),%rdi
   53         subl    $1,%edx
   54         jnz     .Lbswap_loop
   55         .byte   0xf3,0xc3
   56 .size   padlock_key_bswap,.-padlock_key_bswap
   57 
   58 .globl  padlock_verify_context
   59 .type   padlock_verify_context,@function
   60 .align  16
   61 padlock_verify_context:
   62         movq    %rdi,%rdx
   63         pushf
   64         leaq    .Lpadlock_saved_context(%rip),%rax
   65         call    _padlock_verify_ctx
   66         leaq    8(%rsp),%rsp
   67         .byte   0xf3,0xc3
   68 .size   padlock_verify_context,.-padlock_verify_context
   69 
   70 .type   _padlock_verify_ctx,@function
   71 .align  16
   72 _padlock_verify_ctx:
   73         movq    8(%rsp),%r8
   74         btq     $30,%r8
   75         jnc     .Lverified
   76         cmpq    (%rax),%rdx
   77         je      .Lverified
   78         pushf
   79         popf
   80 .Lverified:
   81         movq    %rdx,(%rax)
   82         .byte   0xf3,0xc3
   83 .size   _padlock_verify_ctx,.-_padlock_verify_ctx
   84 
   85 .globl  padlock_reload_key
   86 .type   padlock_reload_key,@function
   87 .align  16
   88 padlock_reload_key:
   89         pushf
   90         popf
   91         .byte   0xf3,0xc3
   92 .size   padlock_reload_key,.-padlock_reload_key
   93 
   94 .globl  padlock_aes_block
   95 .type   padlock_aes_block,@function
   96 .align  16
   97 padlock_aes_block:
   98         movq    %rbx,%r8
   99         movq    $1,%rcx
  100         leaq    32(%rdx),%rbx
  101         leaq    16(%rdx),%rdx
  102 .byte   0xf3,0x0f,0xa7,0xc8
  103         movq    %r8,%rbx
  104         .byte   0xf3,0xc3
  105 .size   padlock_aes_block,.-padlock_aes_block
  106 
  107 .globl  padlock_xstore
  108 .type   padlock_xstore,@function
  109 .align  16
  110 padlock_xstore:
  111         movl    %esi,%edx
  112 .byte   0x0f,0xa7,0xc0
  113         .byte   0xf3,0xc3
  114 .size   padlock_xstore,.-padlock_xstore
  115 
  116 .globl  padlock_sha1_oneshot
  117 .type   padlock_sha1_oneshot,@function
  118 .align  16
  119 padlock_sha1_oneshot:
  120         movq    %rdx,%rcx
  121         movq    %rdi,%rdx
  122         movups  (%rdi),%xmm0
  123         subq    $128+8,%rsp
  124         movl    16(%rdi),%eax
  125         movaps  %xmm0,(%rsp)
  126         movq    %rsp,%rdi
  127         movl    %eax,16(%rsp)
  128         xorq    %rax,%rax
  129 .byte   0xf3,0x0f,0xa6,0xc8
  130         movaps  (%rsp),%xmm0
  131         movl    16(%rsp),%eax
  132         addq    $128+8,%rsp
  133         movups  %xmm0,(%rdx)
  134         movl    %eax,16(%rdx)
  135         .byte   0xf3,0xc3
  136 .size   padlock_sha1_oneshot,.-padlock_sha1_oneshot
  137 
  138 .globl  padlock_sha1_blocks
  139 .type   padlock_sha1_blocks,@function
  140 .align  16
  141 padlock_sha1_blocks:
  142         movq    %rdx,%rcx
  143         movq    %rdi,%rdx
  144         movups  (%rdi),%xmm0
  145         subq    $128+8,%rsp
  146         movl    16(%rdi),%eax
  147         movaps  %xmm0,(%rsp)
  148         movq    %rsp,%rdi
  149         movl    %eax,16(%rsp)
  150         movq    $-1,%rax
  151 .byte   0xf3,0x0f,0xa6,0xc8
  152         movaps  (%rsp),%xmm0
  153         movl    16(%rsp),%eax
  154         addq    $128+8,%rsp
  155         movups  %xmm0,(%rdx)
  156         movl    %eax,16(%rdx)
  157         .byte   0xf3,0xc3
  158 .size   padlock_sha1_blocks,.-padlock_sha1_blocks
  159 
  160 .globl  padlock_sha256_oneshot
  161 .type   padlock_sha256_oneshot,@function
  162 .align  16
  163 padlock_sha256_oneshot:
  164         movq    %rdx,%rcx
  165         movq    %rdi,%rdx
  166         movups  (%rdi),%xmm0
  167         subq    $128+8,%rsp
  168         movups  16(%rdi),%xmm1
  169         movaps  %xmm0,(%rsp)
  170         movq    %rsp,%rdi
  171         movaps  %xmm1,16(%rsp)
  172         xorq    %rax,%rax
  173 .byte   0xf3,0x0f,0xa6,0xd0
  174         movaps  (%rsp),%xmm0
  175         movaps  16(%rsp),%xmm1
  176         addq    $128+8,%rsp
  177         movups  %xmm0,(%rdx)
  178         movups  %xmm1,16(%rdx)
  179         .byte   0xf3,0xc3
  180 .size   padlock_sha256_oneshot,.-padlock_sha256_oneshot
  181 
  182 .globl  padlock_sha256_blocks
  183 .type   padlock_sha256_blocks,@function
  184 .align  16
  185 padlock_sha256_blocks:
  186         movq    %rdx,%rcx
  187         movq    %rdi,%rdx
  188         movups  (%rdi),%xmm0
  189         subq    $128+8,%rsp
  190         movups  16(%rdi),%xmm1
  191         movaps  %xmm0,(%rsp)
  192         movq    %rsp,%rdi
  193         movaps  %xmm1,16(%rsp)
  194         movq    $-1,%rax
  195 .byte   0xf3,0x0f,0xa6,0xd0
  196         movaps  (%rsp),%xmm0
  197         movaps  16(%rsp),%xmm1
  198         addq    $128+8,%rsp
  199         movups  %xmm0,(%rdx)
  200         movups  %xmm1,16(%rdx)
  201         .byte   0xf3,0xc3
  202 .size   padlock_sha256_blocks,.-padlock_sha256_blocks
  203 
  204 .globl  padlock_sha512_blocks
  205 .type   padlock_sha512_blocks,@function
  206 .align  16
  207 padlock_sha512_blocks:
  208         movq    %rdx,%rcx
  209         movq    %rdi,%rdx
  210         movups  (%rdi),%xmm0
  211         subq    $128+8,%rsp
  212         movups  16(%rdi),%xmm1
  213         movups  32(%rdi),%xmm2
  214         movups  48(%rdi),%xmm3
  215         movaps  %xmm0,(%rsp)
  216         movq    %rsp,%rdi
  217         movaps  %xmm1,16(%rsp)
  218         movaps  %xmm2,32(%rsp)
  219         movaps  %xmm3,48(%rsp)
  220 .byte   0xf3,0x0f,0xa6,0xe0
  221         movaps  (%rsp),%xmm0
  222         movaps  16(%rsp),%xmm1
  223         movaps  32(%rsp),%xmm2
  224         movaps  48(%rsp),%xmm3
  225         addq    $128+8,%rsp
  226         movups  %xmm0,(%rdx)
  227         movups  %xmm1,16(%rdx)
  228         movups  %xmm2,32(%rdx)
  229         movups  %xmm3,48(%rdx)
  230         .byte   0xf3,0xc3
  231 .size   padlock_sha512_blocks,.-padlock_sha512_blocks
  232 .globl  padlock_ecb_encrypt
  233 .type   padlock_ecb_encrypt,@function
  234 .align  16
  235 padlock_ecb_encrypt:
  236         pushq   %rbp
  237         pushq   %rbx
  238 
  239         xorl    %eax,%eax
  240         testq   $15,%rdx
  241         jnz     .Lecb_abort
  242         testq   $15,%rcx
  243         jnz     .Lecb_abort
  244         leaq    .Lpadlock_saved_context(%rip),%rax
  245         pushf
  246         cld
  247         call    _padlock_verify_ctx
  248         leaq    16(%rdx),%rdx
  249         xorl    %eax,%eax
  250         xorl    %ebx,%ebx
  251         testl   $32,(%rdx)
  252         jnz     .Lecb_aligned
  253         testq   $0x0f,%rdi
  254         setz    %al
  255         testq   $0x0f,%rsi
  256         setz    %bl
  257         testl   %ebx,%eax
  258         jnz     .Lecb_aligned
  259         negq    %rax
  260         movq    $512,%rbx
  261         notq    %rax
  262         leaq    (%rsp),%rbp
  263         cmpq    %rbx,%rcx
  264         cmovcq  %rcx,%rbx
  265         andq    %rbx,%rax
  266         movq    %rcx,%rbx
  267         negq    %rax
  268         andq    $512-1,%rbx
  269         leaq    (%rax,%rbp,1),%rsp
  270         movq    $512,%rax
  271         cmovzq  %rax,%rbx
  272         cmpq    %rbx,%rcx
  273         ja      .Lecb_loop
  274         movq    %rsi,%rax
  275         cmpq    %rsp,%rbp
  276         cmoveq  %rdi,%rax
  277         addq    %rcx,%rax
  278         negq    %rax
  279         andq    $0xfff,%rax
  280         cmpq    $128,%rax
  281         movq    $-128,%rax
  282         cmovaeq %rbx,%rax
  283         andq    %rax,%rbx
  284         jz      .Lecb_unaligned_tail
  285         jmp     .Lecb_loop
  286 .align  16
  287 .Lecb_loop:
  288         cmpq    %rcx,%rbx
  289         cmovaq  %rcx,%rbx
  290         movq    %rdi,%r8
  291         movq    %rsi,%r9
  292         movq    %rcx,%r10
  293         movq    %rbx,%rcx
  294         movq    %rbx,%r11
  295         testq   $0x0f,%rdi
  296         cmovnzq %rsp,%rdi
  297         testq   $0x0f,%rsi
  298         jz      .Lecb_inp_aligned
  299         shrq    $3,%rcx
  300 .byte   0xf3,0x48,0xa5
  301         subq    %rbx,%rdi
  302         movq    %rbx,%rcx
  303         movq    %rdi,%rsi
  304 .Lecb_inp_aligned:
  305         leaq    -16(%rdx),%rax
  306         leaq    16(%rdx),%rbx
  307         shrq    $4,%rcx
  308 .byte   0xf3,0x0f,0xa7,200
  309         movq    %r8,%rdi
  310         movq    %r11,%rbx
  311         testq   $0x0f,%rdi
  312         jz      .Lecb_out_aligned
  313         movq    %rbx,%rcx
  314         leaq    (%rsp),%rsi
  315         shrq    $3,%rcx
  316 .byte   0xf3,0x48,0xa5
  317         subq    %rbx,%rdi
  318 .Lecb_out_aligned:
  319         movq    %r9,%rsi
  320         movq    %r10,%rcx
  321         addq    %rbx,%rdi
  322         addq    %rbx,%rsi
  323         subq    %rbx,%rcx
  324         movq    $512,%rbx
  325         jz      .Lecb_break
  326         cmpq    %rbx,%rcx
  327         jae     .Lecb_loop
  328 .Lecb_unaligned_tail:
  329         xorl    %eax,%eax
  330         cmpq    %rsp,%rbp
  331         cmoveq  %rcx,%rax
  332         movq    %rdi,%r8
  333         movq    %rcx,%rbx
  334         subq    %rax,%rsp
  335         shrq    $3,%rcx
  336         leaq    (%rsp),%rdi
  337 .byte   0xf3,0x48,0xa5
  338         movq    %rsp,%rsi
  339         movq    %r8,%rdi
  340         movq    %rbx,%rcx
  341         jmp     .Lecb_loop
  342 .align  16
  343 .Lecb_break:
  344         cmpq    %rbp,%rsp
  345         je      .Lecb_done
  346 
  347         pxor    %xmm0,%xmm0
  348         leaq    (%rsp),%rax
  349 .Lecb_bzero:
  350         movaps  %xmm0,(%rax)
  351         leaq    16(%rax),%rax
  352         cmpq    %rax,%rbp
  353         ja      .Lecb_bzero
  354 
  355 .Lecb_done:
  356         leaq    (%rbp),%rsp
  357         jmp     .Lecb_exit
  358 
  359 .align  16
  360 .Lecb_aligned:
  361         leaq    (%rsi,%rcx,1),%rbp
  362         negq    %rbp
  363         andq    $0xfff,%rbp
  364         xorl    %eax,%eax
  365         cmpq    $128,%rbp
  366         movq    $128-1,%rbp
  367         cmovaeq %rax,%rbp
  368         andq    %rcx,%rbp
  369         subq    %rbp,%rcx
  370         jz      .Lecb_aligned_tail
  371         leaq    -16(%rdx),%rax
  372         leaq    16(%rdx),%rbx
  373         shrq    $4,%rcx
  374 .byte   0xf3,0x0f,0xa7,200
  375         testq   %rbp,%rbp
  376         jz      .Lecb_exit
  377 
  378 .Lecb_aligned_tail:
  379         movq    %rdi,%r8
  380         movq    %rbp,%rbx
  381         movq    %rbp,%rcx
  382         leaq    (%rsp),%rbp
  383         subq    %rcx,%rsp
  384         shrq    $3,%rcx
  385         leaq    (%rsp),%rdi
  386 .byte   0xf3,0x48,0xa5
  387         leaq    (%r8),%rdi
  388         leaq    (%rsp),%rsi
  389         movq    %rbx,%rcx
  390         jmp     .Lecb_loop
  391 .Lecb_exit:
  392         movl    $1,%eax
  393         leaq    8(%rsp),%rsp
  394 .Lecb_abort:
  395         popq    %rbx
  396         popq    %rbp
  397         .byte   0xf3,0xc3
  398 .size   padlock_ecb_encrypt,.-padlock_ecb_encrypt
  399 .globl  padlock_cbc_encrypt
  400 .type   padlock_cbc_encrypt,@function
  401 .align  16
  402 padlock_cbc_encrypt:
  403         pushq   %rbp
  404         pushq   %rbx
  405 
  406         xorl    %eax,%eax
  407         testq   $15,%rdx
  408         jnz     .Lcbc_abort
  409         testq   $15,%rcx
  410         jnz     .Lcbc_abort
  411         leaq    .Lpadlock_saved_context(%rip),%rax
  412         pushf
  413         cld
  414         call    _padlock_verify_ctx
  415         leaq    16(%rdx),%rdx
  416         xorl    %eax,%eax
  417         xorl    %ebx,%ebx
  418         testl   $32,(%rdx)
  419         jnz     .Lcbc_aligned
  420         testq   $0x0f,%rdi
  421         setz    %al
  422         testq   $0x0f,%rsi
  423         setz    %bl
  424         testl   %ebx,%eax
  425         jnz     .Lcbc_aligned
  426         negq    %rax
  427         movq    $512,%rbx
  428         notq    %rax
  429         leaq    (%rsp),%rbp
  430         cmpq    %rbx,%rcx
  431         cmovcq  %rcx,%rbx
  432         andq    %rbx,%rax
  433         movq    %rcx,%rbx
  434         negq    %rax
  435         andq    $512-1,%rbx
  436         leaq    (%rax,%rbp,1),%rsp
  437         movq    $512,%rax
  438         cmovzq  %rax,%rbx
  439         cmpq    %rbx,%rcx
  440         ja      .Lcbc_loop
  441         movq    %rsi,%rax
  442         cmpq    %rsp,%rbp
  443         cmoveq  %rdi,%rax
  444         addq    %rcx,%rax
  445         negq    %rax
  446         andq    $0xfff,%rax
  447         cmpq    $64,%rax
  448         movq    $-64,%rax
  449         cmovaeq %rbx,%rax
  450         andq    %rax,%rbx
  451         jz      .Lcbc_unaligned_tail
  452         jmp     .Lcbc_loop
  453 .align  16
  454 .Lcbc_loop:
  455         cmpq    %rcx,%rbx
  456         cmovaq  %rcx,%rbx
  457         movq    %rdi,%r8
  458         movq    %rsi,%r9
  459         movq    %rcx,%r10
  460         movq    %rbx,%rcx
  461         movq    %rbx,%r11
  462         testq   $0x0f,%rdi
  463         cmovnzq %rsp,%rdi
  464         testq   $0x0f,%rsi
  465         jz      .Lcbc_inp_aligned
  466         shrq    $3,%rcx
  467 .byte   0xf3,0x48,0xa5
  468         subq    %rbx,%rdi
  469         movq    %rbx,%rcx
  470         movq    %rdi,%rsi
  471 .Lcbc_inp_aligned:
  472         leaq    -16(%rdx),%rax
  473         leaq    16(%rdx),%rbx
  474         shrq    $4,%rcx
  475 .byte   0xf3,0x0f,0xa7,208
  476         movdqa  (%rax),%xmm0
  477         movdqa  %xmm0,-16(%rdx)
  478         movq    %r8,%rdi
  479         movq    %r11,%rbx
  480         testq   $0x0f,%rdi
  481         jz      .Lcbc_out_aligned
  482         movq    %rbx,%rcx
  483         leaq    (%rsp),%rsi
  484         shrq    $3,%rcx
  485 .byte   0xf3,0x48,0xa5
  486         subq    %rbx,%rdi
  487 .Lcbc_out_aligned:
  488         movq    %r9,%rsi
  489         movq    %r10,%rcx
  490         addq    %rbx,%rdi
  491         addq    %rbx,%rsi
  492         subq    %rbx,%rcx
  493         movq    $512,%rbx
  494         jz      .Lcbc_break
  495         cmpq    %rbx,%rcx
  496         jae     .Lcbc_loop
  497 .Lcbc_unaligned_tail:
  498         xorl    %eax,%eax
  499         cmpq    %rsp,%rbp
  500         cmoveq  %rcx,%rax
  501         movq    %rdi,%r8
  502         movq    %rcx,%rbx
  503         subq    %rax,%rsp
  504         shrq    $3,%rcx
  505         leaq    (%rsp),%rdi
  506 .byte   0xf3,0x48,0xa5
  507         movq    %rsp,%rsi
  508         movq    %r8,%rdi
  509         movq    %rbx,%rcx
  510         jmp     .Lcbc_loop
  511 .align  16
  512 .Lcbc_break:
  513         cmpq    %rbp,%rsp
  514         je      .Lcbc_done
  515 
  516         pxor    %xmm0,%xmm0
  517         leaq    (%rsp),%rax
  518 .Lcbc_bzero:
  519         movaps  %xmm0,(%rax)
  520         leaq    16(%rax),%rax
  521         cmpq    %rax,%rbp
  522         ja      .Lcbc_bzero
  523 
  524 .Lcbc_done:
  525         leaq    (%rbp),%rsp
  526         jmp     .Lcbc_exit
  527 
  528 .align  16
  529 .Lcbc_aligned:
  530         leaq    (%rsi,%rcx,1),%rbp
  531         negq    %rbp
  532         andq    $0xfff,%rbp
  533         xorl    %eax,%eax
  534         cmpq    $64,%rbp
  535         movq    $64-1,%rbp
  536         cmovaeq %rax,%rbp
  537         andq    %rcx,%rbp
  538         subq    %rbp,%rcx
  539         jz      .Lcbc_aligned_tail
  540         leaq    -16(%rdx),%rax
  541         leaq    16(%rdx),%rbx
  542         shrq    $4,%rcx
  543 .byte   0xf3,0x0f,0xa7,208
  544         movdqa  (%rax),%xmm0
  545         movdqa  %xmm0,-16(%rdx)
  546         testq   %rbp,%rbp
  547         jz      .Lcbc_exit
  548 
  549 .Lcbc_aligned_tail:
  550         movq    %rdi,%r8
  551         movq    %rbp,%rbx
  552         movq    %rbp,%rcx
  553         leaq    (%rsp),%rbp
  554         subq    %rcx,%rsp
  555         shrq    $3,%rcx
  556         leaq    (%rsp),%rdi
  557 .byte   0xf3,0x48,0xa5
  558         leaq    (%r8),%rdi
  559         leaq    (%rsp),%rsi
  560         movq    %rbx,%rcx
  561         jmp     .Lcbc_loop
  562 .Lcbc_exit:
  563         movl    $1,%eax
  564         leaq    8(%rsp),%rsp
  565 .Lcbc_abort:
  566         popq    %rbx
  567         popq    %rbp
  568         .byte   0xf3,0xc3
  569 .size   padlock_cbc_encrypt,.-padlock_cbc_encrypt
  570 .globl  padlock_cfb_encrypt
  571 .type   padlock_cfb_encrypt,@function
  572 .align  16
  573 padlock_cfb_encrypt:
  574         pushq   %rbp
  575         pushq   %rbx
  576 
  577         xorl    %eax,%eax
  578         testq   $15,%rdx
  579         jnz     .Lcfb_abort
  580         testq   $15,%rcx
  581         jnz     .Lcfb_abort
  582         leaq    .Lpadlock_saved_context(%rip),%rax
  583         pushf
  584         cld
  585         call    _padlock_verify_ctx
  586         leaq    16(%rdx),%rdx
  587         xorl    %eax,%eax
  588         xorl    %ebx,%ebx
  589         testl   $32,(%rdx)
  590         jnz     .Lcfb_aligned
  591         testq   $0x0f,%rdi
  592         setz    %al
  593         testq   $0x0f,%rsi
  594         setz    %bl
  595         testl   %ebx,%eax
  596         jnz     .Lcfb_aligned
  597         negq    %rax
  598         movq    $512,%rbx
  599         notq    %rax
  600         leaq    (%rsp),%rbp
  601         cmpq    %rbx,%rcx
  602         cmovcq  %rcx,%rbx
  603         andq    %rbx,%rax
  604         movq    %rcx,%rbx
  605         negq    %rax
  606         andq    $512-1,%rbx
  607         leaq    (%rax,%rbp,1),%rsp
  608         movq    $512,%rax
  609         cmovzq  %rax,%rbx
  610         jmp     .Lcfb_loop
  611 .align  16
  612 .Lcfb_loop:
  613         cmpq    %rcx,%rbx
  614         cmovaq  %rcx,%rbx
  615         movq    %rdi,%r8
  616         movq    %rsi,%r9
  617         movq    %rcx,%r10
  618         movq    %rbx,%rcx
  619         movq    %rbx,%r11
  620         testq   $0x0f,%rdi
  621         cmovnzq %rsp,%rdi
  622         testq   $0x0f,%rsi
  623         jz      .Lcfb_inp_aligned
  624         shrq    $3,%rcx
  625 .byte   0xf3,0x48,0xa5
  626         subq    %rbx,%rdi
  627         movq    %rbx,%rcx
  628         movq    %rdi,%rsi
  629 .Lcfb_inp_aligned:
  630         leaq    -16(%rdx),%rax
  631         leaq    16(%rdx),%rbx
  632         shrq    $4,%rcx
  633 .byte   0xf3,0x0f,0xa7,224
  634         movdqa  (%rax),%xmm0
  635         movdqa  %xmm0,-16(%rdx)
  636         movq    %r8,%rdi
  637         movq    %r11,%rbx
  638         testq   $0x0f,%rdi
  639         jz      .Lcfb_out_aligned
  640         movq    %rbx,%rcx
  641         leaq    (%rsp),%rsi
  642         shrq    $3,%rcx
  643 .byte   0xf3,0x48,0xa5
  644         subq    %rbx,%rdi
  645 .Lcfb_out_aligned:
  646         movq    %r9,%rsi
  647         movq    %r10,%rcx
  648         addq    %rbx,%rdi
  649         addq    %rbx,%rsi
  650         subq    %rbx,%rcx
  651         movq    $512,%rbx
  652         jnz     .Lcfb_loop
  653         cmpq    %rbp,%rsp
  654         je      .Lcfb_done
  655 
  656         pxor    %xmm0,%xmm0
  657         leaq    (%rsp),%rax
  658 .Lcfb_bzero:
  659         movaps  %xmm0,(%rax)
  660         leaq    16(%rax),%rax
  661         cmpq    %rax,%rbp
  662         ja      .Lcfb_bzero
  663 
  664 .Lcfb_done:
  665         leaq    (%rbp),%rsp
  666         jmp     .Lcfb_exit
  667 
  668 .align  16
  669 .Lcfb_aligned:
  670         leaq    -16(%rdx),%rax
  671         leaq    16(%rdx),%rbx
  672         shrq    $4,%rcx
  673 .byte   0xf3,0x0f,0xa7,224
  674         movdqa  (%rax),%xmm0
  675         movdqa  %xmm0,-16(%rdx)
  676 .Lcfb_exit:
  677         movl    $1,%eax
  678         leaq    8(%rsp),%rsp
  679 .Lcfb_abort:
  680         popq    %rbx
  681         popq    %rbp
  682         .byte   0xf3,0xc3
  683 .size   padlock_cfb_encrypt,.-padlock_cfb_encrypt
  684 .globl  padlock_ofb_encrypt
  685 .type   padlock_ofb_encrypt,@function
  686 .align  16
  687 padlock_ofb_encrypt:
  688         pushq   %rbp
  689         pushq   %rbx
  690 
  691         xorl    %eax,%eax
  692         testq   $15,%rdx
  693         jnz     .Lofb_abort
  694         testq   $15,%rcx
  695         jnz     .Lofb_abort
  696         leaq    .Lpadlock_saved_context(%rip),%rax
  697         pushf
  698         cld
  699         call    _padlock_verify_ctx
  700         leaq    16(%rdx),%rdx
  701         xorl    %eax,%eax
  702         xorl    %ebx,%ebx
  703         testl   $32,(%rdx)
  704         jnz     .Lofb_aligned
  705         testq   $0x0f,%rdi
  706         setz    %al
  707         testq   $0x0f,%rsi
  708         setz    %bl
  709         testl   %ebx,%eax
  710         jnz     .Lofb_aligned
  711         negq    %rax
  712         movq    $512,%rbx
  713         notq    %rax
  714         leaq    (%rsp),%rbp
  715         cmpq    %rbx,%rcx
  716         cmovcq  %rcx,%rbx
  717         andq    %rbx,%rax
  718         movq    %rcx,%rbx
  719         negq    %rax
  720         andq    $512-1,%rbx
  721         leaq    (%rax,%rbp,1),%rsp
  722         movq    $512,%rax
  723         cmovzq  %rax,%rbx
  724         jmp     .Lofb_loop
  725 .align  16
  726 .Lofb_loop:
  727         cmpq    %rcx,%rbx
  728         cmovaq  %rcx,%rbx
  729         movq    %rdi,%r8
  730         movq    %rsi,%r9
  731         movq    %rcx,%r10
  732         movq    %rbx,%rcx
  733         movq    %rbx,%r11
  734         testq   $0x0f,%rdi
  735         cmovnzq %rsp,%rdi
  736         testq   $0x0f,%rsi
  737         jz      .Lofb_inp_aligned
  738         shrq    $3,%rcx
  739 .byte   0xf3,0x48,0xa5
  740         subq    %rbx,%rdi
  741         movq    %rbx,%rcx
  742         movq    %rdi,%rsi
  743 .Lofb_inp_aligned:
  744         leaq    -16(%rdx),%rax
  745         leaq    16(%rdx),%rbx
  746         shrq    $4,%rcx
  747 .byte   0xf3,0x0f,0xa7,232
  748         movdqa  (%rax),%xmm0
  749         movdqa  %xmm0,-16(%rdx)
  750         movq    %r8,%rdi
  751         movq    %r11,%rbx
  752         testq   $0x0f,%rdi
  753         jz      .Lofb_out_aligned
  754         movq    %rbx,%rcx
  755         leaq    (%rsp),%rsi
  756         shrq    $3,%rcx
  757 .byte   0xf3,0x48,0xa5
  758         subq    %rbx,%rdi
  759 .Lofb_out_aligned:
  760         movq    %r9,%rsi
  761         movq    %r10,%rcx
  762         addq    %rbx,%rdi
  763         addq    %rbx,%rsi
  764         subq    %rbx,%rcx
  765         movq    $512,%rbx
  766         jnz     .Lofb_loop
  767         cmpq    %rbp,%rsp
  768         je      .Lofb_done
  769 
  770         pxor    %xmm0,%xmm0
  771         leaq    (%rsp),%rax
  772 .Lofb_bzero:
  773         movaps  %xmm0,(%rax)
  774         leaq    16(%rax),%rax
  775         cmpq    %rax,%rbp
  776         ja      .Lofb_bzero
  777 
  778 .Lofb_done:
  779         leaq    (%rbp),%rsp
  780         jmp     .Lofb_exit
  781 
  782 .align  16
  783 .Lofb_aligned:
  784         leaq    -16(%rdx),%rax
  785         leaq    16(%rdx),%rbx
  786         shrq    $4,%rcx
  787 .byte   0xf3,0x0f,0xa7,232
  788         movdqa  (%rax),%xmm0
  789         movdqa  %xmm0,-16(%rdx)
  790 .Lofb_exit:
  791         movl    $1,%eax
  792         leaq    8(%rsp),%rsp
  793 .Lofb_abort:
  794         popq    %rbx
  795         popq    %rbp
  796         .byte   0xf3,0xc3
  797 .size   padlock_ofb_encrypt,.-padlock_ofb_encrypt
  798 .globl  padlock_ctr32_encrypt
  799 .type   padlock_ctr32_encrypt,@function
  800 .align  16
  801 padlock_ctr32_encrypt:
  802         pushq   %rbp
  803         pushq   %rbx
  804 
  805         xorl    %eax,%eax
  806         testq   $15,%rdx
  807         jnz     .Lctr32_abort
  808         testq   $15,%rcx
  809         jnz     .Lctr32_abort
  810         leaq    .Lpadlock_saved_context(%rip),%rax
  811         pushf
  812         cld
  813         call    _padlock_verify_ctx
  814         leaq    16(%rdx),%rdx
  815         xorl    %eax,%eax
  816         xorl    %ebx,%ebx
  817         testl   $32,(%rdx)
  818         jnz     .Lctr32_aligned
  819         testq   $0x0f,%rdi
  820         setz    %al
  821         testq   $0x0f,%rsi
  822         setz    %bl
  823         testl   %ebx,%eax
  824         jnz     .Lctr32_aligned
  825         negq    %rax
  826         movq    $512,%rbx
  827         notq    %rax
  828         leaq    (%rsp),%rbp
  829         cmpq    %rbx,%rcx
  830         cmovcq  %rcx,%rbx
  831         andq    %rbx,%rax
  832         movq    %rcx,%rbx
  833         negq    %rax
  834         andq    $512-1,%rbx
  835         leaq    (%rax,%rbp,1),%rsp
  836         movq    $512,%rax
  837         cmovzq  %rax,%rbx
  838 .Lctr32_reenter:
  839         movl    -4(%rdx),%eax
  840         bswapl  %eax
  841         negl    %eax
  842         andl    $31,%eax
  843         movq    $512,%rbx
  844         shll    $4,%eax
  845         cmovzq  %rbx,%rax
  846         cmpq    %rax,%rcx
  847         cmovaq  %rax,%rbx
  848         cmovbeq %rcx,%rbx
  849         cmpq    %rbx,%rcx
  850         ja      .Lctr32_loop
  851         movq    %rsi,%rax
  852         cmpq    %rsp,%rbp
  853         cmoveq  %rdi,%rax
  854         addq    %rcx,%rax
  855         negq    %rax
  856         andq    $0xfff,%rax
  857         cmpq    $32,%rax
  858         movq    $-32,%rax
  859         cmovaeq %rbx,%rax
  860         andq    %rax,%rbx
  861         jz      .Lctr32_unaligned_tail
  862         jmp     .Lctr32_loop
  863 .align  16
  864 .Lctr32_loop:
  865         cmpq    %rcx,%rbx
  866         cmovaq  %rcx,%rbx
  867         movq    %rdi,%r8
  868         movq    %rsi,%r9
  869         movq    %rcx,%r10
  870         movq    %rbx,%rcx
  871         movq    %rbx,%r11
  872         testq   $0x0f,%rdi
  873         cmovnzq %rsp,%rdi
  874         testq   $0x0f,%rsi
  875         jz      .Lctr32_inp_aligned
  876         shrq    $3,%rcx
  877 .byte   0xf3,0x48,0xa5
  878         subq    %rbx,%rdi
  879         movq    %rbx,%rcx
  880         movq    %rdi,%rsi
  881 .Lctr32_inp_aligned:
  882         leaq    -16(%rdx),%rax
  883         leaq    16(%rdx),%rbx
  884         shrq    $4,%rcx
  885 .byte   0xf3,0x0f,0xa7,216
  886         movl    -4(%rdx),%eax
  887         testl   $0xffff0000,%eax
  888         jnz     .Lctr32_no_carry
  889         bswapl  %eax
  890         addl    $0x10000,%eax
  891         bswapl  %eax
  892         movl    %eax,-4(%rdx)
  893 .Lctr32_no_carry:
  894         movq    %r8,%rdi
  895         movq    %r11,%rbx
  896         testq   $0x0f,%rdi
  897         jz      .Lctr32_out_aligned
  898         movq    %rbx,%rcx
  899         leaq    (%rsp),%rsi
  900         shrq    $3,%rcx
  901 .byte   0xf3,0x48,0xa5
  902         subq    %rbx,%rdi
  903 .Lctr32_out_aligned:
  904         movq    %r9,%rsi
  905         movq    %r10,%rcx
  906         addq    %rbx,%rdi
  907         addq    %rbx,%rsi
  908         subq    %rbx,%rcx
  909         movq    $512,%rbx
  910         jz      .Lctr32_break
  911         cmpq    %rbx,%rcx
  912         jae     .Lctr32_loop
  913         movq    %rcx,%rbx
  914         movq    %rsi,%rax
  915         cmpq    %rsp,%rbp
  916         cmoveq  %rdi,%rax
  917         addq    %rcx,%rax
  918         negq    %rax
  919         andq    $0xfff,%rax
  920         cmpq    $32,%rax
  921         movq    $-32,%rax
  922         cmovaeq %rbx,%rax
  923         andq    %rax,%rbx
  924         jnz     .Lctr32_loop
  925 .Lctr32_unaligned_tail:
  926         xorl    %eax,%eax
  927         cmpq    %rsp,%rbp
  928         cmoveq  %rcx,%rax
  929         movq    %rdi,%r8
  930         movq    %rcx,%rbx
  931         subq    %rax,%rsp
  932         shrq    $3,%rcx
  933         leaq    (%rsp),%rdi
  934 .byte   0xf3,0x48,0xa5
  935         movq    %rsp,%rsi
  936         movq    %r8,%rdi
  937         movq    %rbx,%rcx
  938         jmp     .Lctr32_loop
  939 .align  16
  940 .Lctr32_break:
  941         cmpq    %rbp,%rsp
  942         je      .Lctr32_done
  943 
  944         pxor    %xmm0,%xmm0
  945         leaq    (%rsp),%rax
  946 .Lctr32_bzero:
  947         movaps  %xmm0,(%rax)
  948         leaq    16(%rax),%rax
  949         cmpq    %rax,%rbp
  950         ja      .Lctr32_bzero
  951 
  952 .Lctr32_done:
  953         leaq    (%rbp),%rsp
  954         jmp     .Lctr32_exit
  955 
  956 .align  16
  957 .Lctr32_aligned:
  958         movl    -4(%rdx),%eax
  959         bswapl  %eax
  960         negl    %eax
  961         andl    $0xffff,%eax
  962         movq    $1048576,%rbx
  963         shll    $4,%eax
  964         cmovzq  %rbx,%rax
  965         cmpq    %rax,%rcx
  966         cmovaq  %rax,%rbx
  967         cmovbeq %rcx,%rbx
  968         jbe     .Lctr32_aligned_skip
  969 
  970 .Lctr32_aligned_loop:
  971         movq    %rcx,%r10
  972         movq    %rbx,%rcx
  973         movq    %rbx,%r11
  974 
  975         leaq    -16(%rdx),%rax
  976         leaq    16(%rdx),%rbx
  977         shrq    $4,%rcx
  978 .byte   0xf3,0x0f,0xa7,216
  979 
  980         movl    -4(%rdx),%eax
  981         bswapl  %eax
  982         addl    $0x10000,%eax
  983         bswapl  %eax
  984         movl    %eax,-4(%rdx)
  985 
  986         movq    %r10,%rcx
  987         subq    %r11,%rcx
  988         movq    $1048576,%rbx
  989         jz      .Lctr32_exit
  990         cmpq    %rbx,%rcx
  991         jae     .Lctr32_aligned_loop
  992 
  993 .Lctr32_aligned_skip:
  994         leaq    (%rsi,%rcx,1),%rbp
  995         negq    %rbp
  996         andq    $0xfff,%rbp
  997         xorl    %eax,%eax
  998         cmpq    $32,%rbp
  999         movq    $32-1,%rbp
 1000         cmovaeq %rax,%rbp
 1001         andq    %rcx,%rbp
 1002         subq    %rbp,%rcx
 1003         jz      .Lctr32_aligned_tail
 1004         leaq    -16(%rdx),%rax
 1005         leaq    16(%rdx),%rbx
 1006         shrq    $4,%rcx
 1007 .byte   0xf3,0x0f,0xa7,216
 1008         testq   %rbp,%rbp
 1009         jz      .Lctr32_exit
 1010 
 1011 .Lctr32_aligned_tail:
 1012         movq    %rdi,%r8
 1013         movq    %rbp,%rbx
 1014         movq    %rbp,%rcx
 1015         leaq    (%rsp),%rbp
 1016         subq    %rcx,%rsp
 1017         shrq    $3,%rcx
 1018         leaq    (%rsp),%rdi
 1019 .byte   0xf3,0x48,0xa5
 1020         leaq    (%r8),%rdi
 1021         leaq    (%rsp),%rsi
 1022         movq    %rbx,%rcx
 1023         jmp     .Lctr32_loop
 1024 .Lctr32_exit:
 1025         movl    $1,%eax
 1026         leaq    8(%rsp),%rsp
 1027 .Lctr32_abort:
 1028         popq    %rbx
 1029         popq    %rbp
 1030         .byte   0xf3,0xc3
 1031 .size   padlock_ctr32_encrypt,.-padlock_ctr32_encrypt
 1032 .byte   86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,95,54,52,32,109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
 1033 .align  16
 1034 .data   
 1035 .align  8
 1036 .Lpadlock_saved_context:
 1037 .quad   0

Cache object: a101585941e3cbe4cb5bffcc4862ae6d


[ 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.