diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/arch/aarch64/Makefile.inc | 5 | ||||
| -rw-r--r-- | src/lib/libcrypto/arm64cpuid.S | 47 | ||||
| -rw-r--r-- | src/lib/libcrypto/arm_arch.h | 8 |
3 files changed, 57 insertions, 3 deletions
diff --git a/src/lib/libcrypto/arch/aarch64/Makefile.inc b/src/lib/libcrypto/arch/aarch64/Makefile.inc index 8742504f2d..d3d33e5941 100644 --- a/src/lib/libcrypto/arch/aarch64/Makefile.inc +++ b/src/lib/libcrypto/arch/aarch64/Makefile.inc | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile.inc,v 1.1 2017/01/11 18:11:01 patrick Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.2 2019/07/02 19:31:28 patrick Exp $ |
| 2 | 2 | ||
| 3 | # aarch64-specific libcrypto build rules | 3 | # aarch64-specific libcrypto build rules |
| 4 | 4 | ||
| @@ -26,3 +26,6 @@ ${f}.S: ${LCRYPTO_SRC}/${dir}/asm/${f}.pl | |||
| 26 | /usr/bin/perl \ | 26 | /usr/bin/perl \ |
| 27 | ${LCRYPTO_SRC}/${dir}/asm/${f}.pl void ${.TARGET} > ${.TARGET} | 27 | ${LCRYPTO_SRC}/${dir}/asm/${f}.pl void ${.TARGET} > ${.TARGET} |
| 28 | .endfor | 28 | .endfor |
| 29 | |||
| 30 | CFLAGS+= -DOPENSSL_CPUID_OBJ | ||
| 31 | SRCS+= arm64cpuid.S armcap.c | ||
diff --git a/src/lib/libcrypto/arm64cpuid.S b/src/lib/libcrypto/arm64cpuid.S new file mode 100644 index 0000000000..5eeff91c6e --- /dev/null +++ b/src/lib/libcrypto/arm64cpuid.S | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | #include "arm_arch.h" | ||
| 2 | |||
| 3 | .text | ||
| 4 | .arch armv8-a+crypto+sha3 | ||
| 5 | |||
| 6 | .align 5 | ||
| 7 | .globl _armv7_neon_probe | ||
| 8 | .type _armv7_neon_probe,%function | ||
| 9 | _armv7_neon_probe: | ||
| 10 | orr v15.16b, v15.16b, v15.16b | ||
| 11 | ret | ||
| 12 | .size _armv7_neon_probe,.-_armv7_neon_probe | ||
| 13 | |||
| 14 | .globl _armv8_aes_probe | ||
| 15 | .type _armv8_aes_probe,%function | ||
| 16 | _armv8_aes_probe: | ||
| 17 | aese v0.16b, v0.16b | ||
| 18 | ret | ||
| 19 | .size _armv8_aes_probe,.-_armv8_aes_probe | ||
| 20 | |||
| 21 | .globl _armv8_sha1_probe | ||
| 22 | .type _armv8_sha1_probe,%function | ||
| 23 | _armv8_sha1_probe: | ||
| 24 | sha1h s0, s0 | ||
| 25 | ret | ||
| 26 | .size _armv8_sha1_probe,.-_armv8_sha1_probe | ||
| 27 | |||
| 28 | .globl _armv8_sha256_probe | ||
| 29 | .type _armv8_sha256_probe,%function | ||
| 30 | _armv8_sha256_probe: | ||
| 31 | sha256su0 v0.4s, v0.4s | ||
| 32 | ret | ||
| 33 | .size _armv8_sha256_probe,.-_armv8_sha256_probe | ||
| 34 | |||
| 35 | .globl _armv8_pmull_probe | ||
| 36 | .type _armv8_pmull_probe,%function | ||
| 37 | _armv8_pmull_probe: | ||
| 38 | pmull v0.1q, v0.1d, v0.1d | ||
| 39 | ret | ||
| 40 | .size _armv8_pmull_probe,.-_armv8_pmull_probe | ||
| 41 | |||
| 42 | .globl _armv8_sha512_probe | ||
| 43 | .type _armv8_sha512_probe,%function | ||
| 44 | _armv8_sha512_probe: | ||
| 45 | sha512su0 v0.2d,v0.2d | ||
| 46 | ret | ||
| 47 | .size _armv8_sha512_probe,.-_armv8_sha512_probe | ||
diff --git a/src/lib/libcrypto/arm_arch.h b/src/lib/libcrypto/arm_arch.h index a64c6da46e..8c5115ea44 100644 --- a/src/lib/libcrypto/arm_arch.h +++ b/src/lib/libcrypto/arm_arch.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: arm_arch.h,v 1.9 2019/03/13 10:18:30 patrick Exp $ */ | 1 | /* $OpenBSD: arm_arch.h,v 1.10 2019/07/02 19:31:28 patrick Exp $ */ |
| 2 | #ifndef __ARM_ARCH_H__ | 2 | #ifndef __ARM_ARCH_H__ |
| 3 | #define __ARM_ARCH_H__ | 3 | #define __ARM_ARCH_H__ |
| 4 | 4 | ||
| @@ -17,7 +17,11 @@ | |||
| 17 | * gcc/config/arm/arm.c. On a side note it defines | 17 | * gcc/config/arm/arm.c. On a side note it defines |
| 18 | * __ARMEL__/__ARMEB__ for little-/big-endian. | 18 | * __ARMEL__/__ARMEB__ for little-/big-endian. |
| 19 | */ | 19 | */ |
| 20 | # if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ | 20 | # if defined(__ARM_ARCH) |
| 21 | # define __ARM_ARCH__ __ARM_ARCH | ||
| 22 | # elif defined(__ARM_ARCH_8A__) | ||
| 23 | # define __ARM_ARCH__ 8 | ||
| 24 | # elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ | ||
| 21 | defined(__ARM_ARCH_7R__)|| defined(__ARM_ARCH_7M__) || \ | 25 | defined(__ARM_ARCH_7R__)|| defined(__ARM_ARCH_7M__) || \ |
| 22 | defined(__ARM_ARCH_7EM__) | 26 | defined(__ARM_ARCH_7EM__) |
| 23 | # define __ARM_ARCH__ 7 | 27 | # define __ARM_ARCH__ 7 |
