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