#include <stdio.h>
#include <errno.h>
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-
#if defined(__linux__) || defined(__CYGWIN__)
#include <byteswap.h>
#include <endian.h>
#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)
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