+#define LOAD_UNALIGNED_INT(type, p) \
+ ({ \
+ struct packed_struct { type __v; } __attribute__((packed)); \
+ (((const struct packed_struct *) (p))->__v); \
+ })
+
+#define STORE_UNALIGNED_INT(type, p, v) \
+ do { \
+ struct packed_struct { type __v; } __attribute__((packed)); \
+ ((struct packed_struct *) (p))->__v = (v); \
+ } while (0)
+
+/*
+ * Copy from src into dest, assuming unaligned src and dest.
+ */