Initial import from FreeBSD RELENG_4:
[dragonfly.git] / lib / libstand / bswap.c
1 /*
2  * Written by Manuel Bouyer <bouyer@netbsd.org>.
3  * Public domain.
4  */
5
6 #if defined(LIBC_SCCS) && !defined(lint)
7 static char *rcsid = "$NetBSD: bswap32.c,v 1.1 1997/10/09 15:42:33 bouyer Exp $";
8 static char *rcsid = "$NetBSD: bswap64.c,v 1.1 1997/10/09 15:42:33 bouyer Exp $";
9 #endif
10
11 #include <sys/types.h>
12
13 #undef bswap32
14 #undef bswap64
15
16 u_int32_t
17 bswap32(x)
18     u_int32_t x;
19 {
20         return  ((x << 24) & 0xff000000 ) |
21                         ((x <<  8) & 0x00ff0000 ) |
22                         ((x >>  8) & 0x0000ff00 ) |
23                         ((x >> 24) & 0x000000ff );
24 }
25
26 u_int64_t
27 bswap64(x)
28     u_int64_t x;
29 {  
30         u_int32_t *p = (u_int32_t*)&x;
31         u_int32_t t;
32         t = bswap32(p[0]);
33         p[0] = bswap32(p[1]);
34         p[1] = t;
35         return x;
36 }   
37