x86/crypto/sha_ni: Standardize stack alignment prologue
authorJosh Poimboeuf <jpoimboe@redhat.com>
Wed, 24 Feb 2021 16:29:20 +0000 (10:29 -0600)
committerJosh Poimboeuf <jpoimboe@redhat.com>
Mon, 19 Apr 2021 17:36:35 +0000 (12:36 -0500)
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/5033e1a79867dff1b18e1b4d0783c38897d3f223.1614182415.git.jpoimboe@redhat.com
arch/x86/crypto/sha1_ni_asm.S

index 11efe3a..5d8415f 100644 (file)
@@ -59,8 +59,6 @@
 #define DATA_PTR       %rsi    /* 2nd arg */
 #define NUM_BLKS       %rdx    /* 3rd arg */
 
-#define RSPSAVE                %rax
-
 /* gcc conversion */
 #define FRAME_SIZE     32      /* space for 2x16 bytes */
 
@@ -96,7 +94,8 @@
 .text
 .align 32
 SYM_FUNC_START(sha1_ni_transform)
-       mov             %rsp, RSPSAVE
+       push            %rbp
+       mov             %rsp, %rbp
        sub             $FRAME_SIZE, %rsp
        and             $~0xF, %rsp
 
@@ -288,7 +287,8 @@ SYM_FUNC_START(sha1_ni_transform)
        pextrd          $3, E0, 1*16(DIGEST_PTR)
 
 .Ldone_hash:
-       mov             RSPSAVE, %rsp
+       mov             %rbp, %rsp
+       pop             %rbp
 
        ret
 SYM_FUNC_END(sha1_ni_transform)