From 76a2110b473c12eb7a9c9e5d15d54309db5f8b9c Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 18 Apr 2016 15:29:21 +0200 Subject: BSD compatibility for Introduce to let target based customization of via * _LITTLE_ENDIAN, * _BIG_ENDIAN, * _PDP_ENDIAN, and * _BYTE_ORDER. defines. Add definitions expected by FreeBSD to 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 must provide their own implementation of * __htonl(), * __htons(), * __ntohl(), and * __ntohs(), otherwise a default implementation is provided by . In case of GCC defines to builtins are used. Signed-off-by: Sebastian Huber --- newlib/libc/include/machine/_endian.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 newlib/libc/include/machine/_endian.h (limited to 'newlib/libc/include/machine/_endian.h') diff --git a/newlib/libc/include/machine/_endian.h b/newlib/libc/include/machine/_endian.h new file mode 100644 index 000000000..92a14dc8b --- /dev/null +++ b/newlib/libc/include/machine/_endian.h @@ -0,0 +1,35 @@ +#ifndef __MACHINE_ENDIAN_H__ +#error "must be included via " +#endif /* !__MACHINE_ENDIAN_H__ */ + +#include + +#ifdef __PPC__ +/* Get rid of GCC builtin defines on PowerPC */ +#ifdef _BIG_ENDIAN +#undef _BIG_ENDIAN +#endif +#ifdef _LITTLE_ENDIAN +#undef _LITTLE_ENDIAN +#endif +#endif /* __PPC__ */ + +#ifndef _LITTLE_ENDIAN +#define _LITTLE_ENDIAN 1234 +#endif + +#ifndef _BIG_ENDIAN +#define _BIG_ENDIAN 4321 +#endif + +#ifndef _PDP_ENDIAN +#define _PDP_ENDIAN 3412 +#endif + +#ifndef _BYTE_ORDER +#if defined(__IEEE_LITTLE_ENDIAN) || defined(__IEEE_BYTES_LITTLE_ENDIAN) +#define _BYTE_ORDER _LITTLE_ENDIAN +#else +#define _BYTE_ORDER _BIG_ENDIAN +#endif +#endif -- cgit v1.2.3