xref: /titanic_44/usr/src/lib/libc/sparc/gen/endian.c (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 (c) 2015, Joyent, Inc.
14*577bdc16SRobert Mustacchi  */
15*577bdc16SRobert Mustacchi 
16*577bdc16SRobert Mustacchi /*
17*577bdc16SRobert Mustacchi  * endian(3C) routines
18*577bdc16SRobert Mustacchi  */
19*577bdc16SRobert Mustacchi 
20*577bdc16SRobert Mustacchi uint16_t
htole16(uint16_t in)21*577bdc16SRobert Mustacchi htole16(uint16_t in)
22*577bdc16SRobert Mustacchi {
23*577bdc16SRobert Mustacchi 	return (((in & 0xff) << 8) | ((in & 0xff00) >> 8));
24*577bdc16SRobert Mustacchi }
25*577bdc16SRobert Mustacchi 
26*577bdc16SRobert Mustacchi uint32_t
htole32(uint32_t in)27*577bdc16SRobert Mustacchi htole32(uint32_t in)
28*577bdc16SRobert Mustacchi {
29*577bdc16SRobert Mustacchi 	return (((in & 0xffUL) << 24) |
30*577bdc16SRobert Mustacchi 	    (in & 0xff00UL) << 8 |
31*577bdc16SRobert Mustacchi 	    (in & 0xff0000UL) >> 8 |
32*577bdc16SRobert Mustacchi 	    ((in & 0xff000000UL) >> 24));
33*577bdc16SRobert Mustacchi }
34*577bdc16SRobert Mustacchi 
35*577bdc16SRobert Mustacchi uint64_t
htole64(uint64_t in)36*577bdc16SRobert Mustacchi htole64(uint64_t in)
37*577bdc16SRobert Mustacchi {
38*577bdc16SRobert Mustacchi 	return (((in & 0xffULL) << 56) |
39*577bdc16SRobert Mustacchi 	    ((in & 0xff00ULL) << 40) |
40*577bdc16SRobert Mustacchi 	    ((in & 0xff0000ULL) << 24) |
41*577bdc16SRobert Mustacchi 	    ((in & 0xff000000ULL) << 8) |
42*577bdc16SRobert Mustacchi 	    ((in & 0xff00000000ULL) >> 8) |
43*577bdc16SRobert Mustacchi 	    ((in & 0xff0000000000ULL) >> 24) |
44*577bdc16SRobert Mustacchi 	    ((in & 0xff000000000000ULL) >> 40) |
45*577bdc16SRobert Mustacchi 	    ((in & 0xff00000000000000ULL) >> 56));
46*577bdc16SRobert Mustacchi }
47*577bdc16SRobert Mustacchi 
48*577bdc16SRobert Mustacchi uint16_t
letoh16(uint16_t in)49*577bdc16SRobert Mustacchi letoh16(uint16_t in)
50*577bdc16SRobert Mustacchi {
51*577bdc16SRobert Mustacchi 	return (((in & 0xff) << 8) | ((in & 0xff00) >> 8));
52*577bdc16SRobert Mustacchi }
53*577bdc16SRobert Mustacchi 
54*577bdc16SRobert Mustacchi uint16_t
le16toh(uint16_t in)55*577bdc16SRobert Mustacchi le16toh(uint16_t in)
56*577bdc16SRobert Mustacchi {
57*577bdc16SRobert Mustacchi 	return (((in & 0xff) << 8) | ((in & 0xff00) >> 8));
58*577bdc16SRobert Mustacchi }
59*577bdc16SRobert Mustacchi 
60*577bdc16SRobert Mustacchi uint32_t
letoh32(uint32_t in)61*577bdc16SRobert Mustacchi letoh32(uint32_t in)
62*577bdc16SRobert Mustacchi {
63*577bdc16SRobert Mustacchi 	return (((in & 0xffUL) << 24) |
64*577bdc16SRobert Mustacchi 	    (in & 0xff00UL) << 8 |
65*577bdc16SRobert Mustacchi 	    (in & 0xff0000UL) >> 8 |
66*577bdc16SRobert Mustacchi 	    ((in & 0xff000000UL) >> 24));
67*577bdc16SRobert Mustacchi }
68*577bdc16SRobert Mustacchi 
69*577bdc16SRobert Mustacchi uint32_t
le32toh(uint32_t in)70*577bdc16SRobert Mustacchi le32toh(uint32_t in)
71*577bdc16SRobert Mustacchi {
72*577bdc16SRobert Mustacchi 	return (((in & 0xffUL) << 24) |
73*577bdc16SRobert Mustacchi 	    (in & 0xff00UL) << 8 |
74*577bdc16SRobert Mustacchi 	    (in & 0xff0000UL) >> 8 |
75*577bdc16SRobert Mustacchi 	    ((in & 0xff000000UL) >> 24));
76*577bdc16SRobert Mustacchi }
77*577bdc16SRobert Mustacchi 
78*577bdc16SRobert Mustacchi uint64_t
letoh64(uint64_t in)79*577bdc16SRobert Mustacchi letoh64(uint64_t in)
80*577bdc16SRobert Mustacchi {
81*577bdc16SRobert Mustacchi 	return (((in & 0xffULL) << 56) |
82*577bdc16SRobert Mustacchi 	    ((in & 0xff00ULL) << 40) |
83*577bdc16SRobert Mustacchi 	    ((in & 0xff0000ULL) << 24) |
84*577bdc16SRobert Mustacchi 	    ((in & 0xff000000ULL) << 8) |
85*577bdc16SRobert Mustacchi 	    ((in & 0xff00000000ULL) >> 8) |
86*577bdc16SRobert Mustacchi 	    ((in & 0xff0000000000ULL) >> 24) |
87*577bdc16SRobert Mustacchi 	    ((in & 0xff000000000000ULL) >> 40) |
88*577bdc16SRobert Mustacchi 	    ((in & 0xff00000000000000ULL) >> 56));
89*577bdc16SRobert Mustacchi }
90*577bdc16SRobert Mustacchi 
91*577bdc16SRobert Mustacchi uint64_t
le64toh(uint64_t in)92*577bdc16SRobert Mustacchi le64toh(uint64_t in)
93*577bdc16SRobert Mustacchi {
94*577bdc16SRobert Mustacchi 	return (((in & 0xffULL) << 56) |
95*577bdc16SRobert Mustacchi 	    ((in & 0xff00ULL) << 40) |
96*577bdc16SRobert Mustacchi 	    ((in & 0xff0000ULL) << 24) |
97*577bdc16SRobert Mustacchi 	    ((in & 0xff000000ULL) << 8) |
98*577bdc16SRobert Mustacchi 	    ((in & 0xff00000000ULL) >> 8) |
99*577bdc16SRobert Mustacchi 	    ((in & 0xff0000000000ULL) >> 24) |
100*577bdc16SRobert Mustacchi 	    ((in & 0xff000000000000ULL) >> 40) |
101*577bdc16SRobert Mustacchi 	    ((in & 0xff00000000000000ULL) >> 56));
102*577bdc16SRobert Mustacchi }
103*577bdc16SRobert Mustacchi 
104*577bdc16SRobert Mustacchi /* Anything to or from big-endian is a no-op */
105*577bdc16SRobert Mustacchi 
106*577bdc16SRobert Mustacchi uint16_t
htobe16(uint16_t in)107*577bdc16SRobert Mustacchi htobe16(uint16_t in)
108*577bdc16SRobert Mustacchi {
109*577bdc16SRobert Mustacchi 	return (in);
110*577bdc16SRobert Mustacchi }
111*577bdc16SRobert Mustacchi 
112*577bdc16SRobert Mustacchi uint32_t
htobe32(uint32_t in)113*577bdc16SRobert Mustacchi htobe32(uint32_t in)
114*577bdc16SRobert Mustacchi {
115*577bdc16SRobert Mustacchi 	return (in);
116*577bdc16SRobert Mustacchi }
117*577bdc16SRobert Mustacchi 
118*577bdc16SRobert Mustacchi uint64_t
htobe64(uint64_t in)119*577bdc16SRobert Mustacchi htobe64(uint64_t in)
120*577bdc16SRobert Mustacchi {
121*577bdc16SRobert Mustacchi 	return (in);
122*577bdc16SRobert Mustacchi }
123*577bdc16SRobert Mustacchi 
124*577bdc16SRobert Mustacchi uint16_t
betoh16(uint16_t in)125*577bdc16SRobert Mustacchi betoh16(uint16_t in)
126*577bdc16SRobert Mustacchi {
127*577bdc16SRobert Mustacchi 	return (in);
128*577bdc16SRobert Mustacchi }
129*577bdc16SRobert Mustacchi 
130*577bdc16SRobert Mustacchi uint16_t
be16toh(uint16_t in)131*577bdc16SRobert Mustacchi be16toh(uint16_t in)
132*577bdc16SRobert Mustacchi {
133*577bdc16SRobert Mustacchi 	return (in);
134*577bdc16SRobert Mustacchi }
135*577bdc16SRobert Mustacchi 
136*577bdc16SRobert Mustacchi uint32_t
betoh32(uint32_t in)137*577bdc16SRobert Mustacchi betoh32(uint32_t in)
138*577bdc16SRobert Mustacchi {
139*577bdc16SRobert Mustacchi 	return (in);
140*577bdc16SRobert Mustacchi }
141*577bdc16SRobert Mustacchi 
142*577bdc16SRobert Mustacchi uint32_t
be32toh(uint32_t in)143*577bdc16SRobert Mustacchi be32toh(uint32_t in)
144*577bdc16SRobert Mustacchi {
145*577bdc16SRobert Mustacchi 	return (in);
146*577bdc16SRobert Mustacchi }
147*577bdc16SRobert Mustacchi 
148*577bdc16SRobert Mustacchi uint64_t
betoh64(uint64_t in)149*577bdc16SRobert Mustacchi betoh64(uint64_t in)
150*577bdc16SRobert Mustacchi {
151*577bdc16SRobert Mustacchi 	return (in);
152*577bdc16SRobert Mustacchi }
153*577bdc16SRobert Mustacchi 
154*577bdc16SRobert Mustacchi uint64_t
be64toh(uint64_t in)155*577bdc16SRobert Mustacchi be64toh(uint64_t in)
156*577bdc16SRobert Mustacchi {
157*577bdc16SRobert Mustacchi 	return (in);
158*577bdc16SRobert Mustacchi }
159