| // Copyright 2023 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef HWSEC_OPTEE_TA_BUILTIN_ENDIAN_H_ |
| #define HWSEC_OPTEE_TA_BUILTIN_ENDIAN_H_ |
| |
| #include <stdint.h> |
| |
| /* |
| * Functions to convert byte order in various sized big endian integers to |
| * host byte order. Note that the code currently does not require functions |
| * for converting little endian integers. |
| */ |
| #if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) |
| |
| static inline uint16_t be16toh(uint16_t in) { |
| return __builtin_bswap16(in); |
| } |
| static inline uint32_t be32toh(uint32_t in) { |
| return __builtin_bswap32(in); |
| } |
| static inline uint64_t be64toh(uint64_t in) { |
| return __builtin_bswap64(in); |
| } |
| |
| #define htobe16 be16toh |
| #define htobe32 be32toh |
| #define htobe64 be64toh |
| |
| #define htole16(x) (uint16_t)(x) |
| #define htole32(x) (uint32_t)(x) |
| #define htole64(x) (uint64_t)(x) |
| |
| #endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ |
| |
| #endif // HWSEC_OPTEE_TA_BUILTIN_ENDIAN_H_ |