[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170403231438.GB145051@google.com>
Date: Mon, 3 Apr 2017 16:14:38 -0700
From: Matthias Kaehlcke <mka@...omium.org>
To: Michael Davidson <md@...gle.com>
Cc: Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
"H. Peter Anvin" <hpa@...or.com>,
Herbert Xu <herbert@...dor.apana.org.au>,
"David S. Miller" <davem@...emloft.net>,
Alexander Potapenko <glider@...gle.com>,
Dmitry Vyukov <dvyukov@...gle.com>, x86@...nel.org,
linux-kernel@...r.kernel.org, linux-crypto@...r.kernel.org
Subject: Re: [PATCH 7/7] crypto, x86, LLVM: aesni - fix token pasting
El Thu, Mar 16, 2017 at 05:15:20PM -0700 Michael Davidson ha dit:
> aes_ctrby8_avx-x86_64.S uses the C preprocessor for token pasting
> of character sequences that are not valid preprocessor tokens.
> While this is allowed when preprocessing assembler files it exposes
> an incompatibilty between the clang and gcc preprocessors where
> clang does not strip leading white space from macro parameters,
> leading to the CONCAT(%xmm, i) macro expansion on line 96 resulting
> in a token with a space character embedded in it.
>
> While this could be fixed by deleting the offending space character,
> the assembler is perfectly capable of handling the token pasting
> correctly for itself so it seems preferable to let it do so and to
> get rid or the CONCAT(), DDQ() and XMM() preprocessor macros.
>
> Signed-off-by: Michael Davidson <md@...gle.com>
> ---
> arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/arch/x86/crypto/aes_ctrby8_avx-x86_64.S b/arch/x86/crypto/aes_ctrby8_avx-x86_64.S
> index a916c4a61165..5f6a5af9c489 100644
> --- a/arch/x86/crypto/aes_ctrby8_avx-x86_64.S
> +++ b/arch/x86/crypto/aes_ctrby8_avx-x86_64.S
> @@ -65,7 +65,6 @@
> #include <linux/linkage.h>
> #include <asm/inst.h>
>
> -#define CONCAT(a,b) a##b
> #define VMOVDQ vmovdqu
>
> #define xdata0 %xmm0
> @@ -92,8 +91,6 @@
> #define num_bytes %r8
>
> #define tmp %r10
> -#define DDQ(i) CONCAT(ddq_add_,i)
> -#define XMM(i) CONCAT(%xmm, i)
> #define DDQ_DATA 0
> #define XDATA 1
> #define KEY_128 1
> @@ -131,12 +128,12 @@ ddq_add_8:
> /* generate a unique variable for ddq_add_x */
>
> .macro setddq n
> - var_ddq_add = DDQ(\n)
> + var_ddq_add = ddq_add_\n
> .endm
>
> /* generate a unique variable for xmm register */
> .macro setxdata n
> - var_xdata = XMM(\n)
> + var_xdata = %xmm\n
> .endm
>
> /* club the numeric 'id' to the symbol 'name' */
Any feedback on this patch?
Thanks
Matthias
Powered by blists - more mailing lists