diff --git a/CMakeLists.txt b/CMakeLists.txt index caf55c1..a1ca98b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -260,6 +260,8 @@ if(ENABLE_ASM) if("${CMAKE_C_COMPILER_ABI}" STREQUAL "ELF") if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(x86_64|amd64)") set(HOST_ASM_ELF_X86_64 true) + elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm") + set(HOST_ASM_ELF_ARMV4 true) elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386") set(HOST_ASM_ELF_X86_64 true) endif() diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index acbbe55..5380268 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -1,3 +1,28 @@ +if(HOST_ASM_ELF_ARMV4) + set( + ASM_ARMV4_ELF_SRC + aes/aes-elf-armv4.S + bn/gf2m-elf-armv4.S + bn/mont-elf-armv4.S + sha/sha1-elf-armv4.S + sha/sha512-elf-armv4.S + sha/sha256-elf-armv4.S + modes/ghash-elf-armv4.S + armv4cpuid.S + armcap.c + ) + add_definitions(-DAES_ASM) + add_definitions(-DOPENSSL_BN_ASM_MONT) + add_definitions(-DOPENSSL_BN_ASM_GF2m) + add_definitions(-DGHASH_ASM) + add_definitions(-DSHA1_ASM) + add_definitions(-DSHA256_ASM) + add_definitions(-DSHA512_ASM) + add_definitions(-DOPENSSL_CPUID_OBJ) + set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_ARMV4_ELF_SRC}) + set_property(SOURCE ${ASM_ARMV4_ELF_SRC} PROPERTY LANGUAGE C) +endif() + if(HOST_ASM_ELF_X86_64) set( ASM_X86_64_ELF_SRC diff --git a/update.sh b/update.sh index 44c3d92..375d78d 100755 --- a/update.sh +++ b/update.sh @@ -178,8 +178,21 @@ gen_asm() { EOF $MV $3.tmp $3 } + +echo generating arm ASM source for elf +gen_asm_stdout elf aes/asm/aes-armv4.pl crypto/aes/aes-elf-armv4.S +gen_asm_stdout elf bn/asm/armv4-gf2m.pl crypto/bn/gf2m-elf-armv4.S +gen_asm_stdout elf bn/asm/armv4-mont.pl crypto/bn/mont-elf-armv4.S +gen_asm_stdout elf sha/asm/sha1-armv4-large.pl crypto/sha/sha1-elf-armv4.S +gen_asm_stdout elf sha/asm/sha256-armv4.pl crypto/sha/sha256-elf-armv4.S +gen_asm_stdout elf sha/asm/sha512-armv4.pl crypto/sha/sha512-elf-armv4.S +gen_asm_stdout elf modes/asm/ghash-armv4.pl crypto/modes/ghash-elf-armv4.S +$CP $libcrypto_src/armv4cpuid.S crypto +$CP $libcrypto_src/armcap.c crypto +$CP $libcrypto_src/arm_arch.h crypto + for abi in elf macosx; do - echo generating ASM source for $abi + echo generating x86_64 ASM source for $abi gen_asm_stdout $abi aes/asm/aes-x86_64.pl crypto/aes/aes-$abi-x86_64.S gen_asm_stdout $abi aes/asm/vpaes-x86_64.pl crypto/aes/vpaes-$abi-x86_64.S gen_asm_stdout $abi aes/asm/bsaes-x86_64.pl crypto/aes/bsaes-$abi-x86_64.S