diff options
author | 2023-10-10 14:33:42 +0000 | |
---|---|---|
committer | 2023-10-10 14:33:42 +0000 | |
commit | af1a266670d040d2f4083ff309d732d648afba2a (patch) | |
tree | 2fc46203448ddcc6f81546d379abfaeb323575e9 /roms/u-boot/arch/x86/include/asm/byteorder.h | |
parent | e02cda008591317b1625707ff8e115a4841aa889 (diff) |
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'roms/u-boot/arch/x86/include/asm/byteorder.h')
-rw-r--r-- | roms/u-boot/arch/x86/include/asm/byteorder.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/roms/u-boot/arch/x86/include/asm/byteorder.h b/roms/u-boot/arch/x86/include/asm/byteorder.h new file mode 100644 index 000000000..a2d1fd870 --- /dev/null +++ b/roms/u-boot/arch/x86/include/asm/byteorder.h @@ -0,0 +1,44 @@ +#ifndef _I386_BYTEORDER_H +#define _I386_BYTEORDER_H + +#include <asm/types.h> + +#ifdef __GNUC__ + + +static __inline__ __u32 ___arch__swab32(__u32 x) +{ + __asm__("bswap %0" : "=r" (x) : "0" (x)); + + return x; +} + +#define _constant_swab16(x) ((__u16)( \ + (((__u16)(x) & (__u16)0x00ffU) << 8) | \ + (((__u16)(x) & (__u16)0xff00U) >> 8))) + +static __inline__ __u16 ___arch__swab16(__u16 x) +{ +#if CONFIG_IS_ENABLED(X86_64) + return _constant_swab16(x); +#else + __asm__("xchgb %b0,%h0" /* swap bytes */ \ + : "=q" (x) \ + : "0" (x)); \ + return x; +#endif +} + +#define __arch__swab32(x) ___arch__swab32(x) +#define __arch__swab16(x) ___arch__swab16(x) + +#if !defined(__STRICT_ANSI__) || defined(__KERNEL__) +# define __BYTEORDER_HAS_U64__ +# define __SWAB_64_THRU_32__ +#endif + +#endif /* __GNUC__ */ + +#include <linux/byteorder/little_endian.h> + +#endif /* _I386_BYTEORDER_H */ |