xref: /inferno-os/utils/libmach/swap.c (revision 4eb166cf184c1f102fb79e31b1465ea3e2021c39)
1 #include <lib9.h>
2 
3 /*
4  * big-endian short
5  */
6 ushort
7 beswab(ushort s)
8 {
9 	uchar *p;
10 
11 	p = (uchar*)&s;
12 	return (p[0]<<8) | p[1];
13 }
14 
15 /*
16  * big-endian long
17  */
18 long
19 beswal(long l)
20 {
21 	uchar *p;
22 
23 	p = (uchar*)&l;
24 	return (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3];
25 }
26 
27 /*
28  * big-endian vlong
29  */
30 vlong
31 beswav(vlong v)
32 {
33 	uchar *p;
34 
35 	p = (uchar*)&v;
36 	return ((vlong)p[0]<<56) | ((vlong)p[1]<<48) | ((vlong)p[2]<<40)
37 				 | ((vlong)p[3]<<32) | ((vlong)p[4]<<24)
38 				 | ((vlong)p[5]<<16) | ((vlong)p[6]<<8)
39 				 | (vlong)p[7];
40 }
41 
42 /*
43  * little-endian short
44  */
45 ushort
46 leswab(ushort s)
47 {
48 	uchar *p;
49 
50 	p = (uchar*)&s;
51 	return (p[1]<<8) | p[0];
52 }
53 
54 /*
55  * little-endian long
56  */
57 long
58 leswal(long l)
59 {
60 	uchar *p;
61 
62 	p = (uchar*)&l;
63 	return (p[3]<<24) | (p[2]<<16) | (p[1]<<8) | p[0];
64 }
65 
66 /*
67  * little-endian vlong
68  */
69 vlong
70 leswav(vlong v)
71 {
72 	uchar *p;
73 
74 	p = (uchar*)&v;
75 	return ((vlong)p[7]<<56) | ((vlong)p[6]<<48) | ((vlong)p[5]<<40)
76 				 | ((vlong)p[4]<<32) | ((vlong)p[3]<<24)
77 				 | ((vlong)p[2]<<16) | ((vlong)p[1]<<8)
78 				 | (vlong)p[0];
79 }
80