Add swapll to byte swap 64-bit datatypes

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Keith Packard 2013-07-11 16:09:34 -07:00
parent 26f013ba45
commit 0c33f47281

View File

@ -305,6 +305,35 @@ __builtin_constant_p(int x)
}
#endif
/* byte swap a 64-bit value */
static inline void
swap_uint64(uint64_t *x)
{
char n;
n = ((char *) x)[0];
((char *) x)[0] = ((char *) x)[7];
((char *) x)[7] = n;
n = ((char *) x)[1];
((char *) x)[1] = ((char *) x)[6];
((char *) x)[6] = n;
n = ((char *) x)[2];
((char *) x)[2] = ((char *) x)[5];
((char *) x)[5] = n;
n = ((char *) x)[3];
((char *) x)[3] = ((char *) x)[4];
((char *) x)[4] = n;
}
#define swapll(x) do { \
if (sizeof(*(x)) != 8) \
wrong_size(); \
swap_uint64((uint64_t *)(x)); \
} while (0)
/* byte swap a 32-bit value */
static inline void
swap_uint32(uint32_t * x)