diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-04-18 15:29:21 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2016-04-19 16:36:51 +0200 |
commit | 76a2110b473c12eb7a9c9e5d15d54309db5f8b9c (patch) | |
tree | bb66d54e37b313f2928f72e739abb25586f50532 /winsup/cygwin/include/asm/byteorder.h | |
parent | 7a5b4524431110fde4e9336f64ade73ab2c26b6b (diff) | |
download | cygnal-76a2110b473c12eb7a9c9e5d15d54309db5f8b9c.tar.gz cygnal-76a2110b473c12eb7a9c9e5d15d54309db5f8b9c.tar.bz2 cygnal-76a2110b473c12eb7a9c9e5d15d54309db5f8b9c.zip |
BSD compatibility for <machine/endian.h>
Introduce <machine/_endian.h> to let target based customization of
<machine/endian.h> via
* _LITTLE_ENDIAN,
* _BIG_ENDIAN,
* _PDP_ENDIAN, and
* _BYTE_ORDER.
defines. Add definitions expected by FreeBSD to
<machine/endian.h> like
* _QUAD_HIGHWORD,
* _QUAD_LOWWORD,
* __bswap16(),
* __bswap32(),
* __bswap64(),
* __htonl(),
* __htons(),
* __ntohl(), and
* __ntohs().
Also, if __BSD_VISIBLE
* LITTLE_ENDIAN,
* BIG_ENDIAN,
* PDP_ENDIAN, and
* BYTE_ORDER.
Targets that define __machine_host_to_from_network_defined in
<machine/_endian.h> must provide their own implementation of
* __htonl(),
* __htons(),
* __ntohl(), and
* __ntohs(),
otherwise a default implementation is provided by <machine/endian.h>.
In case of GCC defines to builtins are used.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
Diffstat (limited to 'winsup/cygwin/include/asm/byteorder.h')
-rw-r--r-- | winsup/cygwin/include/asm/byteorder.h | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/winsup/cygwin/include/asm/byteorder.h b/winsup/cygwin/include/asm/byteorder.h index 4f5d7cb59..14529bfa2 100644 --- a/winsup/cygwin/include/asm/byteorder.h +++ b/winsup/cygwin/include/asm/byteorder.h @@ -11,9 +11,8 @@ details. */ #ifndef _I386_BYTEORDER_H #define _I386_BYTEORDER_H -#include <_ansi.h> #include <stdint.h> -#include <bits/endian.h> +#include <machine/endian.h> #ifdef __cplusplus extern "C" { @@ -28,37 +27,16 @@ extern uint16_t ntohs(uint16_t); extern uint32_t htonl(uint32_t); extern uint16_t htons(uint16_t); -_ELIDABLE_INLINE uint32_t __ntohl(uint32_t); -_ELIDABLE_INLINE uint16_t __ntohs(uint16_t); - -_ELIDABLE_INLINE uint32_t -__ntohl(uint32_t x) -{ - __asm__("bswap %0" : "=r" (x) : "0" (x)); - return x; -} - #define __constant_ntohl(x) \ ((uint32_t)((((uint32_t)(x) & 0x000000ffU) << 24) | \ (((uint32_t)(x) & 0x0000ff00U) << 8) | \ (((uint32_t)(x) & 0x00ff0000U) >> 8) | \ (((uint32_t)(x) & 0xff000000U) >> 24))) -_ELIDABLE_INLINE uint16_t -__ntohs(uint16_t x) -{ - __asm__("xchgb %b0,%h0" /* swap bytes */ - : "=Q" (x) - : "0" (x)); - return x; -} - #define __constant_ntohs(x) \ ((uint16_t)((((uint16_t)(x) & 0x00ff) << 8) | \ (((uint16_t)(x) & 0xff00) >> 8))) \ -#define __htonl(x) __ntohl(x) -#define __htons(x) __ntohs(x) #define __constant_htonl(x) __constant_ntohl(x) #define __constant_htons(x) __constant_ntohs(x) |