diff options
author | Andy Polyakov <appro@openssl.org> | 2013-10-13 19:15:15 +0200 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2013-10-13 19:15:15 +0200 |
commit | 039081b80977e2a5de84e1f88f8b4d025b559956 (patch) | |
tree | afbd005de48985f2218b8e40faeb011cf8eb3b80 /crypto/modes/modes_lcl.h | |
parent | 0c2adb0a9be76da8de9bbfd5377215f71711a52e (diff) | |
download | openssl-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.h | 8 |
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" \ |