diff options
author | Andy Polyakov <appro@openssl.org> | 2004-07-17 13:21:22 +0000 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2004-07-17 13:21:22 +0000 |
commit | f1db966ad4113ecba54ad26242cdbfd8aeccc62f (patch) | |
tree | 3ad50f559247357b1b95be36af17083929c81e4b | |
parent | c4798d102050c10950eb69a93eacff03f8202dfe (diff) | |
download | openssl-new-BRANCH_WIN64.tar.gz |
Sync with HEAD. For reference. _WIN64 is defined on AMD64 as well. UnlikeBRANCH_WIN64
IA-64 AMD64 tolerates unaligned access, which is why condition explicitly
checks for _M_IA64 only.
-rw-r--r-- | crypto/aes/aes_locl.h | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/crypto/aes/aes_locl.h b/crypto/aes/aes_locl.h index 4c2e8dd92b..4184729e34 100644 --- a/crypto/aes/aes_locl.h +++ b/crypto/aes/aes_locl.h @@ -62,16 +62,11 @@ #include <stdlib.h> #include <string.h> -#if defined(_MSC_VER) && !defined(OPENSSL_SYS_WINCE) -# ifdef _WIN64 /* little-endian, strict alignment */ -# define GETU32(pt) (((u32)(pt)[3] << 24) ^ ((u32)(pt)[2] << 16) ^ ((u32)(pt)[1] << 8) ^ ((u32)(pt)[0])) -# define PUTU32(ct, st) { (ct)[3] = (u8)((st) >> 24); (ct)[2] = (u8)((st) >> 16); (ct)[1] = (u8)((st) >> 8); (ct)[0] = (u8)(st); } -# else /* little-endian, no strict-alignment */ -# define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00) -# define GETU32(p) SWAP(*((u32 *)(p))) -# define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); } -# endif -#else /* big-endian, strict alignment */ +#if defined(_MSC_VER) && !defined(_M_IA64) && !defined(OPENSSL_SYS_WINCE) +# define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00) +# define GETU32(p) SWAP(*((u32 *)(p))) +# define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); } +#else # define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] << 8) ^ ((u32)(pt)[3])) # define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >> 8); (ct)[3] = (u8)(st); } #endif |