1064106a9SHarvey Harrison #ifndef _LINUX_UNALIGNED_PACKED_STRUCT_H
2064106a9SHarvey Harrison #define _LINUX_UNALIGNED_PACKED_STRUCT_H
3064106a9SHarvey Harrison 
4*22c03398SAndy Shevchenko #include <linux/types.h>
5064106a9SHarvey Harrison 
617253103SAndrew Morton struct __una_u16 { u16 x; } __packed;
717253103SAndrew Morton struct __una_u32 { u32 x; } __packed;
817253103SAndrew Morton struct __una_u64 { u64 x; } __packed;
9064106a9SHarvey Harrison 
__get_unaligned_cpu16(const void * p)10064106a9SHarvey Harrison static inline u16 __get_unaligned_cpu16(const void *p)
11064106a9SHarvey Harrison {
12064106a9SHarvey Harrison 	const struct __una_u16 *ptr = (const struct __una_u16 *)p;
13064106a9SHarvey Harrison 	return ptr->x;
14064106a9SHarvey Harrison }
15064106a9SHarvey Harrison 
__get_unaligned_cpu32(const void * p)16064106a9SHarvey Harrison static inline u32 __get_unaligned_cpu32(const void *p)
17064106a9SHarvey Harrison {
18064106a9SHarvey Harrison 	const struct __una_u32 *ptr = (const struct __una_u32 *)p;
19064106a9SHarvey Harrison 	return ptr->x;
20064106a9SHarvey Harrison }
21064106a9SHarvey Harrison 
__get_unaligned_cpu64(const void * p)22064106a9SHarvey Harrison static inline u64 __get_unaligned_cpu64(const void *p)
23064106a9SHarvey Harrison {
24064106a9SHarvey Harrison 	const struct __una_u64 *ptr = (const struct __una_u64 *)p;
25064106a9SHarvey Harrison 	return ptr->x;
26064106a9SHarvey Harrison }
27064106a9SHarvey Harrison 
__put_unaligned_cpu16(u16 val,void * p)28064106a9SHarvey Harrison static inline void __put_unaligned_cpu16(u16 val, void *p)
29064106a9SHarvey Harrison {
30064106a9SHarvey Harrison 	struct __una_u16 *ptr = (struct __una_u16 *)p;
31064106a9SHarvey Harrison 	ptr->x = val;
32064106a9SHarvey Harrison }
33064106a9SHarvey Harrison 
__put_unaligned_cpu32(u32 val,void * p)34064106a9SHarvey Harrison static inline void __put_unaligned_cpu32(u32 val, void *p)
35064106a9SHarvey Harrison {
36064106a9SHarvey Harrison 	struct __una_u32 *ptr = (struct __una_u32 *)p;
37064106a9SHarvey Harrison 	ptr->x = val;
38064106a9SHarvey Harrison }
39064106a9SHarvey Harrison 
__put_unaligned_cpu64(u64 val,void * p)40064106a9SHarvey Harrison static inline void __put_unaligned_cpu64(u64 val, void *p)
41064106a9SHarvey Harrison {
42064106a9SHarvey Harrison 	struct __una_u64 *ptr = (struct __una_u64 *)p;
43064106a9SHarvey Harrison 	ptr->x = val;
44064106a9SHarvey Harrison }
45064106a9SHarvey Harrison 
46064106a9SHarvey Harrison #endif /* _LINUX_UNALIGNED_PACKED_STRUCT_H */
47