1 # Copyright (c) 2011-2013, Andy Polyakov <appro@openssl.org>
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
8 # * Redistributions of source code must retain copyright notices,
9 # this list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following
13 # disclaimer in the documentation and/or other materials
14 # provided with the distribution.
16 # * Neither the name of the Andy Polyakov nor the names of its
17 # copyright holder and contributors may be used to endorse or
18 # promote products derived from this software without specific
19 # prior written permission.
21 # ALTERNATIVELY, provided that this notice is retained in full, this
22 # product may be distributed under the terms of the GNU General Public
23 # License (GPL), in which case the provisions of the GPL apply INSTEAD OF
26 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
27 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 # *** This file is auto-generated ***
40 .file "devel/perlasm/e_padlock-x86.s"
42 .globl _padlock_capability
45 L_padlock_capability_begin:
91 .globl _padlock_key_bswap
94 L_padlock_key_bswap_begin:
105 .globl _padlock_verify_context
107 _padlock_verify_context:
108 L_padlock_verify_context_begin:
110 leal Lpadlock_saved_context-L002verify_pic_point,%eax
112 call __padlock_verify_ctx
113 L002verify_pic_point:
117 __padlock_verify_ctx:
128 .globl _padlock_reload_key
131 L_padlock_reload_key_begin:
135 .globl _padlock_aes_block
138 L_padlock_aes_block_begin:
153 .globl _padlock_ecb_encrypt
155 _padlock_ecb_encrypt:
156 L_padlock_ecb_encrypt_begin:
169 leal Lpadlock_saved_context-L005ecb_pic_point,%eax
172 call __padlock_verify_ctx
195 leal (%eax,%ebp,1),%esp
214 jz L008ecb_unaligned_tail
226 jz L009ecb_inp_aligned
240 jz L010ecb_out_aligned
256 L008ecb_unaligned_tail:
287 leal (%esi,%ecx,1),%ebp
296 jz L015ecb_aligned_tail
303 L015ecb_aligned_tail:
330 .globl _padlock_cbc_encrypt
332 _padlock_cbc_encrypt:
333 L_padlock_cbc_encrypt_begin:
346 leal Lpadlock_saved_context-L017cbc_pic_point,%eax
349 call __padlock_verify_ctx
372 leal (%eax,%ebp,1),%esp
391 jz L020cbc_unaligned_tail
403 jz L021cbc_inp_aligned
415 movaps %xmm0,-16(%edx)
419 jz L022cbc_out_aligned
435 L020cbc_unaligned_tail:
466 leal (%esi,%ecx,1),%ebp
475 jz L027cbc_aligned_tail
481 movaps %xmm0,-16(%edx)
484 L027cbc_aligned_tail:
511 .globl _padlock_cfb_encrypt
513 _padlock_cfb_encrypt:
514 L_padlock_cfb_encrypt_begin:
527 leal Lpadlock_saved_context-L029cfb_pic_point,%eax
530 call __padlock_verify_ctx
553 leal (%eax,%ebp,1),%esp
571 jz L032cfb_inp_aligned
583 movaps %xmm0,-16(%edx)
587 jz L033cfb_out_aligned
621 movaps %xmm0,-16(%edx)
631 .globl _padlock_ofb_encrypt
633 _padlock_ofb_encrypt:
634 L_padlock_ofb_encrypt_begin:
647 leal Lpadlock_saved_context-L038ofb_pic_point,%eax
650 call __padlock_verify_ctx
673 leal (%eax,%ebp,1),%esp
691 jz L041ofb_inp_aligned
703 movaps %xmm0,-16(%edx)
707 jz L042ofb_out_aligned
741 movaps %xmm0,-16(%edx)
751 .globl _padlock_ctr32_encrypt
753 _padlock_ctr32_encrypt:
754 L_padlock_ctr32_encrypt_begin:
767 leal Lpadlock_saved_context-L047ctr32_pic_point,%eax
770 call __padlock_verify_ctx
784 leal (%eax,%ebp,1),%esp
803 movl %ecx,12(%esp,%edi,1)
805 movq %mm0,(%esp,%edi,1)
807 movl %eax,8(%esp,%edi,1)
825 movups (%esi,%ecx,1),%xmm1
827 pxor -16(%esp,%ecx,1),%xmm1
828 movups %xmm1,-16(%edi,%ecx,1)
856 .globl _padlock_xstore
859 L_padlock_xstore_begin:
867 __win32_segv_handler:
871 cmpl $3221225477,(%edx)
877 .globl _padlock_sha1_oneshot
879 _padlock_sha1_oneshot:
880 L_padlock_sha1_oneshot_begin:
906 .globl _padlock_sha1_blocks
908 _padlock_sha1_blocks:
909 L_padlock_sha1_blocks_begin:
934 .globl _padlock_sha256_oneshot
936 _padlock_sha256_oneshot:
937 L_padlock_sha256_oneshot_begin:
948 movups 16(%edi),%xmm1
951 movaps %xmm1,16(%esp)
955 movaps 16(%esp),%xmm1
959 movups %xmm1,16(%edi)
963 .globl _padlock_sha256_blocks
965 _padlock_sha256_blocks:
966 L_padlock_sha256_blocks_begin:
976 movups 16(%edi),%xmm1
979 movaps %xmm1,16(%esp)
983 movaps 16(%esp),%xmm1
987 movups %xmm1,16(%edi)
991 .globl _padlock_sha512_blocks
993 _padlock_sha512_blocks:
994 L_padlock_sha512_blocks_begin:
1004 movups 16(%edi),%xmm1
1005 movups 32(%edi),%xmm2
1006 movups 48(%edi),%xmm3
1009 movaps %xmm1,16(%esp)
1010 movaps %xmm2,32(%esp)
1011 movaps %xmm3,48(%esp)
1012 .byte 243,15,166,224
1014 movaps 16(%esp),%xmm1
1015 movaps 32(%esp),%xmm2
1016 movaps 48(%esp),%xmm3
1020 movups %xmm1,16(%edi)
1021 movups %xmm2,32(%edi)
1022 movups %xmm3,48(%edi)
1026 .byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
1027 .byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
1028 .byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
1029 .byte 110,115,115,108,46,111,114,103,62,0
1033 Lpadlock_saved_context:
1036 .section .note.GNU-stack,"",%progbits