59 lines
1.7 KiB
C
59 lines
1.7 KiB
C
/*
|
|
* Copyright (c) 2006-2023, RT-Thread Development Team
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Change Logs:
|
|
* Date Author Notes
|
|
* 2023-02-25 GuEe-GUI the first version
|
|
*/
|
|
|
|
#ifndef __BYTEORDER__
|
|
#define __BYTEORDER__
|
|
|
|
#ifdef __CHECKER__
|
|
#define __bitwise __attribute__((bitwise))
|
|
#else
|
|
#define __bitwise
|
|
#endif
|
|
|
|
typedef rt_uint16_t __bitwise rt_le16_t;
|
|
typedef rt_uint32_t __bitwise rt_le32_t;
|
|
typedef rt_uint64_t __bitwise rt_le64_t;
|
|
typedef rt_uint16_t __bitwise rt_be16_t;
|
|
typedef rt_uint32_t __bitwise rt_be32_t;
|
|
typedef rt_uint64_t __bitwise rt_be64_t;
|
|
|
|
/* gcc defines __BIG_ENDIAN__ on big endian targets */
|
|
#if defined(__BIG_ENDIAN__) || defined(ARCH_CPU_BIG_ENDIAN)
|
|
#define rt_cpu_to_be16(x) (x)
|
|
#define rt_cpu_to_be32(x) (x)
|
|
#define rt_cpu_to_be64(x) (x)
|
|
#define rt_be16_to_cpu(x) (x)
|
|
#define rt_be32_to_cpu(x) (x)
|
|
#define rt_be64_to_cpu(x) (x)
|
|
#define rt_le16_to_cpu(x) __builtin_bswap16(x)
|
|
#define rt_le32_to_cpu(x) __builtin_bswap32(x)
|
|
#define rt_le64_to_cpu(x) __builtin_bswap64(x)
|
|
#define rt_cpu_to_le16(x) __builtin_bswap16(x)
|
|
#define rt_cpu_to_le32(x) __builtin_bswap32(x)
|
|
#define rt_cpu_to_le64(x) __builtin_bswap64(x)
|
|
#else
|
|
#define rt_cpu_to_be16(x) __builtin_bswap16(x)
|
|
#define rt_cpu_to_be32(x) __builtin_bswap32(x)
|
|
#define rt_cpu_to_be64(x) __builtin_bswap64(x)
|
|
#define rt_be16_to_cpu(x) __builtin_bswap16(x)
|
|
#define rt_be32_to_cpu(x) __builtin_bswap32(x)
|
|
#define rt_be64_to_cpu(x) __builtin_bswap64(x)
|
|
#define rt_le16_to_cpu(x) (x)
|
|
#define rt_le32_to_cpu(x) (x)
|
|
#define rt_le64_to_cpu(x) (x)
|
|
#define rt_cpu_to_le16(x) (x)
|
|
#define rt_cpu_to_le32(x) (x)
|
|
#define rt_cpu_to_le64(x) (x)
|
|
#endif /* __BIG_ENDIAN__ || ARCH_CPU_BIG_ENDIAN */
|
|
|
|
#undef __bitwise
|
|
|
|
#endif /* __BYTEORDER__ */
|