1 # Copyright (c) 2011-2012, 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
43 .type padlock_capability,@function
46 .L_padlock_capability_begin:
92 .size padlock_capability,.-.L_padlock_capability_begin
93 .globl padlock_key_bswap
94 .type padlock_key_bswap,@function
97 .L_padlock_key_bswap_begin:
108 .size padlock_key_bswap,.-.L_padlock_key_bswap_begin
109 .globl padlock_verify_context
110 .type padlock_verify_context,@function
112 padlock_verify_context:
113 .L_padlock_verify_context_begin:
115 leal .Lpadlock_saved_context-.L002verify_pic_point,%eax
117 call _padlock_verify_ctx
118 .L002verify_pic_point:
121 .size padlock_verify_context,.-.L_padlock_verify_context_begin
122 .type _padlock_verify_ctx,@function
135 .size _padlock_verify_ctx,.-_padlock_verify_ctx
136 .globl padlock_reload_key
137 .type padlock_reload_key,@function
140 .L_padlock_reload_key_begin:
144 .size padlock_reload_key,.-.L_padlock_reload_key_begin
145 .globl padlock_aes_block
146 .type padlock_aes_block,@function
149 .L_padlock_aes_block_begin:
164 .size padlock_aes_block,.-.L_padlock_aes_block_begin
165 .globl padlock_ecb_encrypt
166 .type padlock_ecb_encrypt,@function
169 .L_padlock_ecb_encrypt_begin:
182 leal .Lpadlock_saved_context-.L005ecb_pic_point,%eax
185 call _padlock_verify_ctx
208 leal (%eax,%ebp,1),%esp
227 jz .L008ecb_unaligned_tail
239 jz .L009ecb_inp_aligned
245 .L009ecb_inp_aligned:
253 jz .L010ecb_out_aligned
259 .L010ecb_out_aligned:
269 .L008ecb_unaligned_tail:
300 leal (%esi,%ecx,1),%ebp
309 jz .L015ecb_aligned_tail
316 .L015ecb_aligned_tail:
343 .size padlock_ecb_encrypt,.-.L_padlock_ecb_encrypt_begin
344 .globl padlock_cbc_encrypt
345 .type padlock_cbc_encrypt,@function
348 .L_padlock_cbc_encrypt_begin:
361 leal .Lpadlock_saved_context-.L017cbc_pic_point,%eax
364 call _padlock_verify_ctx
387 leal (%eax,%ebp,1),%esp
406 jz .L020cbc_unaligned_tail
418 jz .L021cbc_inp_aligned
424 .L021cbc_inp_aligned:
430 movaps %xmm0,-16(%edx)
434 jz .L022cbc_out_aligned
440 .L022cbc_out_aligned:
450 .L020cbc_unaligned_tail:
481 leal (%esi,%ecx,1),%ebp
490 jz .L027cbc_aligned_tail
496 movaps %xmm0,-16(%edx)
499 .L027cbc_aligned_tail:
526 .size padlock_cbc_encrypt,.-.L_padlock_cbc_encrypt_begin
527 .globl padlock_cfb_encrypt
528 .type padlock_cfb_encrypt,@function
531 .L_padlock_cfb_encrypt_begin:
544 leal .Lpadlock_saved_context-.L029cfb_pic_point,%eax
547 call _padlock_verify_ctx
570 leal (%eax,%ebp,1),%esp
588 jz .L032cfb_inp_aligned
594 .L032cfb_inp_aligned:
600 movaps %xmm0,-16(%edx)
604 jz .L033cfb_out_aligned
610 .L033cfb_out_aligned:
638 movaps %xmm0,-16(%edx)
648 .size padlock_cfb_encrypt,.-.L_padlock_cfb_encrypt_begin
649 .globl padlock_ofb_encrypt
650 .type padlock_ofb_encrypt,@function
653 .L_padlock_ofb_encrypt_begin:
666 leal .Lpadlock_saved_context-.L038ofb_pic_point,%eax
669 call _padlock_verify_ctx
692 leal (%eax,%ebp,1),%esp
710 jz .L041ofb_inp_aligned
716 .L041ofb_inp_aligned:
722 movaps %xmm0,-16(%edx)
726 jz .L042ofb_out_aligned
732 .L042ofb_out_aligned:
760 movaps %xmm0,-16(%edx)
770 .size padlock_ofb_encrypt,.-.L_padlock_ofb_encrypt_begin
771 .globl padlock_ctr32_encrypt
772 .type padlock_ctr32_encrypt,@function
774 padlock_ctr32_encrypt:
775 .L_padlock_ctr32_encrypt_begin:
788 leal .Lpadlock_saved_context-.L047ctr32_pic_point,%eax
791 call _padlock_verify_ctx
792 .L047ctr32_pic_point:
805 leal (%eax,%ebp,1),%esp
824 movl %ecx,12(%esp,%edi,1)
826 movq %mm0,(%esp,%edi,1)
828 movl %eax,8(%esp,%edi,1)
832 jb .L049ctr32_prepare
846 movups (%esi,%ecx,1),%xmm1
848 pxor -16(%esp,%ecx,1),%xmm1
849 movups %xmm1,-16(%edi,%ecx,1)
877 .size padlock_ctr32_encrypt,.-.L_padlock_ctr32_encrypt_begin
878 .globl padlock_xstore
879 .type padlock_xstore,@function
882 .L_padlock_xstore_begin:
889 .size padlock_xstore,.-.L_padlock_xstore_begin
890 .type _win32_segv_handler,@function
896 cmpl $3221225477,(%edx)
902 .size _win32_segv_handler,.-_win32_segv_handler
903 .globl padlock_sha1_oneshot
904 .type padlock_sha1_oneshot,@function
906 padlock_sha1_oneshot:
907 .L_padlock_sha1_oneshot_begin:
933 .size padlock_sha1_oneshot,.-.L_padlock_sha1_oneshot_begin
934 .globl padlock_sha1_blocks
935 .type padlock_sha1_blocks,@function
938 .L_padlock_sha1_blocks_begin:
963 .size padlock_sha1_blocks,.-.L_padlock_sha1_blocks_begin
964 .globl padlock_sha256_oneshot
965 .type padlock_sha256_oneshot,@function
967 padlock_sha256_oneshot:
968 .L_padlock_sha256_oneshot_begin:
979 movups 16(%edi),%xmm1
982 movaps %xmm1,16(%esp)
986 movaps 16(%esp),%xmm1
990 movups %xmm1,16(%edi)
994 .size padlock_sha256_oneshot,.-.L_padlock_sha256_oneshot_begin
995 .globl padlock_sha256_blocks
996 .type padlock_sha256_blocks,@function
998 padlock_sha256_blocks:
999 .L_padlock_sha256_blocks_begin:
1009 movups 16(%edi),%xmm1
1012 movaps %xmm1,16(%esp)
1014 .byte 243,15,166,208
1016 movaps 16(%esp),%xmm1
1020 movups %xmm1,16(%edi)
1024 .size padlock_sha256_blocks,.-.L_padlock_sha256_blocks_begin
1025 .globl padlock_sha512_blocks
1026 .type padlock_sha512_blocks,@function
1028 padlock_sha512_blocks:
1029 .L_padlock_sha512_blocks_begin:
1039 movups 16(%edi),%xmm1
1040 movups 32(%edi),%xmm2
1041 movups 48(%edi),%xmm3
1044 movaps %xmm1,16(%esp)
1045 movaps %xmm2,32(%esp)
1046 movaps %xmm3,48(%esp)
1047 .byte 243,15,166,224
1049 movaps 16(%esp),%xmm1
1050 movaps 32(%esp),%xmm2
1051 movaps 48(%esp),%xmm3
1055 movups %xmm1,16(%edi)
1056 movups %xmm2,32(%edi)
1057 movups %xmm3,48(%edi)
1061 .size padlock_sha512_blocks,.-.L_padlock_sha512_blocks_begin
1062 .byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
1063 .byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
1064 .byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
1065 .byte 110,115,115,108,46,111,114,103,62,0
1069 .Lpadlock_saved_context:
1072 .section .note.GNU-stack,"",%progbits