[PATCH] pcmciautils: handle big endian host in dump_cis dump_cis: Use glibc functionality for detecting host endian and byte swapping. Signed-off-by: Kars de Jong <jongk@linux-m68k.org> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
diff --git a/debug/parse_cis.c b/debug/parse_cis.c index 4388394..26edc41 100644 --- a/debug/parse_cis.c +++ b/debug/parse_cis.c
@@ -18,6 +18,8 @@ #include <stdlib.h> #include <string.h> #include <errno.h> +#include <endian.h> +#include <byteswap.h> #include "../src/cistpl.h" @@ -40,9 +42,13 @@ (mantissa[((v)>>3)&15] * exponent[(v)&7] / 10) #define POWER_SCALE(v) (exponent[(v)&7]) -/* FIXME: how to handle this in userspace? */ -#define le32_to_cpu(value) (value) -#define le16_to_cpu(value) (value) +#if __BYTE_ORDER == __BIG_ENDIAN +# define le32_to_cpu(value) bswap_32(value) +# define le16_to_cpu(value) bswap_16(value) +#else +# define le32_to_cpu(value) (value) +# define le16_to_cpu(value) (value) +#endif static int parse_device(tuple_t *tuple, cistpl_device_t *device) {