1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _LINUX_UNALIGNED_ACCESS_OK_H 3#define _LINUX_UNALIGNED_ACCESS_OK_H 4 5#include <linux/kernel.h> 6#include <asm/byteorder.h> 7 8static __always_inline u16 get_unaligned_le16(const void *p) 9{ 10 return le16_to_cpup((__le16 *)p); 11} 12 13static __always_inline u32 get_unaligned_le32(const void *p) 14{ 15 return le32_to_cpup((__le32 *)p); 16} 17 18static __always_inline u64 get_unaligned_le64(const void *p) 19{ 20 return le64_to_cpup((__le64 *)p); 21} 22 23static __always_inline u16 get_unaligned_be16(const void *p) 24{ 25 return be16_to_cpup((__be16 *)p); 26} 27 28static __always_inline u32 get_unaligned_be32(const void *p) 29{ 30 return be32_to_cpup((__be32 *)p); 31} 32 33static __always_inline u64 get_unaligned_be64(const void *p) 34{ 35 return be64_to_cpup((__be64 *)p); 36} 37 38static __always_inline void put_unaligned_le16(u16 val, void *p) 39{ 40 *((__le16 *)p) = cpu_to_le16(val); 41} 42 43static __always_inline void put_unaligned_le32(u32 val, void *p) 44{ 45 *((__le32 *)p) = cpu_to_le32(val); 46} 47 48static __always_inline void put_unaligned_le64(u64 val, void *p) 49{ 50 *((__le64 *)p) = cpu_to_le64(val); 51} 52 53static __always_inline void put_unaligned_be16(u16 val, void *p) 54{ 55 *((__be16 *)p) = cpu_to_be16(val); 56} 57 58static __always_inline void put_unaligned_be32(u32 val, void *p) 59{ 60 *((__be32 *)p) = cpu_to_be32(val); 61} 62 63static __always_inline void put_unaligned_be64(u64 val, void *p) 64{ 65 *((__be64 *)p) = cpu_to_be64(val); 66} 67 68#endif /* _LINUX_UNALIGNED_ACCESS_OK_H */ 69