X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=blobdiff_plain;f=blob.h;h=557899de922e20113ba18b2e3b6dcfad0f69c1b8;hp=81a65ae6027441fd16d7bb8752744fa925d2c536;hb=e009fd8c82692343062eedb78cad6ce8898f49c5;hpb=5cfe2696f0101dc3b304dbffeefd6723b7ec8453 diff --git a/blob.h b/blob.h index 81a65ae..557899d 100644 --- a/blob.h +++ b/blob.h @@ -26,8 +26,6 @@ #include #include -#if __BYTE_ORDER == __LITTLE_ENDIAN - #if defined(__linux__) || defined(__CYGWIN__) #include #include @@ -60,6 +58,8 @@ #define __LITTLE_ENDIAN LITTLE_ENDIAN #endif +#if __BYTE_ORDER == __LITTLE_ENDIAN + #define cpu_to_be64(x) bswap_64(x) #define cpu_to_be32(x) bswap_32(x) #define cpu_to_be16(x) bswap_16(x) @@ -191,8 +191,10 @@ blob_get_u32(const struct blob_attr *attr) static inline uint64_t blob_get_u64(const struct blob_attr *attr) { - uint64_t *tmp = (uint64_t*)attr->data; - return be64_to_cpu(*tmp); + uint32_t *ptr = blob_data(attr); + uint64_t tmp = ((uint64_t) be32_to_cpu(ptr[0])) << 32; + tmp |= be32_to_cpu(ptr[1]); + return tmp; } static inline int8_t