From 9b92536e6c51b66406d593745a938975e226f95e Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sat, 27 Dec 2014 08:13:20 -0600 Subject: Initial import --- src/cvtendian.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/cvtendian.h (limited to 'src/cvtendian.h') diff --git a/src/cvtendian.h b/src/cvtendian.h new file mode 100644 index 0000000..d69158b --- /dev/null +++ b/src/cvtendian.h @@ -0,0 +1,48 @@ +#ifndef __CVTENDIAN_H +#define __CVTENDIAN_H + +/* Support for swapping bytes (endian conversion) */ +#include + +/* For obtaining the host endian type */ +#include +#if (__BYTE_ORDER == __LITTLE_ENDIAN) +# define HOST_ENDIAN ELFDATA2LSB +#elif (__BYTE_ORDER == __BIG_ENDIAN) +# define HOST_ENDIAN ELFDATA2MSB +#else +# error "Failed to detect host endian type" +#endif + +/* + * Convert the endian of a parameter + */ +static int ConvertEndian(void *ptr, int bytes) +{ + switch(bytes) + { + case 2: + { + uint16_t *value = (uint16_t *) ptr; + + *value = bswap_16(*value); + } return 1; + case 4: + { + uint32_t *value = (uint32_t *) ptr; + + *value = bswap_32(*value); + } return 1; + case 8: + { + uint64_t *value = (uint64_t *) ptr; + + *value = bswap_64(*value); + } return 1; + default: + break; + } + return 0; +} + +#endif /* __CVTENDIAN_H */ -- cgit v1.2.1