diff --git a/endianness.h b/endianness.h index 376edb24c4..e5c8d25089 100644 --- a/endianness.h +++ b/endianness.h @@ -19,6 +19,13 @@ #include +#define SWAP32(x) ((uint32_t)( \ + (((uint32_t)(x) & 0x000000ff) << 24) | \ + (((uint32_t)(x) & 0x0000ff00) << 8) | \ + (((uint32_t)(x) & 0x00ff0000) >> 8) | \ + (((uint32_t)(x) & 0xff000000) >> 24) \ + )) + static inline uint8_t is_little_endian(void) { union @@ -61,4 +68,14 @@ static inline uint16_t swap_if_little16(uint16_t val) return val; } +static inline void store32be(uint32_t *addr, uint32_t data) +{ + *addr = is_little_endian() ? SWAP32(data) : data; +} + +static inline uint32_t load32be(const uint32_t *addr) +{ + return is_little_endian() ? SWAP32(*addr) : *addr; +} + #endif diff --git a/hash.c b/hash.c index 82d9845ffe..a3cba5b438 100644 --- a/hash.c +++ b/hash.c @@ -58,23 +58,7 @@ #include #include "hash.h" #include "miscellaneous.h" - -#define SWAP32(x) ((uint32_t)( \ - (((uint32_t)(x) & 0x000000ff) << 24) | \ - (((uint32_t)(x) & 0x0000ff00) << 8) | \ - (((uint32_t)(x) & 0x00ff0000) >> 8) | \ - (((uint32_t)(x) & 0xff000000) >> 24) \ - )) - -static inline void store32be(uint32_t *addr, uint32_t data) -{ - *addr = is_little_endian() ? SWAP32(data) : data; -} - -static inline uint32_t load32be(const uint32_t *addr) -{ - return is_little_endian() ? SWAP32(*addr) : *addr; -} +#include "endianness.h" #define LSL32(x, n) ((uint32_t)(x) << (n)) #define LSR32(x, n) ((uint32_t)(x) >> (n))