This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push: new 32d0c2ce9d libc: Add sys/endian.h to improve the compatiblity with bionic libc 32d0c2ce9d is described below commit 32d0c2ce9de22f6be4432168d896bf413700c263 Author: Xiang Xiao <xiaoxi...@xiaomi.com> AuthorDate: Sun Jan 15 19:56:26 2023 +0800 libc: Add sys/endian.h to improve the compatiblity with bionic libc and move the definition from endian.h to sys/endian.h Signed-off-by: Xiang Xiao <xiaoxi...@xiaomi.com> --- include/endian.h | 141 +-------------------------------------------- include/{ => sys}/endian.h | 8 +-- 2 files changed, 5 insertions(+), 144 deletions(-) diff --git a/include/endian.h b/include/endian.h index a9050fa66b..a428cdb71f 100644 --- a/include/endian.h +++ b/include/endian.h @@ -25,145 +25,6 @@ * Included Files ****************************************************************************/ -#include <nuttx/config.h> -#include <nuttx/compiler.h> -#include <stdint.h> - -/**************************************************************************** - * Preprocessor definitions - ****************************************************************************/ - -/* The endian.h header must define at least the following macros for use in - * determining host byte order for integer types: - * - * BYTE_ORDER This macro will have a value equal to one of the *_ENDIAN - * macros in this header. - * LITTLE_ENDIAN If BYTE_ORDER == LITTLE_ENDIAN, the host byte order is - * from least significant to most significant. - * BIG_ENDIAN If BYTE_ORDER == BIG_ENDIAN, the host byte order is from - * most significant to least significant. - */ - -#define LITTLE_ENDIAN 1234 -#define __LITTLE_ENDIAN 1234 -#define BIG_ENDIAN 4321 -#define __BIG_ENDIAN 4321 - -/* Common byte swapping macros */ - -#ifdef CONFIG_HAVE_BUILTIN_BSWAP16 -# define __swap_uint16 __builtin_bswap16 -#else -# define __swap_uint16(n) \ - (uint16_t)(((((uint16_t)(n)) & 0x00ff) << 8) | \ - ((((uint16_t)(n)) >> 8) & 0x00ff)) -#endif - -#ifdef CONFIG_HAVE_BUILTIN_BSWAP32 -# define __swap_uint32 __builtin_bswap32 -#else -# define __swap_uint32(n) \ - (uint32_t)(((((uint32_t)(n)) & 0x000000ffUL) << 24) | \ - ((((uint32_t)(n)) & 0x0000ff00UL) << 8) | \ - ((((uint32_t)(n)) & 0x00ff0000UL) >> 8) | \ - ((((uint32_t)(n)) & 0xff000000UL) >> 24)) -#endif - -#ifdef CONFIG_HAVE_LONG_LONG -# ifdef CONFIG_HAVE_BUILTIN_BSWAP64 -# define __swap_uint64 __builtin_bswap64 -# else -# define __swap_uint64(n) \ - (uint64_t)(((((uint64_t)(n)) & 0x00000000000000ffULL) << 56) | \ - ((((uint64_t)(n)) & 0x000000000000ff00ULL) << 40) | \ - ((((uint64_t)(n)) & 0x0000000000ff0000ULL) << 24) | \ - ((((uint64_t)(n)) & 0x00000000ff000000ULL) << 8) | \ - ((((uint64_t)(n)) & 0x000000ff00000000ULL) >> 8) | \ - ((((uint64_t)(n)) & 0x0000ff0000000000ULL) >> 24) | \ - ((((uint64_t)(n)) & 0x00ff000000000000ULL) >> 40) | \ - ((((uint64_t)(n)) & 0xff00000000000000ULL) >> 56)) -# endif -#endif - -/* Endian-specific definitions */ - -#ifdef CONFIG_ENDIAN_BIG -/* Big-endian byte order */ - -# define BYTE_ORDER BIG_ENDIAN -# define __BYTE_ORDER BIG_ENDIAN - -/* Big-endian byte order macros */ - -# define htobe16(n) (n) -# define htole16(n) __swap_uint16((uint16_t)n) -# define be16toh(n) (n) -# define le16toh(n) __swap_uint16((uint16_t)n) - -# define htobe32(n) (n) -# define htole32(n) __swap_uint32((uint32_t)n) -# define be32toh(n) (n) -# define le32toh(n) __swap_uint32(n) - -# ifdef CONFIG_HAVE_LONG_LONG -# define htobe64(n) (n) -# define htole64(n) __swap_uint64((uint64_t)n) -# define be64toh(n) (n) -# define le64toh(n) __swap_uint64((uint64_t)n) -# endif - -#else -/* Little-endian byte order */ - -# define BYTE_ORDER LITTLE_ENDIAN -# define __BYTE_ORDER __LITTLE_ENDIAN - -/* Little-endian byte order macros */ - -# define htobe16(n) __swap_uint16((uint16_t)n) -# define htole16(n) (n) -# define be16toh(n) __swap_uint16((uint16_t)n) -# define le16toh(n) (n) - -# define htobe32(n) __swap_uint32((uint32_t)n) -# define htole32(n) (n) -# define be32toh(n) __swap_uint32((uint32_t)n) -# define le32toh(n) (n) - -# ifdef CONFIG_HAVE_LONG_LONG -# define htobe64(n) __swap_uint64((uint64_t)n) -# define htole64(n) (n) -# define be64toh(n) __swap_uint64((uint64_t)n) -# define le64toh(n) (n) -# endif -#endif - -/* OpenBSD style */ - -#define swap16 __swap_uint16 -#define swap32 __swap_uint32 -#define swap64 __swap_uint64 - -#define betoh16 be16toh -#define letoh16 le16toh -#define bemtoh16(x) betoh16(*(FAR uint16_t *)(x)) -#define htobem16(x, v) (*(FAR uint16_t *)(x) = htobe16(v)) -#define lemtoh16(x) letoh16(*(FAR uint16_t *)(x)) -#define htolem16(x, v) (*(FAR uint16_t *)(x) = htole16(v)) -#define betoh32 be32toh -#define letoh32 le32toh -#define bemtoh32(x) htobe32(*(FAR uint32_t *)(x)) -#define htobem32(x, v) (*(FAR uint32_t *)(x) = htobe32(v)) -#define lemtoh32(x) letoh32(*(FAR uint32_t *)(x)) -#define htolem32(x, v) (*(FAR uint32_t *)(x) = htole32(v)) - -#ifdef CONFIG_HAVE_LONG_LONG -#define betoh64 be64toh -#define letoh64 le64toh -#define bemtoh64(x) htobe64(*(FAR uint64_t *)(x)) -#define htobem64(x, v) (*(FAR uint64_t *)(x) = htobe64(v)) -#define lemtoh64(x) letoh64(*(FAR uint64_t *)(x)) -#define htolem64(x, v) (*(FAR uint64_t *)(x) = htole64(v)) -#endif +#include <sys/endian.h> #endif /* __INCLUDE_ENDIAN_H */ diff --git a/include/endian.h b/include/sys/endian.h similarity index 98% copy from include/endian.h copy to include/sys/endian.h index a9050fa66b..4946a2e461 100644 --- a/include/endian.h +++ b/include/sys/endian.h @@ -1,5 +1,5 @@ /**************************************************************************** - * include/endian.h + * include/sys/endian.h * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -18,8 +18,8 @@ * ****************************************************************************/ -#ifndef __INCLUDE_ENDIAN_H -#define __INCLUDE_ENDIAN_H +#ifndef __INCLUDE_SYS_ENDIAN_H +#define __INCLUDE_SYS_ENDIAN_H /**************************************************************************** * Included Files @@ -166,4 +166,4 @@ #define htolem64(x, v) (*(FAR uint64_t *)(x) = htole64(v)) #endif -#endif /* __INCLUDE_ENDIAN_H */ +#endif /* __INCLUDE_SYS_ENDIAN_H */