xref: /DragonStub/inc/dragonstub/linux/unaligned.h (revision 3e6106c4d60a23aae3c0740979c5e6fb728b63c3)
1*3e6106c4SLoGin #pragma once
2*3e6106c4SLoGin 
3*3e6106c4SLoGin #define __get_unaligned_t(type, ptr)                        \
4*3e6106c4SLoGin 	({                                                  \
5*3e6106c4SLoGin 		const struct {                              \
6*3e6106c4SLoGin 			type x;                             \
7*3e6106c4SLoGin 		} __packed *__pptr = (typeof(__pptr))(ptr); \
8*3e6106c4SLoGin 		__pptr->x;                                  \
9*3e6106c4SLoGin 	})
10*3e6106c4SLoGin 
11*3e6106c4SLoGin #define __put_unaligned_t(type, val, ptr)                   \
12*3e6106c4SLoGin 	do {                                                \
13*3e6106c4SLoGin 		struct {                                    \
14*3e6106c4SLoGin 			type x;                             \
15*3e6106c4SLoGin 		} __packed *__pptr = (typeof(__pptr))(ptr); \
16*3e6106c4SLoGin 		__pptr->x = (val);                          \
17*3e6106c4SLoGin 	} while (0)
18