diff --git a/configure.ac b/configure.ac index 8881ec34f..07c552094 100644 --- a/configure.ac +++ b/configure.ac @@ -147,66 +147,6 @@ fi AC_TYPE_PID_T -# Checks for headers/macros for byte swapping -# Known variants: -# bswap_16, bswap_32, bswap_64 (glibc) -# __swap16, __swap32, __swap64 (OpenBSD) -# bswap16, bswap32, bswap64 (other BSD's) -# and a fallback to local macros if none of the above are found - -# if is found, assume it's the correct version -AC_CHECK_HEADERS([byteswap.h]) - -# if is found, have to check which version -AC_CHECK_HEADER([sys/endian.h], [HAVE_SYS_ENDIAN_H="yes"], [HAVE_SYS_ENDIAN_H="no"]) - -if test "x$HAVE_SYS_ENDIAN_H" = "xyes" ; then - AC_MSG_CHECKING([for __swap16 variant of byteswapping macros]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([ -#include -#include - ], [ -int a = 1, b; -b = __swap16(a); - ]) -], [SYS_ENDIAN__SWAP='yes'], [SYS_ENDIAN__SWAP='no']) - AC_MSG_RESULT([$SYS_ENDIAN__SWAP]) - - AC_MSG_CHECKING([for bswap16 variant of byteswapping macros]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([ -#include -#include - ], [ -int a = 1, b; -b = bswap16(a); - ]) -], [SYS_ENDIAN_BSWAP='yes'], [SYS_ENDIAN_BSWAP='no']) - AC_MSG_RESULT([$SYS_ENDIAN_BSWAP]) - - if test "$SYS_ENDIAN_BSWAP" = "yes" ; then - USE_SYS_ENDIAN_H=yes - BSWAP=bswap - else - if test "$SYS_ENDIAN__SWAP" = "yes" ; then - USE_SYS_ENDIAN_H=yes - BSWAP=__swap - else - USE_SYS_ENDIAN_H=no - fi - fi - - if test "$USE_SYS_ENDIAN_H" = "yes" ; then - AC_DEFINE([USE_SYS_ENDIAN_H], 1, - [Define to use byteswap macros from ]) - AC_DEFINE_UNQUOTED([bswap_16], ${BSWAP}16, - [Define to 16-bit byteswap macro]) - AC_DEFINE_UNQUOTED([bswap_32], ${BSWAP}32, - [Define to 32-bit byteswap macro]) - AC_DEFINE_UNQUOTED([bswap_64], ${BSWAP}64, - [Define to 64-bit byteswap macro]) - fi -fi - dnl Check to see if dlopen is in default libraries (like Solaris, which dnl has it in libc), or if libdl is needed to get it. AC_CHECK_FUNC([dlopen], [], diff --git a/glx/glxbyteorder.h b/glx/glxbyteorder.h index aa88b44b9..5e94e8626 100644 --- a/glx/glxbyteorder.h +++ b/glx/glxbyteorder.h @@ -35,27 +35,27 @@ #include #endif -#if HAVE_BYTESWAP_H -#include -#elif defined(USE_SYS_ENDIAN_H) -#include -#elif defined(__APPLE__) -#include -#define bswap_16 OSSwapInt16 -#define bswap_32 OSSwapInt32 -#define bswap_64 OSSwapInt64 -#else -#define bswap_16(value) \ - ((((value) & 0xff) << 8) | ((value) >> 8)) +#include "misc.h" -#define bswap_32(value) \ - (((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \ - (uint32_t)bswap_16((uint16_t)((value) >> 16))) +static inline uint16_t +bswap_16(uint16_t val) +{ + swap_uint16(&val); + return val; +} -#define bswap_64(value) \ - (((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \ - << 32) | \ - (uint64_t)bswap_32((uint32_t)((value) >> 32))) -#endif +static inline uint32_t +bswap_32(uint32_t val) +{ + swap_uint32(&val); + return val; +} + +static inline uint64_t +bswap_64(uint64_t val) +{ + swap_uint64(&val); + return val; +} #endif /* !defined(__GLXBYTEORDER_H__) */ diff --git a/include/dix-config.h.in b/include/dix-config.h.in index a59d441bb..ad1ab20a6 100644 --- a/include/dix-config.h.in +++ b/include/dix-config.h.in @@ -63,9 +63,6 @@ /* Has libunwind support */ #undef HAVE_LIBUNWIND -/* Define to 1 if you have the header file. */ -#undef HAVE_BYTESWAP_H - /* Define to 1 if you have the `cbrt' function. */ #undef HAVE_CBRT @@ -322,9 +319,6 @@ /* Support UNIX socket connections */ #undef UNIXCONN -/* Define to use byteswap macros from */ -#undef USE_SYS_ENDIAN_H - /* unaligned word accesses behave as expected */ #undef WORKING_UNALIGNED_INT @@ -454,15 +448,6 @@ /* Define to 1 if the DTrace Xserver provider probes should be built in */ #undef XSERVER_DTRACE -/* Define to 16-bit byteswap macro */ -#undef bswap_16 - -/* Define to 32-bit byteswap macro */ -#undef bswap_32 - -/* Define to 64-bit byteswap macro */ -#undef bswap_64 - /* Define to 1 if typeof works with your compiler. */ #undef HAVE_TYPEOF