| /* Copyright (C) 1992-2021 Free Software Foundation, Inc. |
| This file is part of the GNU C Library. |
| |
| The GNU C Library is free software; you can redistribute it and/or |
| modify it under the terms of the GNU Lesser General Public |
| License as published by the Free Software Foundation; either |
| version 2.1 of the License, or (at your option) any later version. |
| |
| The GNU C Library is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| Lesser General Public License for more details. |
| |
| You should have received a copy of the GNU Lesser General Public |
| License along with the GNU C Library; if not, see |
| <https://www.gnu.org/licenses/>. */ |
| |
| #ifndef _ENDIAN_H |
| #define _ENDIAN_H 1 |
| |
| #include <features.h> |
| |
| /* Get the definitions of __*_ENDIAN, __BYTE_ORDER, and __FLOAT_WORD_ORDER. */ |
| #include <bits/endian.h> |
| |
| #ifdef __USE_MISC |
| # define LITTLE_ENDIAN __LITTLE_ENDIAN |
| # define BIG_ENDIAN __BIG_ENDIAN |
| # define PDP_ENDIAN __PDP_ENDIAN |
| # define BYTE_ORDER __BYTE_ORDER |
| #endif |
| |
| #if defined __USE_MISC && !defined __ASSEMBLER__ |
| /* Conversion interfaces. */ |
| # include <bits/byteswap.h> |
| # include <bits/uintn-identity.h> |
| |
| # if __BYTE_ORDER == __LITTLE_ENDIAN |
| # define htobe16(x) __bswap_16 (x) |
| # define htole16(x) __uint16_identity (x) |
| # define be16toh(x) __bswap_16 (x) |
| # define le16toh(x) __uint16_identity (x) |
| |
| # define htobe32(x) __bswap_32 (x) |
| # define htole32(x) __uint32_identity (x) |
| # define be32toh(x) __bswap_32 (x) |
| # define le32toh(x) __uint32_identity (x) |
| |
| # define htobe64(x) __bswap_64 (x) |
| # define htole64(x) __uint64_identity (x) |
| # define be64toh(x) __bswap_64 (x) |
| # define le64toh(x) __uint64_identity (x) |
| |
| # else |
| # define htobe16(x) __uint16_identity (x) |
| # define htole16(x) __bswap_16 (x) |
| # define be16toh(x) __uint16_identity (x) |
| # define le16toh(x) __bswap_16 (x) |
| |
| # define htobe32(x) __uint32_identity (x) |
| # define htole32(x) __bswap_32 (x) |
| # define be32toh(x) __uint32_identity (x) |
| # define le32toh(x) __bswap_32 (x) |
| |
| # define htobe64(x) __uint64_identity (x) |
| # define htole64(x) __bswap_64 (x) |
| # define be64toh(x) __uint64_identity (x) |
| # define le64toh(x) __bswap_64 (x) |
| # endif |
| #endif |
| |
| #endif /* endian.h */ |