xref: /aosp_15_r20/external/vboot_reference/cgpt/cgpt_endian.h (revision 8617a60d3594060b7ecbd21bc622a7c14f3cf2bc)
1 /* Copyright 2010 The ChromiumOS Authors
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_CGPT_ENDIAN_H_
7 #define VBOOT_REFERENCE_CGPT_ENDIAN_H_
8 
9 // Newer distros already have this. For those that don't, we add it here.
10 #if !defined(HAVE_MACOS) && !defined(__FreeBSD__)
11 #include <endian.h>
12 #elif defined(__FreeBSD__)
13 #include <sys/endian.h>
14 #endif
15 
16 #ifndef le16toh
17 
18 #ifndef HAVE_MACOS
19 # include <byteswap.h>
20 #endif
21 
22 # if __BYTE_ORDER == __LITTLE_ENDIAN
23 #  define htobe16(x) __bswap_16 (x)
24 #  define htole16(x) (x)
25 #  define be16toh(x) __bswap_16 (x)
26 #  define le16toh(x) (x)
27 
28 #  define htobe32(x) __bswap_32 (x)
29 #  define htole32(x) (x)
30 #  define be32toh(x) __bswap_32 (x)
31 #  define le32toh(x) (x)
32 
33 #  define htobe64(x) __bswap_64 (x)
34 #  define htole64(x) (x)
35 #  define be64toh(x) __bswap_64 (x)
36 #  define le64toh(x) (x)
37 # else
38 #  define htobe16(x) (x)
39 #  define htole16(x) __bswap_16 (x)
40 #  define be16toh(x) (x)
41 #  define le16toh(x) __bswap_16 (x)
42 
43 #  define htobe32(x) (x)
44 #  define htole32(x) __bswap_32 (x)
45 #  define be32toh(x) (x)
46 #  define le32toh(x) __bswap_32 (x)
47 
48 #  define htobe64(x) (x)
49 #  define htole64(x) __bswap_64 (x)
50 #  define be64toh(x) (x)
51 #  define le64toh(x) __bswap_64 (x)
52 # endif
53 
54 #endif
55 
56 #endif  /* VBOOT_REFERENCE_CGPT_ENDIAN_H_ */
57