diff options
Diffstat (limited to 'crypto/armv4cpuid.pl')
-rw-r--r-- | crypto/armv4cpuid.pl | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/crypto/armv4cpuid.pl b/crypto/armv4cpuid.pl index 1c447187c7..c66962350d 100644 --- a/crypto/armv4cpuid.pl +++ b/crypto/armv4cpuid.pl @@ -15,7 +15,12 @@ $code.=<<___; #include "arm_arch.h" .text +#if defined(__thumb2__) && !defined(__APPLE__) +.syntax unified +.thumb +#else .code 32 +#endif .align 5 .global OPENSSL_atomic_add @@ -59,6 +64,9 @@ OPENSSL_atomic_add: OPENSSL_cleanse: eor ip,ip,ip cmp r1,#7 +#ifdef __thumb2__ + itt hs +#endif subhs r1,r1,#4 bhs .Lot cmp r1,#0 @@ -116,27 +124,43 @@ _armv7_tick: .global _armv8_aes_probe .type _armv8_aes_probe,%function _armv8_aes_probe: +#if defined(__thumb2__) && !defined(__APPLE__) + .byte 0xb0,0xff,0x00,0x03 @ aese.8 q0,q0 +#else .byte 0x00,0x03,0xb0,0xf3 @ aese.8 q0,q0 +#endif bx lr .size _armv8_aes_probe,.-_armv8_aes_probe .global _armv8_sha1_probe .type _armv8_sha1_probe,%function _armv8_sha1_probe: +#if defined(__thumb2__) && !defined(__APPLE__) + .byte 0x00,0xef,0x40,0x0c @ sha1c.32 q0,q0,q0 +#else .byte 0x40,0x0c,0x00,0xf2 @ sha1c.32 q0,q0,q0 +#endif bx lr .size _armv8_sha1_probe,.-_armv8_sha1_probe .global _armv8_sha256_probe .type _armv8_sha256_probe,%function _armv8_sha256_probe: +#if defined(__thumb2__) && !defined(__APPLE__) + .byte 0x00,0xff,0x40,0x0c @ sha256h.32 q0,q0,q0 +#else .byte 0x40,0x0c,0x00,0xf3 @ sha256h.32 q0,q0,q0 +#endif bx lr .size _armv8_sha256_probe,.-_armv8_sha256_probe .global _armv8_pmull_probe .type _armv8_pmull_probe,%function _armv8_pmull_probe: +#if defined(__thumb2__) && !defined(__APPLE__) + .byte 0xa0,0xef,0x00,0x0e @ vmull.p64 q0,d0,d0 +#else .byte 0x00,0x0e,0xa0,0xf2 @ vmull.p64 q0,d0,d0 +#endif bx lr .size _armv8_pmull_probe,.-_armv8_pmull_probe #endif |