xref: /minix3/sys/lib/libsa/byteorder.h (revision 58a2b0008e28f606a7f7f5faaeaba4faac57a1ea)
1*58a2b000SEvgeniy Ivanov /*	$NetBSD: byteorder.h,v 1.3 2001/10/31 20:22:22 thorpej Exp $	*/
2*58a2b000SEvgeniy Ivanov 
3*58a2b000SEvgeniy Ivanov /*
4*58a2b000SEvgeniy Ivanov  * Copyright 2001 Wasabi Systems, Inc.
5*58a2b000SEvgeniy Ivanov  * All rights reserved.
6*58a2b000SEvgeniy Ivanov  *
7*58a2b000SEvgeniy Ivanov  * Written by Jason R. Thorpe for Wasabi Systems, Inc.
8*58a2b000SEvgeniy Ivanov  *
9*58a2b000SEvgeniy Ivanov  * Redistribution and use in source and binary forms, with or without
10*58a2b000SEvgeniy Ivanov  * modification, are permitted provided that the following conditions
11*58a2b000SEvgeniy Ivanov  * are met:
12*58a2b000SEvgeniy Ivanov  * 1. Redistributions of source code must retain the above copyright
13*58a2b000SEvgeniy Ivanov  *    notice, this list of conditions and the following disclaimer.
14*58a2b000SEvgeniy Ivanov  * 2. Redistributions in binary form must reproduce the above copyright
15*58a2b000SEvgeniy Ivanov  *    notice, this list of conditions and the following disclaimer in the
16*58a2b000SEvgeniy Ivanov  *    documentation and/or other materials provided with the distribution.
17*58a2b000SEvgeniy Ivanov  * 3. All advertising materials mentioning features or use of this software
18*58a2b000SEvgeniy Ivanov  *    must display the following acknowledgement:
19*58a2b000SEvgeniy Ivanov  *	This product includes software developed for the NetBSD Project by
20*58a2b000SEvgeniy Ivanov  *	Wasabi Systems, Inc.
21*58a2b000SEvgeniy Ivanov  * 4. The name of Wasabi Systems, Inc. may not be used to endorse
22*58a2b000SEvgeniy Ivanov  *    or promote products derived from this software without specific prior
23*58a2b000SEvgeniy Ivanov  *    written permission.
24*58a2b000SEvgeniy Ivanov  *
25*58a2b000SEvgeniy Ivanov  * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
26*58a2b000SEvgeniy Ivanov  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
27*58a2b000SEvgeniy Ivanov  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28*58a2b000SEvgeniy Ivanov  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
29*58a2b000SEvgeniy Ivanov  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30*58a2b000SEvgeniy Ivanov  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31*58a2b000SEvgeniy Ivanov  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32*58a2b000SEvgeniy Ivanov  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33*58a2b000SEvgeniy Ivanov  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34*58a2b000SEvgeniy Ivanov  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35*58a2b000SEvgeniy Ivanov  * POSSIBILITY OF SUCH DAMAGE.
36*58a2b000SEvgeniy Ivanov  */
37*58a2b000SEvgeniy Ivanov 
38*58a2b000SEvgeniy Ivanov #ifndef _LIBSA_BYTEORDER_H_
39*58a2b000SEvgeniy Ivanov #define	_LIBSA_BYTEORDER_H_
40*58a2b000SEvgeniy Ivanov 
41*58a2b000SEvgeniy Ivanov #ifdef _STANDALONE
42*58a2b000SEvgeniy Ivanov #include <lib/libsa/stand.h>
43*58a2b000SEvgeniy Ivanov #else
44*58a2b000SEvgeniy Ivanov #include <inttypes.h>
45*58a2b000SEvgeniy Ivanov #endif
46*58a2b000SEvgeniy Ivanov 
47*58a2b000SEvgeniy Ivanov uint16_t	sa_htobe16(uint16_t);
48*58a2b000SEvgeniy Ivanov uint16_t	sa_htole16(uint16_t);
49*58a2b000SEvgeniy Ivanov uint16_t	sa_be16toh(uint16_t);
50*58a2b000SEvgeniy Ivanov uint16_t	sa_le16toh(uint16_t);
51*58a2b000SEvgeniy Ivanov 
52*58a2b000SEvgeniy Ivanov uint32_t	sa_htobe32(uint32_t);
53*58a2b000SEvgeniy Ivanov uint32_t	sa_htole32(uint32_t);
54*58a2b000SEvgeniy Ivanov uint32_t	sa_be32toh(uint32_t);
55*58a2b000SEvgeniy Ivanov uint32_t	sa_le32toh(uint32_t);
56*58a2b000SEvgeniy Ivanov 
57*58a2b000SEvgeniy Ivanov uint64_t	sa_htobe64(uint64_t);
58*58a2b000SEvgeniy Ivanov uint64_t	sa_htole64(uint64_t);
59*58a2b000SEvgeniy Ivanov uint64_t	sa_be64toh(uint64_t);
60*58a2b000SEvgeniy Ivanov uint64_t	sa_le64toh(uint64_t);
61*58a2b000SEvgeniy Ivanov 
62*58a2b000SEvgeniy Ivanov /* Order of the words in a big-endian 64-bit word. */
63*58a2b000SEvgeniy Ivanov #define	BE64_HI	0
64*58a2b000SEvgeniy Ivanov #define	BE64_LO	1
65*58a2b000SEvgeniy Ivanov 
66*58a2b000SEvgeniy Ivanov /* Order of the words in a little-endian 64-bit word. */
67*58a2b000SEvgeniy Ivanov #define	LE64_HI	1
68*58a2b000SEvgeniy Ivanov #define	LE64_LO	0
69*58a2b000SEvgeniy Ivanov 
70*58a2b000SEvgeniy Ivanov #endif /* _LIBSA_BYTEORDER_H_ */
71