aboutsummaryrefslogtreecommitdiff
path: root/crypto/modes/modes_lcl.h
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2013-10-13 19:15:15 +0200
committerAndy Polyakov <appro@openssl.org>2013-10-13 19:15:15 +0200
commit039081b80977e2a5de84e1f88f8b4d025b559956 (patch)
treeafbd005de48985f2218b8e40faeb011cf8eb3b80 /crypto/modes/modes_lcl.h
parent0c2adb0a9be76da8de9bbfd5377215f71711a52e (diff)
downloadopenssl-039081b80977e2a5de84e1f88f8b4d025b559956.zip
openssl-039081b80977e2a5de84e1f88f8b4d025b559956.tar.gz
openssl-039081b80977e2a5de84e1f88f8b4d025b559956.tar.bz2
Initial aarch64 bits.
Diffstat (limited to 'crypto/modes/modes_lcl.h')
-rw-r--r--crypto/modes/modes_lcl.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/crypto/modes/modes_lcl.h b/crypto/modes/modes_lcl.h
index 9d83e12..35d4d9f 100644
--- a/crypto/modes/modes_lcl.h
+++ b/crypto/modes/modes_lcl.h
@@ -29,6 +29,7 @@ typedef unsigned char u8;
#if defined(__i386) || defined(__i386__) || \
defined(__x86_64) || defined(__x86_64__) || \
defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || \
+ defined(__aarch64__) || \
defined(__s390__) || defined(__s390x__)
# undef STRICT_ALIGNMENT
#endif
@@ -50,6 +51,13 @@ typedef unsigned char u8;
# define BSWAP4(x) ({ u32 ret=(x); \
asm ("bswapl %0" \
: "+r"(ret)); ret; })
+# elif defined(__aarch64__)
+# define BSWAP8(x) ({ u64 ret; \
+ asm ("rev %0,%1" \
+ : "=r"(ret) : "r"(x)); ret; })
+# define BSWAP4(x) ({ u32 ret; \
+ asm ("rev %w0,%w1" \
+ : "=r"(ret) : "r"(x)); ret; })
# elif (defined(__arm__) || defined(__arm)) && !defined(STRICT_ALIGNMENT)
# define BSWAP8(x) ({ u32 lo=(u64)(x)>>32,hi=(x); \
asm ("rev %0,%0; rev %1,%1" \