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 <jpoim...@redhat.com>
---
 arch/x86/crypto/sha1_ni_asm.S | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/x86/crypto/sha1_ni_asm.S b/arch/x86/crypto/sha1_ni_asm.S
index 11efe3a45a1f..5d8415f482bd 100644
--- a/arch/x86/crypto/sha1_ni_asm.S
+++ b/arch/x86/crypto/sha1_ni_asm.S
@@ -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)
-- 
2.29.2

Reply via email to