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