--- DevIL-1.6.8/src-IL/include/il_endian.h.orig 2006-12-21 03:40:57.000000000 +0000
+++ DevIL-1.6.8/src-IL/include/il_endian.h 2006-12-21 03:33:34.000000000 +0000
@@ -15,6 +15,10 @@
#include "il_internal.h"
+#ifdef GCC_X86_ASM
+#include <byteswap.h>
+#endif
+
#ifdef WORDS_BIGENDIAN //this is defined by ./configure
#ifndef __BIG_ENDIAN__
#define __BIG_ENDIAN__
@@ -101,9 +105,7 @@
}
#else
#ifdef GCC_X86_ASM
- asm("ror $8,%0"
- :
- : "r" (*s) );
+ *s = __bswap_16(*s);
#else
*s = ((*s)>>8) | ((*s)<<8);
#endif //GCC_X86_ASM
@@ -124,8 +126,7 @@
}
#else
#ifdef GCC_X86_ASM
- asm("bswap %0;"
- : "=r" (*i) );
+ *i = __bswap_32(*i);
#else
*i = ((*i)>>24) | (((*i)>>8) & 0xff00) | (((*i)<<8) & 0xff0000) | ((*i)<<24);
#endif //GCC_X86_ASM