Fixes for gcc 4.4
[asterisk/asterisk.git] / include / asterisk / unaligned.h
index 9ca2177..4737c4e 100644 (file)
@@ -50,9 +50,16 @@ static inline unsigned short get_unaligned_uint16(const void *p)
 
 static inline void put_unaligned_uint64(void *p, uint64_t datum)
 {
-       struct { uint64_t d; } __attribute__((packed)) *pp = p;
+       unsigned char *cp = p;
 
-       pp->d = datum;
+       cp[0] = (datum >> 56) & 0xff;
+       cp[1] = (datum >> 48) & 0xff;
+       cp[2] = (datum >> 40) & 0xff;
+       cp[3] = (datum >> 32) & 0xff;
+       cp[4] = (datum >> 24) & 0xff;
+       cp[5] = (datum >> 16) & 0xff;
+       cp[6] = (datum >>  8) & 0xff;
+       cp[7] = (datum >>  0) & 0xff;
 }
 
 static inline void put_unaligned_uint32(void *p, unsigned int datum)