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