1 # Copyright (c) 2011, Andy Polyakov by <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 .file "devel/perlasm/e_padlock-x86.s"
40 .globl padlock_capability
41 .type padlock_capability,@function
44 .L_padlock_capability_begin:
90 .size padlock_capability,.-.L_padlock_capability_begin
91 .globl padlock_key_bswap
92 .type padlock_key_bswap,@function
95 .L_padlock_key_bswap_begin:
106 .size padlock_key_bswap,.-.L_padlock_key_bswap_begin
107 .globl padlock_verify_context
108 .type padlock_verify_context,@function
110 padlock_verify_context:
111 .L_padlock_verify_context_begin:
113 leal .Lpadlock_saved_context-.L002verify_pic_point,%eax
115 call _padlock_verify_ctx
116 .L002verify_pic_point:
119 .size padlock_verify_context,.-.L_padlock_verify_context_begin
120 .type _padlock_verify_ctx,@function
133 .size _padlock_verify_ctx,.-_padlock_verify_ctx
134 .globl padlock_reload_key
135 .type padlock_reload_key,@function
138 .L_padlock_reload_key_begin:
142 .size padlock_reload_key,.-.L_padlock_reload_key_begin
143 .globl padlock_aes_block
144 .type padlock_aes_block,@function
147 .L_padlock_aes_block_begin:
162 .size padlock_aes_block,.-.L_padlock_aes_block_begin
163 .globl padlock_ecb_encrypt
164 .type padlock_ecb_encrypt,@function
167 .L_padlock_ecb_encrypt_begin:
180 leal .Lpadlock_saved_context-.L005ecb_pic_point,%eax
183 call _padlock_verify_ctx
208 leal (%eax,%ebp,1),%esp
221 jz .L009ecb_inp_aligned
227 .L009ecb_inp_aligned:
235 jz .L010ecb_out_aligned
241 .L010ecb_out_aligned:
266 leal (%eax,%ebp,1),%esp
270 movups (%esi,%ebx,1),%xmm0
273 movaps %xmm0,-16(%esp,%ebx,1)
274 ja .L014ecb_short_copy
293 .size padlock_ecb_encrypt,.-.L_padlock_ecb_encrypt_begin
294 .globl padlock_cbc_encrypt
295 .type padlock_cbc_encrypt,@function
298 .L_padlock_cbc_encrypt_begin:
311 leal .Lpadlock_saved_context-.L016cbc_pic_point,%eax
314 call _padlock_verify_ctx
339 leal (%eax,%ebp,1),%esp
352 jz .L020cbc_inp_aligned
358 .L020cbc_inp_aligned:
364 movaps %xmm0,-16(%edx)
368 jz .L021cbc_out_aligned
374 .L021cbc_out_aligned:
399 leal (%eax,%ebp,1),%esp
403 movups (%esi,%ebx,1),%xmm0
406 movaps %xmm0,-16(%esp,%ebx,1)
407 ja .L025cbc_short_copy
418 movaps %xmm0,-16(%edx)
428 .size padlock_cbc_encrypt,.-.L_padlock_cbc_encrypt_begin
429 .globl padlock_xstore
430 .type padlock_xstore,@function
433 .L_padlock_xstore_begin:
440 .size padlock_xstore,.-.L_padlock_xstore_begin
441 .type _win32_segv_handler,@function
447 cmpl $3221225477,(%edx)
453 .size _win32_segv_handler,.-_win32_segv_handler
454 .globl padlock_sha1_oneshot
455 .type padlock_sha1_oneshot,@function
457 padlock_sha1_oneshot:
458 .L_padlock_sha1_oneshot_begin:
484 .size padlock_sha1_oneshot,.-.L_padlock_sha1_oneshot_begin
485 .globl padlock_sha1_blocks
486 .type padlock_sha1_blocks,@function
489 .L_padlock_sha1_blocks_begin:
514 .size padlock_sha1_blocks,.-.L_padlock_sha1_blocks_begin
515 .globl padlock_sha256_oneshot
516 .type padlock_sha256_oneshot,@function
518 padlock_sha256_oneshot:
519 .L_padlock_sha256_oneshot_begin:
530 movups 16(%edi),%xmm1
533 movaps %xmm1,16(%esp)
537 movaps 16(%esp),%xmm1
541 movups %xmm1,16(%edi)
545 .size padlock_sha256_oneshot,.-.L_padlock_sha256_oneshot_begin
546 .globl padlock_sha256_blocks
547 .type padlock_sha256_blocks,@function
549 padlock_sha256_blocks:
550 .L_padlock_sha256_blocks_begin:
560 movups 16(%edi),%xmm1
563 movaps %xmm1,16(%esp)
567 movaps 16(%esp),%xmm1
571 movups %xmm1,16(%edi)
575 .size padlock_sha256_blocks,.-.L_padlock_sha256_blocks_begin
576 .globl padlock_sha512_blocks
577 .type padlock_sha512_blocks,@function
579 padlock_sha512_blocks:
580 .L_padlock_sha512_blocks_begin:
590 movups 16(%edi),%xmm1
591 movups 32(%edi),%xmm2
592 movups 48(%edi),%xmm3
595 movaps %xmm1,16(%esp)
596 movaps %xmm2,32(%esp)
597 movaps %xmm3,48(%esp)
600 movaps 16(%esp),%xmm1
601 movaps 32(%esp),%xmm2
602 movaps 48(%esp),%xmm3
606 movups %xmm1,16(%edi)
607 movups %xmm2,32(%edi)
608 movups %xmm3,48(%edi)
612 .size padlock_sha512_blocks,.-.L_padlock_sha512_blocks_begin
613 .byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
614 .byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
615 .byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
616 .byte 110,115,115,108,46,111,114,103,62,0
620 .Lpadlock_saved_context:
623 .section .note.GNU-stack,"",%progbits