diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | bits/byteswap.h | 19 | ||||
-rw-r--r-- | sysdeps/generic/bits/byteswap.h | 19 |
3 files changed, 29 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog index eef606b8b4..275603d307 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-10-10 Daniel Jacobowitz <dan@codesourcery.com> + + * sysdeps/generic/bits/byteswap.h (__bswap_constant_16): New macro. + (__bswap_16): Use it. + (__bswap_constant_32): New macro. + (__bswap_32): Use it. + 2005-10-10 Ulrich Drepper <drepper@redhat.com> * malloc/arena.c (ptmalloc_unlock_all2): Reset atfork_recursive_cntr. diff --git a/bits/byteswap.h b/bits/byteswap.h index 5f08fed613..949ed0bc9d 100644 --- a/bits/byteswap.h +++ b/bits/byteswap.h @@ -25,32 +25,35 @@ #define _BITS_BYTESWAP_H 1 /* Swap bytes in 16 bit value. */ +#define __bswap_constant_16(x) \ + ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)) + #ifdef __GNUC__ # define __bswap_16(x) \ (__extension__ \ - ({ unsigned short int __bsx = (x); \ - ((((__bsx) >> 8) & 0xffu) | (((__bsx) & 0xffu) << 8)); })) + ({ unsigned short int __bsx = (x); __bswap_constant_16 (__bsx); })) #else static __inline unsigned short int __bswap_16 (unsigned short int __bsx) { - return ((((__bsx) >> 8) & 0xffu) | (((__bsx) & 0xffu) << 8)); + return __bswap_constant_16 (__bsx); } #endif /* Swap bytes in 32 bit value. */ +#define __bswap_constant_32(x) \ + ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \ + (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) + #ifdef __GNUC__ # define __bswap_32(x) \ (__extension__ \ - ({ unsigned int __bsx = (x); \ - ((((__bsx) & 0xff000000u) >> 24) | (((__bsx) & 0x00ff0000u) >> 8) | \ - (((__bsx) & 0x0000ff00u) << 8) | (((__bsx) & 0x000000ffu) << 24)); })) + ({ register unsigned int __bsx = (x); __bswap_constant_32 (__bsx); })) #else static __inline unsigned int __bswap_32 (unsigned int __bsx) { - return ((((__bsx) & 0xff000000u) >> 24) | (((__bsx) & 0x00ff0000u) >> 8) | - (((__bsx) & 0x0000ff00u) << 8) | (((__bsx) & 0x000000ffu) << 24)); + return __bswap_constant_32 (__bsx); } #endif diff --git a/sysdeps/generic/bits/byteswap.h b/sysdeps/generic/bits/byteswap.h index 5f08fed613..949ed0bc9d 100644 --- a/sysdeps/generic/bits/byteswap.h +++ b/sysdeps/generic/bits/byteswap.h @@ -25,32 +25,35 @@ #define _BITS_BYTESWAP_H 1 /* Swap bytes in 16 bit value. */ +#define __bswap_constant_16(x) \ + ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)) + #ifdef __GNUC__ # define __bswap_16(x) \ (__extension__ \ - ({ unsigned short int __bsx = (x); \ - ((((__bsx) >> 8) & 0xffu) | (((__bsx) & 0xffu) << 8)); })) + ({ unsigned short int __bsx = (x); __bswap_constant_16 (__bsx); })) #else static __inline unsigned short int __bswap_16 (unsigned short int __bsx) { - return ((((__bsx) >> 8) & 0xffu) | (((__bsx) & 0xffu) << 8)); + return __bswap_constant_16 (__bsx); } #endif /* Swap bytes in 32 bit value. */ +#define __bswap_constant_32(x) \ + ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \ + (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) + #ifdef __GNUC__ # define __bswap_32(x) \ (__extension__ \ - ({ unsigned int __bsx = (x); \ - ((((__bsx) & 0xff000000u) >> 24) | (((__bsx) & 0x00ff0000u) >> 8) | \ - (((__bsx) & 0x0000ff00u) << 8) | (((__bsx) & 0x000000ffu) << 24)); })) + ({ register unsigned int __bsx = (x); __bswap_constant_32 (__bsx); })) #else static __inline unsigned int __bswap_32 (unsigned int __bsx) { - return ((((__bsx) & 0xff000000u) >> 24) | (((__bsx) & 0x00ff0000u) >> 8) | - (((__bsx) & 0x0000ff00u) << 8) | (((__bsx) & 0x000000ffu) << 24)); + return __bswap_constant_32 (__bsx); } #endif |