Message ID | 15082489.1nYBiW1zHH@skinner (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Hi! > Hm, while using the latest 3.3.0 tarball with our pciutils dist > package I realized that this diff does not perfectly patch > anymore. > > Unfortunately without author, looks like a gcc guy added it. > I paste it in the end > You may want to incorporate (a shortened version?) it if appropriate. No, I don't want :-) While it simplifies the code on Linux, it breaks many other platforms. Have a nice fortnight
On Friday, November 14, 2014 10:34:39 PM Martin Mares wrote: > Hi! > > > Hm, while using the latest 3.3.0 tarball with our pciutils dist > > package I realized that this diff does not perfectly patch > > anymore. > > > > Unfortunately without author, looks like a gcc guy added it. > > I paste it in the end > > You may want to incorporate (a shortened version?) it if appropriate. > > No, I don't want :-) While it simplifies the code on Linux, it breaks > many other platforms. Of course not the whole patch. The OS specific stuff must stay. It is about (be careful, copy and pasted) these which seem to be a nice code reduction: -#if BYTE_ORDER == BIG_ENDIAN -#define cpu_to_le16 swab16 -#define cpu_to_le32 swab32 -#define le16_to_cpu swab16 -#define le32_to_cpu swab32 - -static inline word swab16(word w) -{ - return (w << 8) | ((w >> 8) & 0xff); -} -static inline u32 swab32(u32 w) -{ - return ((w & 0xff000000) >> 24) | - ((w & 0x00ff0000) >> 8) | - ((w & 0x0000ff00) << 8) | - ((w & 0x000000ff) << 24); -} -#else -#define cpu_to_le16(x) (x) -#define cpu_to_le32(x) (x) -#define le16_to_cpu(x) (x) -#define le32_to_cpu(x) (x) -#endif +#define cpu_to_le16 htole16 +#define cpu_to_le32 htole32 +#define le16_to_cpu le16toh +#define le32_to_cpu le32toh Thomas -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- lib/sysdep.h.orig +++ lib/sysdep.h @@ -18,71 +18,10 @@ typedef u8 byte; typedef u16 word; -#ifdef PCI_OS_WINDOWS -#define strcasecmp strcmpi -#endif - -#ifdef PCI_HAVE_LINUX_BYTEORDER_H - -#include <asm/byteorder.h> -#define cpu_to_le16 __cpu_to_le16 -#define cpu_to_le32 __cpu_to_le32 -#define le16_to_cpu __le16_to_cpu -#define le32_to_cpu __le32_to_cpu - -#else - -#ifdef PCI_OS_LINUX #include <endian.h> -#define BYTE_ORDER __BYTE_ORDER -#define BIG_ENDIAN __BIG_ENDIAN -#endif - -#ifdef PCI_OS_SUNOS -#include <sys/byteorder.h> -#define BIG_ENDIAN 4321 -#ifdef _LITTLE_ENDIAN -#define BYTE_ORDER 1234 -#else -#define BYTE_ORDER 4321 -#endif -#endif - -#ifdef PCI_OS_WINDOWS -#ifdef __MINGW32__ - #include <sys/param.h> -#else - #include <io.h> - #define BIG_ENDIAN 4321 - #define LITTLE_ENDIAN 1234 - #define BYTE_ORDER LITTLE_ENDIAN - #define snprintf _snprintf -#endif -#endif - -#if BYTE_ORDER == BIG_ENDIAN -#define cpu_to_le16 swab16 -#define cpu_to_le32 swab32 -#define le16_to_cpu swab16 -#define le32_to_cpu swab32 - -static inline word swab16(word w) -{ - return (w << 8) | ((w >> 8) & 0xff); -} -static inline u32 swab32(u32 w) -{ - return ((w & 0xff000000) >> 24) | - ((w & 0x00ff0000) >> 8) | - ((w & 0x0000ff00) << 8) | - ((w & 0x000000ff) << 24); -} -#else -#define cpu_to_le16(x) (x) -#define cpu_to_le32(x) (x) -#define le16_to_cpu(x) (x) -#define le32_to_cpu(x) (x) -#endif +#define cpu_to_le16 htole16 +#define cpu_to_le32 htole32 +#define le16_to_cpu le16toh +#define le32_to_cpu le32toh -#endif