1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_UNALIGNED_ACCESS_OK_H
3 #define _LINUX_UNALIGNED_ACCESS_OK_H
5 #include <linux/kernel.h>
6 #include <asm/byteorder.h>
8 static __always_inline u16
get_unaligned_le16(const void *p
)
10 return le16_to_cpup((__le16
*)p
);
13 static __always_inline u32
get_unaligned_le32(const void *p
)
15 return le32_to_cpup((__le32
*)p
);
18 static __always_inline u64
get_unaligned_le64(const void *p
)
20 return le64_to_cpup((__le64
*)p
);
23 static __always_inline u16
get_unaligned_be16(const void *p
)
25 return be16_to_cpup((__be16
*)p
);
28 static __always_inline u32
get_unaligned_be32(const void *p
)
30 return be32_to_cpup((__be32
*)p
);
33 static __always_inline u64
get_unaligned_be64(const void *p
)
35 return be64_to_cpup((__be64
*)p
);
38 static __always_inline
void put_unaligned_le16(u16 val
, void *p
)
40 *((__le16
*)p
) = cpu_to_le16(val
);
43 static __always_inline
void put_unaligned_le32(u32 val
, void *p
)
45 *((__le32
*)p
) = cpu_to_le32(val
);
48 static __always_inline
void put_unaligned_le64(u64 val
, void *p
)
50 *((__le64
*)p
) = cpu_to_le64(val
);
53 static __always_inline
void put_unaligned_be16(u16 val
, void *p
)
55 *((__be16
*)p
) = cpu_to_be16(val
);
58 static __always_inline
void put_unaligned_be32(u32 val
, void *p
)
60 *((__be32
*)p
) = cpu_to_be32(val
);
63 static __always_inline
void put_unaligned_be64(u64 val
, void *p
)
65 *((__be64
*)p
) = cpu_to_be64(val
);
68 #endif /* _LINUX_UNALIGNED_ACCESS_OK_H */