0001 #ifndef _LINUX_UNALIGNED_PACKED_STRUCT_H
0002 #define _LINUX_UNALIGNED_PACKED_STRUCT_H
0003
0004 #include <linux/types.h>
0005
0006 struct __una_u16 { u16 x; } __packed;
0007 struct __una_u32 { u32 x; } __packed;
0008 struct __una_u64 { u64 x; } __packed;
0009
0010 static inline u16 __get_unaligned_cpu16(const void *p)
0011 {
0012 const struct __una_u16 *ptr = (const struct __una_u16 *)p;
0013 return ptr->x;
0014 }
0015
0016 static inline u32 __get_unaligned_cpu32(const void *p)
0017 {
0018 const struct __una_u32 *ptr = (const struct __una_u32 *)p;
0019 return ptr->x;
0020 }
0021
0022 static inline u64 __get_unaligned_cpu64(const void *p)
0023 {
0024 const struct __una_u64 *ptr = (const struct __una_u64 *)p;
0025 return ptr->x;
0026 }
0027
0028 static inline void __put_unaligned_cpu16(u16 val, void *p)
0029 {
0030 struct __una_u16 *ptr = (struct __una_u16 *)p;
0031 ptr->x = val;
0032 }
0033
0034 static inline void __put_unaligned_cpu32(u32 val, void *p)
0035 {
0036 struct __una_u32 *ptr = (struct __una_u32 *)p;
0037 ptr->x = val;
0038 }
0039
0040 static inline void __put_unaligned_cpu64(u64 val, void *p)
0041 {
0042 struct __una_u64 *ptr = (struct __una_u64 *)p;
0043 ptr->x = val;
0044 }
0045
0046 #endif