--- arch/x86/crypto/aes-x86_64-asm_64.S | 8 +++++--- include/crypto/aes.h | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) --- a/arch/x86/crypto/aes-x86_64-asm_64.S +++ b/arch/x86/crypto/aes-x86_64-asm_64.S @@ -57,14 +57,15 @@ .global FUNC; \ .type FUNC,@function; \ .align 8; \ -FUNC: subq $16, R16; \ +FUNC: subq $24, R16; \ movl (r7),r5 ## E; \ - leaq BASE+KEY+48+4(r8),r9; \ + leaq BASE+KEY+48+8(r8),r9; \ movq r10,r11; \ movq r1, (R16); \ movl 4(r7),r1 ## E; \ movq r3, 8(R16); \ movl 8(r7),r6 ## E; \ + movq R12, 16(R16); \ movl 12(r7),r7 ## E; \ movl BASE+0(r8),r10 ## E; \ xorl -48(r9),r5 ## E; \ @@ -82,8 +83,9 @@ FUNC: subq $16, R16; \ movl r5 ## E,(r9); \ movq 8(R16),r4; \ movl r6 ## E,4(r9); \ + movq 16(R16),R12; \ movl r7 ## E,8(r9); \ - addq $16,R16; \ + addq $24,R16; \ movl r8 ## E,12(r9); \ ret; --- a/include/crypto/aes.h +++ b/include/crypto/aes.h @@ -19,6 +19,7 @@ struct crypto_aes_ctx { u32 key_length; + u32 _pad1; u32 key_enc[AES_MAX_KEYLENGTH_U32]; u32 key_dec[AES_MAX_KEYLENGTH_U32]; };