mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
x86/crypto/sha512-avx2: Standardize stack alignment prologue
Use a more standard prologue for saving the stack pointer before realigning the stack. This enables ORC unwinding by allowing objtool to understand the stack realignment. Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Tested-by: Ard Biesheuvel <ardb@kernel.org> Acked-by: Ard Biesheuvel <ardb@kernel.org> Tested-by: Sami Tolvanen <samitolvanen@google.com> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Link: https://lore.kernel.org/r/b1a7b29fcfc65d60a3b6e77ef75f4762a5b8488d.1614182415.git.jpoimboe@redhat.com
This commit is contained in:
parent
d61684b56e
commit
ec063e090b
@ -102,17 +102,13 @@ SRND_SIZE = 1*8
|
||||
INP_SIZE = 1*8
|
||||
INPEND_SIZE = 1*8
|
||||
CTX_SIZE = 1*8
|
||||
RSPSAVE_SIZE = 1*8
|
||||
GPRSAVE_SIZE = 5*8
|
||||
|
||||
frame_XFER = 0
|
||||
frame_SRND = frame_XFER + XFER_SIZE
|
||||
frame_INP = frame_SRND + SRND_SIZE
|
||||
frame_INPEND = frame_INP + INP_SIZE
|
||||
frame_CTX = frame_INPEND + INPEND_SIZE
|
||||
frame_RSPSAVE = frame_CTX + CTX_SIZE
|
||||
frame_GPRSAVE = frame_RSPSAVE + RSPSAVE_SIZE
|
||||
frame_size = frame_GPRSAVE + GPRSAVE_SIZE
|
||||
frame_size = frame_CTX + CTX_SIZE
|
||||
|
||||
## assume buffers not aligned
|
||||
#define VMOVDQ vmovdqu
|
||||
@ -570,18 +566,18 @@ frame_size = frame_GPRSAVE + GPRSAVE_SIZE
|
||||
# "blocks" is the message length in SHA512 blocks
|
||||
########################################################################
|
||||
SYM_FUNC_START(sha512_transform_rorx)
|
||||
# Save GPRs
|
||||
push %rbx
|
||||
push %r12
|
||||
push %r13
|
||||
push %r14
|
||||
push %r15
|
||||
|
||||
# Allocate Stack Space
|
||||
mov %rsp, %rax
|
||||
push %rbp
|
||||
mov %rsp, %rbp
|
||||
sub $frame_size, %rsp
|
||||
and $~(0x20 - 1), %rsp
|
||||
mov %rax, frame_RSPSAVE(%rsp)
|
||||
|
||||
# Save GPRs
|
||||
mov %rbx, 8*0+frame_GPRSAVE(%rsp)
|
||||
mov %r12, 8*1+frame_GPRSAVE(%rsp)
|
||||
mov %r13, 8*2+frame_GPRSAVE(%rsp)
|
||||
mov %r14, 8*3+frame_GPRSAVE(%rsp)
|
||||
mov %r15, 8*4+frame_GPRSAVE(%rsp)
|
||||
|
||||
shl $7, NUM_BLKS # convert to bytes
|
||||
jz done_hash
|
||||
@ -672,15 +668,17 @@ loop2:
|
||||
|
||||
done_hash:
|
||||
|
||||
# Restore GPRs
|
||||
mov 8*0+frame_GPRSAVE(%rsp), %rbx
|
||||
mov 8*1+frame_GPRSAVE(%rsp), %r12
|
||||
mov 8*2+frame_GPRSAVE(%rsp), %r13
|
||||
mov 8*3+frame_GPRSAVE(%rsp), %r14
|
||||
mov 8*4+frame_GPRSAVE(%rsp), %r15
|
||||
|
||||
# Restore Stack Pointer
|
||||
mov frame_RSPSAVE(%rsp), %rsp
|
||||
mov %rbp, %rsp
|
||||
pop %rbp
|
||||
|
||||
# Restore GPRs
|
||||
pop %r15
|
||||
pop %r14
|
||||
pop %r13
|
||||
pop %r12
|
||||
pop %rbx
|
||||
|
||||
ret
|
||||
SYM_FUNC_END(sha512_transform_rorx)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user