|
@@ -16,6 +16,7 @@
|
|
|
*/
|
|
|
|
|
|
#include <linux/linkage.h>
|
|
|
+#include <asm/frame.h>
|
|
|
|
|
|
#define CAMELLIA_TABLE_BYTE_LEN 272
|
|
|
|
|
@@ -726,6 +727,7 @@ __camellia_enc_blk16:
|
|
|
* %xmm0..%xmm15: 16 encrypted blocks, order swapped:
|
|
|
* 7, 8, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8
|
|
|
*/
|
|
|
+ FRAME_BEGIN
|
|
|
|
|
|
leaq 8 * 16(%rax), %rcx;
|
|
|
|
|
@@ -780,6 +782,7 @@ __camellia_enc_blk16:
|
|
|
%xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14,
|
|
|
%xmm15, (key_table)(CTX, %r8, 8), (%rax), 1 * 16(%rax));
|
|
|
|
|
|
+ FRAME_END
|
|
|
ret;
|
|
|
|
|
|
.align 8
|
|
@@ -812,6 +815,7 @@ __camellia_dec_blk16:
|
|
|
* %xmm0..%xmm15: 16 plaintext blocks, order swapped:
|
|
|
* 7, 8, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8
|
|
|
*/
|
|
|
+ FRAME_BEGIN
|
|
|
|
|
|
leaq 8 * 16(%rax), %rcx;
|
|
|
|
|
@@ -865,6 +869,7 @@ __camellia_dec_blk16:
|
|
|
%xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14,
|
|
|
%xmm15, (key_table)(CTX), (%rax), 1 * 16(%rax));
|
|
|
|
|
|
+ FRAME_END
|
|
|
ret;
|
|
|
|
|
|
.align 8
|
|
@@ -890,6 +895,7 @@ ENTRY(camellia_ecb_enc_16way)
|
|
|
* %rsi: dst (16 blocks)
|
|
|
* %rdx: src (16 blocks)
|
|
|
*/
|
|
|
+ FRAME_BEGIN
|
|
|
|
|
|
inpack16_pre(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7,
|
|
|
%xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14,
|
|
@@ -904,6 +910,7 @@ ENTRY(camellia_ecb_enc_16way)
|
|
|
%xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
|
|
|
%xmm8, %rsi);
|
|
|
|
|
|
+ FRAME_END
|
|
|
ret;
|
|
|
ENDPROC(camellia_ecb_enc_16way)
|
|
|
|
|
@@ -913,6 +920,7 @@ ENTRY(camellia_ecb_dec_16way)
|
|
|
* %rsi: dst (16 blocks)
|
|
|
* %rdx: src (16 blocks)
|
|
|
*/
|
|
|
+ FRAME_BEGIN
|
|
|
|
|
|
cmpl $16, key_length(CTX);
|
|
|
movl $32, %r8d;
|
|
@@ -932,6 +940,7 @@ ENTRY(camellia_ecb_dec_16way)
|
|
|
%xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
|
|
|
%xmm8, %rsi);
|
|
|
|
|
|
+ FRAME_END
|
|
|
ret;
|
|
|
ENDPROC(camellia_ecb_dec_16way)
|
|
|
|
|
@@ -941,6 +950,7 @@ ENTRY(camellia_cbc_dec_16way)
|
|
|
* %rsi: dst (16 blocks)
|
|
|
* %rdx: src (16 blocks)
|
|
|
*/
|
|
|
+ FRAME_BEGIN
|
|
|
|
|
|
cmpl $16, key_length(CTX);
|
|
|
movl $32, %r8d;
|
|
@@ -981,6 +991,7 @@ ENTRY(camellia_cbc_dec_16way)
|
|
|
%xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
|
|
|
%xmm8, %rsi);
|
|
|
|
|
|
+ FRAME_END
|
|
|
ret;
|
|
|
ENDPROC(camellia_cbc_dec_16way)
|
|
|
|
|
@@ -997,6 +1008,7 @@ ENTRY(camellia_ctr_16way)
|
|
|
* %rdx: src (16 blocks)
|
|
|
* %rcx: iv (little endian, 128bit)
|
|
|
*/
|
|
|
+ FRAME_BEGIN
|
|
|
|
|
|
subq $(16 * 16), %rsp;
|
|
|
movq %rsp, %rax;
|
|
@@ -1092,6 +1104,7 @@ ENTRY(camellia_ctr_16way)
|
|
|
%xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
|
|
|
%xmm8, %rsi);
|
|
|
|
|
|
+ FRAME_END
|
|
|
ret;
|
|
|
ENDPROC(camellia_ctr_16way)
|
|
|
|
|
@@ -1112,6 +1125,7 @@ camellia_xts_crypt_16way:
|
|
|
* %r8: index for input whitening key
|
|
|
* %r9: pointer to __camellia_enc_blk16 or __camellia_dec_blk16
|
|
|
*/
|
|
|
+ FRAME_BEGIN
|
|
|
|
|
|
subq $(16 * 16), %rsp;
|
|
|
movq %rsp, %rax;
|
|
@@ -1234,6 +1248,7 @@ camellia_xts_crypt_16way:
|
|
|
%xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
|
|
|
%xmm8, %rsi);
|
|
|
|
|
|
+ FRAME_END
|
|
|
ret;
|
|
|
ENDPROC(camellia_xts_crypt_16way)
|
|
|
|