Blame


1 a84cbb2a 2004-04-19 devnull #include <u.h>
2 a84cbb2a 2004-04-19 devnull #include <libc.h>
3 a84cbb2a 2004-04-19 devnull #include <bio.h>
4 a84cbb2a 2004-04-19 devnull #include <mach.h>
5 a84cbb2a 2004-04-19 devnull
6 a84cbb2a 2004-04-19 devnull /*
7 a84cbb2a 2004-04-19 devnull * big-endian short
8 a84cbb2a 2004-04-19 devnull */
9 a84cbb2a 2004-04-19 devnull u16int
10 a84cbb2a 2004-04-19 devnull beswap2(u16int s)
11 a84cbb2a 2004-04-19 devnull {
12 a84cbb2a 2004-04-19 devnull uchar *p;
13 a84cbb2a 2004-04-19 devnull
14 a84cbb2a 2004-04-19 devnull p = (uchar*)&s;
15 a84cbb2a 2004-04-19 devnull return (p[0]<<8) | p[1];
16 a84cbb2a 2004-04-19 devnull }
17 a84cbb2a 2004-04-19 devnull
18 a84cbb2a 2004-04-19 devnull /*
19 a84cbb2a 2004-04-19 devnull * big-endian long
20 a84cbb2a 2004-04-19 devnull */
21 a84cbb2a 2004-04-19 devnull u32int
22 a84cbb2a 2004-04-19 devnull beswap4(u32int l)
23 a84cbb2a 2004-04-19 devnull {
24 a84cbb2a 2004-04-19 devnull uchar *p;
25 a84cbb2a 2004-04-19 devnull
26 a84cbb2a 2004-04-19 devnull p = (uchar*)&l;
27 a84cbb2a 2004-04-19 devnull return (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3];
28 a84cbb2a 2004-04-19 devnull }
29 a84cbb2a 2004-04-19 devnull
30 a84cbb2a 2004-04-19 devnull /*
31 a84cbb2a 2004-04-19 devnull * big-endian vlong
32 a84cbb2a 2004-04-19 devnull */
33 a84cbb2a 2004-04-19 devnull u64int
34 a84cbb2a 2004-04-19 devnull beswap8(u64int v)
35 a84cbb2a 2004-04-19 devnull {
36 a84cbb2a 2004-04-19 devnull uchar *p;
37 a84cbb2a 2004-04-19 devnull
38 a84cbb2a 2004-04-19 devnull p = (uchar*)&v;
39 a84cbb2a 2004-04-19 devnull return ((u64int)p[0]<<56) | ((u64int)p[1]<<48) | ((u64int)p[2]<<40)
40 a84cbb2a 2004-04-19 devnull | ((u64int)p[3]<<32) | ((u64int)p[4]<<24)
41 a84cbb2a 2004-04-19 devnull | ((u64int)p[5]<<16) | ((u64int)p[6]<<8)
42 a84cbb2a 2004-04-19 devnull | (u64int)p[7];
43 a84cbb2a 2004-04-19 devnull }
44 a84cbb2a 2004-04-19 devnull
45 a84cbb2a 2004-04-19 devnull /*
46 a84cbb2a 2004-04-19 devnull * little-endian short
47 a84cbb2a 2004-04-19 devnull */
48 a84cbb2a 2004-04-19 devnull u16int
49 a84cbb2a 2004-04-19 devnull leswap2(u16int s)
50 a84cbb2a 2004-04-19 devnull {
51 a84cbb2a 2004-04-19 devnull uchar *p;
52 a84cbb2a 2004-04-19 devnull
53 a84cbb2a 2004-04-19 devnull p = (uchar*)&s;
54 a84cbb2a 2004-04-19 devnull return (p[1]<<8) | p[0];
55 a84cbb2a 2004-04-19 devnull }
56 a84cbb2a 2004-04-19 devnull
57 a84cbb2a 2004-04-19 devnull /*
58 a84cbb2a 2004-04-19 devnull * little-endian long
59 a84cbb2a 2004-04-19 devnull */
60 a84cbb2a 2004-04-19 devnull u32int
61 a84cbb2a 2004-04-19 devnull leswap4(u32int l)
62 a84cbb2a 2004-04-19 devnull {
63 a84cbb2a 2004-04-19 devnull uchar *p;
64 a84cbb2a 2004-04-19 devnull
65 a84cbb2a 2004-04-19 devnull p = (uchar*)&l;
66 a84cbb2a 2004-04-19 devnull return (p[3]<<24) | (p[2]<<16) | (p[1]<<8) | p[0];
67 a84cbb2a 2004-04-19 devnull }
68 a84cbb2a 2004-04-19 devnull
69 a84cbb2a 2004-04-19 devnull /*
70 a84cbb2a 2004-04-19 devnull * little-endian vlong
71 a84cbb2a 2004-04-19 devnull */
72 a84cbb2a 2004-04-19 devnull u64int
73 a84cbb2a 2004-04-19 devnull leswap8(u64int v)
74 a84cbb2a 2004-04-19 devnull {
75 a84cbb2a 2004-04-19 devnull uchar *p;
76 a84cbb2a 2004-04-19 devnull
77 a84cbb2a 2004-04-19 devnull p = (uchar*)&v;
78 a84cbb2a 2004-04-19 devnull return ((u64int)p[7]<<56) | ((u64int)p[6]<<48) | ((u64int)p[5]<<40)
79 a84cbb2a 2004-04-19 devnull | ((u64int)p[4]<<32) | ((u64int)p[3]<<24)
80 a84cbb2a 2004-04-19 devnull | ((u64int)p[2]<<16) | ((u64int)p[1]<<8)
81 a84cbb2a 2004-04-19 devnull | (u64int)p[0];
82 a84cbb2a 2004-04-19 devnull }
83 a84cbb2a 2004-04-19 devnull
84 a84cbb2a 2004-04-19 devnull u16int
85 a84cbb2a 2004-04-19 devnull leload2(uchar *b)
86 a84cbb2a 2004-04-19 devnull {
87 a84cbb2a 2004-04-19 devnull return b[0] | (b[1]<<8);
88 a84cbb2a 2004-04-19 devnull }
89 a84cbb2a 2004-04-19 devnull
90 a84cbb2a 2004-04-19 devnull u32int
91 a84cbb2a 2004-04-19 devnull leload4(uchar *b)
92 a84cbb2a 2004-04-19 devnull {
93 a84cbb2a 2004-04-19 devnull return b[0] | (b[1]<<8) | (b[2]<<16) | (b[3]<<24);
94 a84cbb2a 2004-04-19 devnull }
95 a84cbb2a 2004-04-19 devnull
96 a84cbb2a 2004-04-19 devnull u64int
97 a84cbb2a 2004-04-19 devnull leload8(uchar *b)
98 a84cbb2a 2004-04-19 devnull {
99 a84cbb2a 2004-04-19 devnull return leload4(b) | ((uvlong)leload4(b+4) << 32);
100 a84cbb2a 2004-04-19 devnull }
101 a84cbb2a 2004-04-19 devnull
102 a84cbb2a 2004-04-19 devnull u16int
103 a84cbb2a 2004-04-19 devnull beload2(uchar *b)
104 a84cbb2a 2004-04-19 devnull {
105 a84cbb2a 2004-04-19 devnull return (b[0]<<8) | b[1];
106 a84cbb2a 2004-04-19 devnull }
107 a84cbb2a 2004-04-19 devnull
108 a84cbb2a 2004-04-19 devnull u32int
109 a84cbb2a 2004-04-19 devnull beload4(uchar *b)
110 a84cbb2a 2004-04-19 devnull {
111 a84cbb2a 2004-04-19 devnull return (b[0]<<24) | (b[1]<<16) | (b[2]<<8) | b[3];
112 a84cbb2a 2004-04-19 devnull }
113 a84cbb2a 2004-04-19 devnull
114 a84cbb2a 2004-04-19 devnull u64int
115 a84cbb2a 2004-04-19 devnull beload8(uchar *b)
116 a84cbb2a 2004-04-19 devnull {
117 a84cbb2a 2004-04-19 devnull return ((uvlong)beload4(b) << 32) | beload4(b+4);
118 a84cbb2a 2004-04-19 devnull }