OSDN Git Service

crypto: x86/chacha20 - satisfy stack validation 2.0
authorJason A. Donenfeld <Jason@zx2c4.com>
Sun, 8 Oct 2017 20:50:53 +0000 (22:50 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 12 Oct 2017 14:51:16 +0000 (22:51 +0800)
The new stack validator in objdump doesn't like directly assigning r11
to rsp, warning with something like:

warning: objtool: chacha20_4block_xor_ssse3()+0xa: unsupported stack pointer realignment
warning: objtool: chacha20_8block_xor_avx2()+0x6: unsupported stack pointer realignment

This fixes things up to use code similar to gcc's DRAP register, so that
objdump remains happy.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Fixes: baa41469a7b9 ("objtool: Implement stack validation 2.0")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/chacha20-avx2-x86_64.S
arch/x86/crypto/chacha20-ssse3-x86_64.S

index 3a2dc3d..f3cd26f 100644 (file)
@@ -45,7 +45,7 @@ ENTRY(chacha20_8block_xor_avx2)
 
        vzeroupper
        # 4 * 32 byte stack, 32-byte aligned
-       mov             %rsp, %r8
+       lea             8(%rsp),%r10
        and             $~31, %rsp
        sub             $0x80, %rsp
 
@@ -443,6 +443,6 @@ ENTRY(chacha20_8block_xor_avx2)
        vmovdqu         %ymm15,0x01e0(%rsi)
 
        vzeroupper
-       mov             %r8,%rsp
+       lea             -8(%r10),%rsp
        ret
 ENDPROC(chacha20_8block_xor_avx2)
index 3f511a7..512a2b5 100644 (file)
@@ -160,7 +160,7 @@ ENTRY(chacha20_4block_xor_ssse3)
        # done with the slightly better performing SSSE3 byte shuffling,
        # 7/12-bit word rotation uses traditional shift+OR.
 
-       mov             %rsp,%r11
+       lea             8(%rsp),%r10
        sub             $0x80,%rsp
        and             $~63,%rsp
 
@@ -625,6 +625,6 @@ ENTRY(chacha20_4block_xor_ssse3)
        pxor            %xmm1,%xmm15
        movdqu          %xmm15,0xf0(%rsi)
 
-       mov             %r11,%rsp
+       lea             -8(%r10),%rsp
        ret
 ENDPROC(chacha20_4block_xor_ssse3)