xref: /titanic_52/usr/src/head/endian.h (revision 3b4b8bda7949c2c1bf610c9f0413accc9d26119a)
1*3b4b8bdaSRobert Mustacchi /*
2*3b4b8bdaSRobert Mustacchi  * This file and its contents are supplied under the terms of the
3*3b4b8bdaSRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
4*3b4b8bdaSRobert Mustacchi  * You may only use this file in accordance with the terms of version
5*3b4b8bdaSRobert Mustacchi  * 1.0 of the CDDL.
6*3b4b8bdaSRobert Mustacchi  *
7*3b4b8bdaSRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
8*3b4b8bdaSRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
9*3b4b8bdaSRobert Mustacchi  * http://www.illumos.org/license/CDDL.
10*3b4b8bdaSRobert Mustacchi  */
11*3b4b8bdaSRobert Mustacchi 
12*3b4b8bdaSRobert Mustacchi /*
13*3b4b8bdaSRobert Mustacchi  * Copyright 2016 Joyent, Inc.
14*3b4b8bdaSRobert Mustacchi  */
15*3b4b8bdaSRobert Mustacchi 
16*3b4b8bdaSRobert Mustacchi #ifndef _ENDIAN_H
17*3b4b8bdaSRobert Mustacchi #define	_ENDIAN_H
18*3b4b8bdaSRobert Mustacchi 
19*3b4b8bdaSRobert Mustacchi /*
20*3b4b8bdaSRobert Mustacchi  * Endian conversion routines, see endian(3C)
21*3b4b8bdaSRobert Mustacchi  */
22*3b4b8bdaSRobert Mustacchi 
23*3b4b8bdaSRobert Mustacchi #ifdef __cplusplus
24*3b4b8bdaSRobert Mustacchi extern "C" {
25*3b4b8bdaSRobert Mustacchi #endif
26*3b4b8bdaSRobert Mustacchi 
27*3b4b8bdaSRobert Mustacchi #include <sys/isa_defs.h>
28*3b4b8bdaSRobert Mustacchi #include <inttypes.h>
29*3b4b8bdaSRobert Mustacchi 
30*3b4b8bdaSRobert Mustacchi #define	LITTLE_ENDIAN	1234
31*3b4b8bdaSRobert Mustacchi #define	BIG_ENDIAN	4321
32*3b4b8bdaSRobert Mustacchi #define	PDP_ENDIAN	3412
33*3b4b8bdaSRobert Mustacchi 
34*3b4b8bdaSRobert Mustacchi #ifdef	_LITTLE_ENDIAN
35*3b4b8bdaSRobert Mustacchi #define	BYTE_ORDER	LITTLE_ENDIAN
36*3b4b8bdaSRobert Mustacchi #elif	_BIG_ENDIAN
37*3b4b8bdaSRobert Mustacchi #define	BYTE_ORDER	BIG_ENDIAN
38*3b4b8bdaSRobert Mustacchi #else
39*3b4b8bdaSRobert Mustacchi #error	"Unknown byte order"
40*3b4b8bdaSRobert Mustacchi #endif	/* _LITTLE_ENDIAN */
41*3b4b8bdaSRobert Mustacchi 
42*3b4b8bdaSRobert Mustacchi extern uint16_t htobe16(uint16_t);
43*3b4b8bdaSRobert Mustacchi extern uint32_t htobe32(uint32_t);
44*3b4b8bdaSRobert Mustacchi extern uint64_t htobe64(uint64_t);
45*3b4b8bdaSRobert Mustacchi 
46*3b4b8bdaSRobert Mustacchi extern uint16_t htole16(uint16_t);
47*3b4b8bdaSRobert Mustacchi extern uint32_t htole32(uint32_t);
48*3b4b8bdaSRobert Mustacchi extern uint64_t htole64(uint64_t);
49*3b4b8bdaSRobert Mustacchi 
50*3b4b8bdaSRobert Mustacchi /* Supply both the old and new BSD names */
51*3b4b8bdaSRobert Mustacchi extern uint16_t betoh16(uint16_t);
52*3b4b8bdaSRobert Mustacchi extern uint16_t letoh16(uint16_t);
53*3b4b8bdaSRobert Mustacchi extern uint16_t be16toh(uint16_t);
54*3b4b8bdaSRobert Mustacchi extern uint16_t le16toh(uint16_t);
55*3b4b8bdaSRobert Mustacchi 
56*3b4b8bdaSRobert Mustacchi extern uint32_t betoh32(uint32_t);
57*3b4b8bdaSRobert Mustacchi extern uint32_t letoh32(uint32_t);
58*3b4b8bdaSRobert Mustacchi extern uint32_t be32toh(uint32_t);
59*3b4b8bdaSRobert Mustacchi extern uint32_t le32toh(uint32_t);
60*3b4b8bdaSRobert Mustacchi 
61*3b4b8bdaSRobert Mustacchi extern uint64_t betoh64(uint64_t);
62*3b4b8bdaSRobert Mustacchi extern uint64_t letoh64(uint64_t);
63*3b4b8bdaSRobert Mustacchi extern uint64_t be64toh(uint64_t);
64*3b4b8bdaSRobert Mustacchi extern uint64_t le64toh(uint64_t);
65*3b4b8bdaSRobert Mustacchi 
66*3b4b8bdaSRobert Mustacchi #ifdef __cplusplus
67*3b4b8bdaSRobert Mustacchi }
68*3b4b8bdaSRobert Mustacchi #endif
69*3b4b8bdaSRobert Mustacchi 
70*3b4b8bdaSRobert Mustacchi #endif /* _ENDIAN_H */
71