1#ifndef _BLACKFIN_BYTEORDER_H 2#define _BLACKFIN_BYTEORDER_H 3 4#include <asm/types.h> 5#include <linux/compiler.h> 6 7#ifdef __GNUC__ 8 9static __inline__ __attribute_const__ __u32 ___arch__swahb32(__u32 xx) 10{ 11 __u32 tmp; 12 __asm__("%1 = %0 >> 8 (V);\n\t" 13 "%0 = %0 << 8 (V);\n\t" 14 "%0 = %0 | %1;\n\t" 15 : "+d"(xx), "=&d"(tmp)); 16 return xx; 17} 18 19static __inline__ __attribute_const__ __u32 ___arch__swahw32(__u32 xx) 20{ 21 __u32 rv; 22 __asm__("%0 = PACK(%1.L, %1.H);\n\t": "=d"(rv): "d"(xx)); 23 return rv; 24} 25 26#define __arch__swahb32(x) ___arch__swahb32(x) 27#define __arch__swahw32(x) ___arch__swahw32(x) 28#define __arch__swab32(x) ___arch__swahb32(___arch__swahw32(x)) 29 30static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 xx) 31{ 32 __u32 xw = xx; 33 __asm__("%0 <<= 8;\n %0.L = %0.L + %0.H (NS);\n": "+d"(xw)); 34 return (__u16)xw; 35} 36 37#define __arch__swab16(x) ___arch__swab16(x) 38 39#endif 40 41#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__) 42# define __BYTEORDER_HAS_U64__ 43# define __SWAB_64_THRU_32__ 44#endif 45 46#include <linux/byteorder/little_endian.h> 47 48#endif /* _BLACKFIN_BYTEORDER_H */ 49