1*25793f76SRemy Bohmer #ifndef _LINUX_UNALIGNED_BE_BYTESHIFT_H
2*25793f76SRemy Bohmer #define _LINUX_UNALIGNED_BE_BYTESHIFT_H
3*25793f76SRemy Bohmer
4*25793f76SRemy Bohmer #include <linux/types.h>
5*25793f76SRemy Bohmer
__get_unaligned_be16(const u8 * p)6*25793f76SRemy Bohmer static inline u16 __get_unaligned_be16(const u8 *p)
7*25793f76SRemy Bohmer {
8*25793f76SRemy Bohmer return p[0] << 8 | p[1];
9*25793f76SRemy Bohmer }
10*25793f76SRemy Bohmer
__get_unaligned_be32(const u8 * p)11*25793f76SRemy Bohmer static inline u32 __get_unaligned_be32(const u8 *p)
12*25793f76SRemy Bohmer {
13*25793f76SRemy Bohmer return p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3];
14*25793f76SRemy Bohmer }
15*25793f76SRemy Bohmer
__get_unaligned_be64(const u8 * p)16*25793f76SRemy Bohmer static inline u64 __get_unaligned_be64(const u8 *p)
17*25793f76SRemy Bohmer {
18*25793f76SRemy Bohmer return (u64)__get_unaligned_be32(p) << 32 |
19*25793f76SRemy Bohmer __get_unaligned_be32(p + 4);
20*25793f76SRemy Bohmer }
21*25793f76SRemy Bohmer
__put_unaligned_be16(u16 val,u8 * p)22*25793f76SRemy Bohmer static inline void __put_unaligned_be16(u16 val, u8 *p)
23*25793f76SRemy Bohmer {
24*25793f76SRemy Bohmer *p++ = val >> 8;
25*25793f76SRemy Bohmer *p++ = val;
26*25793f76SRemy Bohmer }
27*25793f76SRemy Bohmer
__put_unaligned_be32(u32 val,u8 * p)28*25793f76SRemy Bohmer static inline void __put_unaligned_be32(u32 val, u8 *p)
29*25793f76SRemy Bohmer {
30*25793f76SRemy Bohmer __put_unaligned_be16(val >> 16, p);
31*25793f76SRemy Bohmer __put_unaligned_be16(val, p + 2);
32*25793f76SRemy Bohmer }
33*25793f76SRemy Bohmer
__put_unaligned_be64(u64 val,u8 * p)34*25793f76SRemy Bohmer static inline void __put_unaligned_be64(u64 val, u8 *p)
35*25793f76SRemy Bohmer {
36*25793f76SRemy Bohmer __put_unaligned_be32(val >> 32, p);
37*25793f76SRemy Bohmer __put_unaligned_be32(val, p + 4);
38*25793f76SRemy Bohmer }
39*25793f76SRemy Bohmer
get_unaligned_be16(const void * p)40*25793f76SRemy Bohmer static inline u16 get_unaligned_be16(const void *p)
41*25793f76SRemy Bohmer {
42*25793f76SRemy Bohmer return __get_unaligned_be16((const u8 *)p);
43*25793f76SRemy Bohmer }
44*25793f76SRemy Bohmer
get_unaligned_be32(const void * p)45*25793f76SRemy Bohmer static inline u32 get_unaligned_be32(const void *p)
46*25793f76SRemy Bohmer {
47*25793f76SRemy Bohmer return __get_unaligned_be32((const u8 *)p);
48*25793f76SRemy Bohmer }
49*25793f76SRemy Bohmer
get_unaligned_be64(const void * p)50*25793f76SRemy Bohmer static inline u64 get_unaligned_be64(const void *p)
51*25793f76SRemy Bohmer {
52*25793f76SRemy Bohmer return __get_unaligned_be64((const u8 *)p);
53*25793f76SRemy Bohmer }
54*25793f76SRemy Bohmer
put_unaligned_be16(u16 val,void * p)55*25793f76SRemy Bohmer static inline void put_unaligned_be16(u16 val, void *p)
56*25793f76SRemy Bohmer {
57*25793f76SRemy Bohmer __put_unaligned_be16(val, p);
58*25793f76SRemy Bohmer }
59*25793f76SRemy Bohmer
put_unaligned_be32(u32 val,void * p)60*25793f76SRemy Bohmer static inline void put_unaligned_be32(u32 val, void *p)
61*25793f76SRemy Bohmer {
62*25793f76SRemy Bohmer __put_unaligned_be32(val, p);
63*25793f76SRemy Bohmer }
64*25793f76SRemy Bohmer
put_unaligned_be64(u64 val,void * p)65*25793f76SRemy Bohmer static inline void put_unaligned_be64(u64 val, void *p)
66*25793f76SRemy Bohmer {
67*25793f76SRemy Bohmer __put_unaligned_be64(val, p);
68*25793f76SRemy Bohmer }
69*25793f76SRemy Bohmer
70*25793f76SRemy Bohmer #endif /* _LINUX_UNALIGNED_BE_BYTESHIFT_H */
71