diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2013-03-24 09:34:07 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2013-04-02 21:06:30 -0400 |
commit | 873b9cafa8cae695d92f0faabe7166af10078b78 (patch) | |
tree | 3f9145d08de037d049bb0bfe49cbb351175b1bcd | |
parent | eca17269976fe82cdd713095473bee4842dbd41a (diff) |
crypto: x86 - build AVX block cipher implementations only if assembler supports AVX instructions
These modules require AVX support in assembler, so add new check to Makefile
for this.
Other option would be to use CONFIG_AS_AVX inside source files, but that would
result dummy/empty/no-fuctionality modules being created.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r-- | arch/x86/crypto/Makefile | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/arch/x86/crypto/Makefile b/arch/x86/crypto/Makefile index ca96761a22e4..83681a317422 100644 --- a/arch/x86/crypto/Makefile +++ b/arch/x86/crypto/Makefile | |||
@@ -2,6 +2,8 @@ | |||
2 | # Arch-specific CryptoAPI modules. | 2 | # Arch-specific CryptoAPI modules. |
3 | # | 3 | # |
4 | 4 | ||
5 | avx_supported := $(call as-instr,vpxor %xmm0$(comma)%xmm0$(comma)%xmm0,yes,no) | ||
6 | |||
5 | obj-$(CONFIG_CRYPTO_ABLK_HELPER_X86) += ablk_helper.o | 7 | obj-$(CONFIG_CRYPTO_ABLK_HELPER_X86) += ablk_helper.o |
6 | obj-$(CONFIG_CRYPTO_GLUE_HELPER_X86) += glue_helper.o | 8 | obj-$(CONFIG_CRYPTO_GLUE_HELPER_X86) += glue_helper.o |
7 | 9 | ||
@@ -12,16 +14,11 @@ obj-$(CONFIG_CRYPTO_SERPENT_SSE2_586) += serpent-sse2-i586.o | |||
12 | 14 | ||
13 | obj-$(CONFIG_CRYPTO_AES_X86_64) += aes-x86_64.o | 15 | obj-$(CONFIG_CRYPTO_AES_X86_64) += aes-x86_64.o |
14 | obj-$(CONFIG_CRYPTO_CAMELLIA_X86_64) += camellia-x86_64.o | 16 | obj-$(CONFIG_CRYPTO_CAMELLIA_X86_64) += camellia-x86_64.o |
15 | obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64) += camellia-aesni-avx-x86_64.o | ||
16 | obj-$(CONFIG_CRYPTO_CAST5_AVX_X86_64) += cast5-avx-x86_64.o | ||
17 | obj-$(CONFIG_CRYPTO_CAST6_AVX_X86_64) += cast6-avx-x86_64.o | ||
18 | obj-$(CONFIG_CRYPTO_BLOWFISH_X86_64) += blowfish-x86_64.o | 17 | obj-$(CONFIG_CRYPTO_BLOWFISH_X86_64) += blowfish-x86_64.o |
19 | obj-$(CONFIG_CRYPTO_TWOFISH_X86_64) += twofish-x86_64.o | 18 | obj-$(CONFIG_CRYPTO_TWOFISH_X86_64) += twofish-x86_64.o |
20 | obj-$(CONFIG_CRYPTO_TWOFISH_X86_64_3WAY) += twofish-x86_64-3way.o | 19 | obj-$(CONFIG_CRYPTO_TWOFISH_X86_64_3WAY) += twofish-x86_64-3way.o |
21 | obj-$(CONFIG_CRYPTO_TWOFISH_AVX_X86_64) += twofish-avx-x86_64.o | ||
22 | obj-$(CONFIG_CRYPTO_SALSA20_X86_64) += salsa20-x86_64.o | 20 | obj-$(CONFIG_CRYPTO_SALSA20_X86_64) += salsa20-x86_64.o |
23 | obj-$(CONFIG_CRYPTO_SERPENT_SSE2_X86_64) += serpent-sse2-x86_64.o | 21 | obj-$(CONFIG_CRYPTO_SERPENT_SSE2_X86_64) += serpent-sse2-x86_64.o |
24 | obj-$(CONFIG_CRYPTO_SERPENT_AVX_X86_64) += serpent-avx-x86_64.o | ||
25 | obj-$(CONFIG_CRYPTO_AES_NI_INTEL) += aesni-intel.o | 22 | obj-$(CONFIG_CRYPTO_AES_NI_INTEL) += aesni-intel.o |
26 | obj-$(CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL) += ghash-clmulni-intel.o | 23 | obj-$(CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL) += ghash-clmulni-intel.o |
27 | 24 | ||
@@ -29,6 +26,16 @@ obj-$(CONFIG_CRYPTO_CRC32C_INTEL) += crc32c-intel.o | |||
29 | obj-$(CONFIG_CRYPTO_SHA1_SSSE3) += sha1-ssse3.o | 26 | obj-$(CONFIG_CRYPTO_SHA1_SSSE3) += sha1-ssse3.o |
30 | obj-$(CONFIG_CRYPTO_CRC32_PCLMUL) += crc32-pclmul.o | 27 | obj-$(CONFIG_CRYPTO_CRC32_PCLMUL) += crc32-pclmul.o |
31 | 28 | ||
29 | # These modules require assembler to support AVX. | ||
30 | ifeq ($(avx_supported),yes) | ||
31 | obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64) += \ | ||
32 | camellia-aesni-avx-x86_64.o | ||
33 | obj-$(CONFIG_CRYPTO_CAST5_AVX_X86_64) += cast5-avx-x86_64.o | ||
34 | obj-$(CONFIG_CRYPTO_CAST6_AVX_X86_64) += cast6-avx-x86_64.o | ||
35 | obj-$(CONFIG_CRYPTO_TWOFISH_AVX_X86_64) += twofish-avx-x86_64.o | ||
36 | obj-$(CONFIG_CRYPTO_SERPENT_AVX_X86_64) += serpent-avx-x86_64.o | ||
37 | endif | ||
38 | |||
32 | aes-i586-y := aes-i586-asm_32.o aes_glue.o | 39 | aes-i586-y := aes-i586-asm_32.o aes_glue.o |
33 | twofish-i586-y := twofish-i586-asm_32.o twofish_glue.o | 40 | twofish-i586-y := twofish-i586-asm_32.o twofish_glue.o |
34 | salsa20-i586-y := salsa20-i586-asm_32.o salsa20_glue.o | 41 | salsa20-i586-y := salsa20-i586-asm_32.o salsa20_glue.o |
@@ -36,17 +43,22 @@ serpent-sse2-i586-y := serpent-sse2-i586-asm_32.o serpent_sse2_glue.o | |||
36 | 43 | ||
37 | aes-x86_64-y := aes-x86_64-asm_64.o aes_glue.o | 44 | aes-x86_64-y := aes-x86_64-asm_64.o aes_glue.o |
38 | camellia-x86_64-y := camellia-x86_64-asm_64.o camellia_glue.o | 45 | camellia-x86_64-y := camellia-x86_64-asm_64.o camellia_glue.o |
39 | camellia-aesni-avx-x86_64-y := camellia-aesni-avx-asm_64.o \ | ||
40 | camellia_aesni_avx_glue.o | ||
41 | cast5-avx-x86_64-y := cast5-avx-x86_64-asm_64.o cast5_avx_glue.o | ||
42 | cast6-avx-x86_64-y := cast6-avx-x86_64-asm_64.o cast6_avx_glue.o | ||
43 | blowfish-x86_64-y := blowfish-x86_64-asm_64.o blowfish_glue.o | 46 | blowfish-x86_64-y := blowfish-x86_64-asm_64.o blowfish_glue.o |
44 | twofish-x86_64-y := twofish-x86_64-asm_64.o twofish_glue.o | 47 | twofish-x86_64-y := twofish-x86_64-asm_64.o twofish_glue.o |
45 | twofish-x86_64-3way-y := twofish-x86_64-asm_64-3way.o twofish_glue_3way.o | 48 | twofish-x86_64-3way-y := twofish-x86_64-asm_64-3way.o twofish_glue_3way.o |
46 | twofish-avx-x86_64-y := twofish-avx-x86_64-asm_64.o twofish_avx_glue.o | ||
47 | salsa20-x86_64-y := salsa20-x86_64-asm_64.o salsa20_glue.o | 49 | salsa20-x86_64-y := salsa20-x86_64-asm_64.o salsa20_glue.o |
48 | serpent-sse2-x86_64-y := serpent-sse2-x86_64-asm_64.o serpent_sse2_glue.o | 50 | serpent-sse2-x86_64-y := serpent-sse2-x86_64-asm_64.o serpent_sse2_glue.o |
49 | serpent-avx-x86_64-y := serpent-avx-x86_64-asm_64.o serpent_avx_glue.o | 51 | |
52 | ifeq ($(avx_supported),yes) | ||
53 | camellia-aesni-avx-x86_64-y := camellia-aesni-avx-asm_64.o \ | ||
54 | camellia_aesni_avx_glue.o | ||
55 | cast5-avx-x86_64-y := cast5-avx-x86_64-asm_64.o cast5_avx_glue.o | ||
56 | cast6-avx-x86_64-y := cast6-avx-x86_64-asm_64.o cast6_avx_glue.o | ||
57 | twofish-avx-x86_64-y := twofish-avx-x86_64-asm_64.o \ | ||
58 | twofish_avx_glue.o | ||
59 | serpent-avx-x86_64-y := serpent-avx-x86_64-asm_64.o \ | ||
60 | serpent_avx_glue.o | ||
61 | endif | ||
50 | 62 | ||
51 | aesni-intel-y := aesni-intel_asm.o aesni-intel_glue.o fpu.o | 63 | aesni-intel-y := aesni-intel_asm.o aesni-intel_glue.o fpu.o |
52 | ghash-clmulni-intel-y := ghash-clmulni-intel_asm.o ghash-clmulni-intel_glue.o | 64 | ghash-clmulni-intel-y := ghash-clmulni-intel_asm.o ghash-clmulni-intel_glue.o |