1/* Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file.
4 */
5
6#ifndef VBOOT_REFERENCE_UTILITY_CGPT_ENDIAN_H_
7#define VBOOT_REFERENCE_UTILITY_CGPT_ENDIAN_H_
8
9// Newer distros already have this. For those that don't, we add it here.
10#ifndef HAVE_MACOS
11#include <endian.h>
12#endif
13
14#ifndef le16toh
15
16#ifndef HAVE_MACOS
17# include <byteswap.h>
18#endif
19
20# if __BYTE_ORDER == __LITTLE_ENDIAN
21#  define htobe16(x) __bswap_16 (x)
22#  define htole16(x) (x)
23#  define be16toh(x) __bswap_16 (x)
24#  define le16toh(x) (x)
25
26#  define htobe32(x) __bswap_32 (x)
27#  define htole32(x) (x)
28#  define be32toh(x) __bswap_32 (x)
29#  define le32toh(x) (x)
30
31#  define htobe64(x) __bswap_64 (x)
32#  define htole64(x) (x)
33#  define be64toh(x) __bswap_64 (x)
34#  define le64toh(x) (x)
35# else
36#  define htobe16(x) (x)
37#  define htole16(x) __bswap_16 (x)
38#  define be16toh(x) (x)
39#  define le16toh(x) __bswap_16 (x)
40
41#  define htobe32(x) (x)
42#  define htole32(x) __bswap_32 (x)
43#  define be32toh(x) (x)
44#  define le32toh(x) __bswap_32 (x)
45
46#  define htobe64(x) (x)
47#  define htole64(x) __bswap_64 (x)
48#  define be64toh(x) (x)
49#  define le64toh(x) __bswap_64 (x)
50# endif
51
52#endif
53#endif  // VBOOT_REFERENCE_UTILITY_CGPT_ENDIAN_H_
54