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.
39 .globl padlock_capability
40 .type padlock_capability,@function
67 .size padlock_capability,.-padlock_capability
69 .globl padlock_key_bswap
70 .type padlock_key_bswap,@function
82 .size padlock_key_bswap,.-padlock_key_bswap
84 .globl padlock_verify_context
85 .type padlock_verify_context,@function
87 padlock_verify_context:
90 leaq .Lpadlock_saved_context(%rip),%rax
91 call _padlock_verify_ctx
94 .size padlock_verify_context,.-padlock_verify_context
96 .type _padlock_verify_ctx,@function
109 .size _padlock_verify_ctx,.-_padlock_verify_ctx
111 .globl padlock_reload_key
112 .type padlock_reload_key,@function
118 .size padlock_reload_key,.-padlock_reload_key
120 .globl padlock_aes_block
121 .type padlock_aes_block,@function
128 .byte 0xf3,0x0f,0xa7,0xc8
131 .size padlock_aes_block,.-padlock_aes_block
133 .globl padlock_xstore
134 .type padlock_xstore,@function
140 .size padlock_xstore,.-padlock_xstore
142 .globl padlock_sha1_oneshot
143 .type padlock_sha1_oneshot,@function
145 padlock_sha1_oneshot:
155 .byte 0xf3,0x0f,0xa6,0xc8
162 .size padlock_sha1_oneshot,.-padlock_sha1_oneshot
164 .globl padlock_sha1_blocks
165 .type padlock_sha1_blocks,@function
177 .byte 0xf3,0x0f,0xa6,0xc8
184 .size padlock_sha1_blocks,.-padlock_sha1_blocks
186 .globl padlock_sha256_oneshot
187 .type padlock_sha256_oneshot,@function
189 padlock_sha256_oneshot:
194 movups 16(%rdi),%xmm1
197 movaps %xmm1,16(%rsp)
199 .byte 0xf3,0x0f,0xa6,0xd0
201 movaps 16(%rsp),%xmm1
204 movups %xmm1,16(%rdx)
206 .size padlock_sha256_oneshot,.-padlock_sha256_oneshot
208 .globl padlock_sha256_blocks
209 .type padlock_sha256_blocks,@function
211 padlock_sha256_blocks:
216 movups 16(%rdi),%xmm1
219 movaps %xmm1,16(%rsp)
221 .byte 0xf3,0x0f,0xa6,0xd0
223 movaps 16(%rsp),%xmm1
226 movups %xmm1,16(%rdx)
228 .size padlock_sha256_blocks,.-padlock_sha256_blocks
230 .globl padlock_sha512_blocks
231 .type padlock_sha512_blocks,@function
233 padlock_sha512_blocks:
238 movups 16(%rdi),%xmm1
239 movups 32(%rdi),%xmm2
240 movups 48(%rdi),%xmm3
243 movaps %xmm1,16(%rsp)
244 movaps %xmm2,32(%rsp)
245 movaps %xmm3,48(%rsp)
246 .byte 0xf3,0x0f,0xa6,0xe0
248 movaps 16(%rsp),%xmm1
249 movaps 32(%rsp),%xmm2
250 movaps 48(%rsp),%xmm3
253 movups %xmm1,16(%rdx)
254 movups %xmm2,32(%rdx)
255 movups %xmm3,48(%rdx)
257 .size padlock_sha512_blocks,.-padlock_sha512_blocks
258 .globl padlock_ecb_encrypt
259 .type padlock_ecb_encrypt,@function
270 leaq .Lpadlock_saved_context(%rip),%rax
273 call _padlock_verify_ctx
297 leaq (%rax,%rbp,1),%rsp
321 .byte 0xf3,0x0f,0xa7,200
360 movups (%rsi,%rbx,1),%xmm0
363 movaps %xmm0,-16(%rsp,%rbx,1)
373 .byte 0xf3,0x0f,0xa7,200
381 .size padlock_ecb_encrypt,.-padlock_ecb_encrypt
382 .globl padlock_cbc_encrypt
383 .type padlock_cbc_encrypt,@function
394 leaq .Lpadlock_saved_context(%rip),%rax
397 call _padlock_verify_ctx
421 leaq (%rax,%rbp,1),%rsp
445 .byte 0xf3,0x0f,0xa7,208
447 movdqa %xmm0,-16(%rdx)
486 movups (%rsi,%rbx,1),%xmm0
489 movaps %xmm0,-16(%rsp,%rbx,1)
499 .byte 0xf3,0x0f,0xa7,208
501 movdqa %xmm0,-16(%rdx)
509 .size padlock_cbc_encrypt,.-padlock_cbc_encrypt
510 .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
514 .Lpadlock_saved_context:
517 .section .note.GNU-stack,"",%progbits