__put_unaligned_t
#define put_unaligned(val, ptr) __put_unaligned_t(typeof(*(ptr)), (val), (ptr))
__put_unaligned_t(__le16, cpu_to_le16(val), p);
__put_unaligned_t(__le32, cpu_to_le32(val), p);
__put_unaligned_t(__le64, cpu_to_le64(val), p);
__put_unaligned_t(__be16, cpu_to_be16(val), p);
__put_unaligned_t(__be32, cpu_to_be32(val), p);
__put_unaligned_t(__be64, cpu_to_be64(val), p);
__put_unaligned_t(type, __get_unaligned_t(type, src), dst); \
__put_unaligned_t(type, 0, src); \
#define put_unaligned(val, ptr) __put_unaligned_t(typeof(*(ptr)), (val), (ptr))
__put_unaligned_t(__le16, cpu_to_le16(val), p);
__put_unaligned_t(__le32, cpu_to_le32(val), p);
__put_unaligned_t(__le64, cpu_to_le64(val), p);
__put_unaligned_t(__be16, cpu_to_be16(val), p);
__put_unaligned_t(__be32, cpu_to_be32(val), p);
__put_unaligned_t(__be64, cpu_to_be64(val), p);