diff options
-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 4c2e8dd92..4184729e3 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 |