1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/**************************************************************************** 2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng **************************************************************************** 3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** This header was automatically generated from a Linux kernel header 5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** of the same name, to make information necessary for userspace to 6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** call into the kernel available to libc. It contains only constants, 7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** structures, and macros generated from the original header, and thus, 8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** contains no copyrightable information. 9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** To edit the content of this header, modify the corresponding 11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** source file (e.g. under external/kernel-headers/original/) then 12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** run bionic/libc/kernel/tools/update_all.py 13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** Any manual change here will be lost the next time this script will 15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** be run. You've been warned! 16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng **************************************************************************** 18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/ 19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef _UAPI_LINUX_SWAB_H 20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _UAPI_LINUX_SWAB_H 21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h> 22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/compiler.h> 23655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <asm/swab.h> 24d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define ___constant_swab16(x) ((__u16) ((((__u16) (x) & (__u16) 0x00ffU) << 8) | (((__u16) (x) & (__u16) 0xff00U) >> 8))) 25d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define ___constant_swab32(x) ((__u32) ((((__u32) (x) & (__u32) 0x000000ffUL) << 24) | (((__u32) (x) & (__u32) 0x0000ff00UL) << 8) | (((__u32) (x) & (__u32) 0x00ff0000UL) >> 8) | (((__u32) (x) & (__u32) 0xff000000UL) >> 24))) 26d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define ___constant_swab64(x) ((__u64) ((((__u64) (x) & (__u64) 0x00000000000000ffULL) << 56) | (((__u64) (x) & (__u64) 0x000000000000ff00ULL) << 40) | (((__u64) (x) & (__u64) 0x0000000000ff0000ULL) << 24) | (((__u64) (x) & (__u64) 0x00000000ff000000ULL) << 8) | (((__u64) (x) & (__u64) 0x000000ff00000000ULL) >> 8) | (((__u64) (x) & (__u64) 0x0000ff0000000000ULL) >> 24) | (((__u64) (x) & (__u64) 0x00ff000000000000ULL) >> 40) | (((__u64) (x) & (__u64) 0xff00000000000000ULL) >> 56))) 27d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define ___constant_swahw32(x) ((__u32) ((((__u32) (x) & (__u32) 0x0000ffffUL) << 16) | (((__u32) (x) & (__u32) 0xffff0000UL) >> 16))) 28d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define ___constant_swahb32(x) ((__u32) ((((__u32) (x) & (__u32) 0x00ff00ffUL) << 8) | (((__u32) (x) & (__u32) 0xff00ff00UL) >> 8))) 29106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __arch_swab16 30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#else 31106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#endif 32106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __arch_swab32 33655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#else 34655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 35106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __arch_swab64 36655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#elif defined(__SWAB_64_THRU_32__) 37655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#else 38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 39ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic inline __attribute__((__const__)) __u32 __fswahw32(__u32 val) { 40106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __arch_swahw32 41ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __arch_swahw32(val); 42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#else 43ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return ___constant_swahw32(val); 44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 45ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 46ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic inline __attribute__((__const__)) __u32 __fswahb32(__u32 val) { 47ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris#ifdef __arch_swahb32 48ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __arch_swahb32(val); 49106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#else 50ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return ___constant_swahb32(val); 51106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#endif 52ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 53ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris#define __swab16(x) (__u16) __builtin_bswap16((__u16) (x)) 54ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris#define __swab32(x) (__u32) __builtin_bswap32((__u32) (x)) 55106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define __swab64(x) (__u64) __builtin_bswap64((__u64) (x)) 56d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define __swahw32(x) (__builtin_constant_p((__u32) (x)) ? ___constant_swahw32(x) : __fswahw32(x)) 57d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define __swahb32(x) (__builtin_constant_p((__u32) (x)) ? ___constant_swahb32(x) : __fswahb32(x)) 58ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic __always_inline __u16 __swab16p(const __u16 * p) { 59ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris#ifdef __arch_swab16p 60ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __arch_swab16p(p); 61106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#else 62ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __swab16(* p); 63655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 64ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 65ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic __always_inline __u32 __swab32p(const __u32 * p) { 66655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifdef __arch_swab32p 67ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __arch_swab32p(p); 68ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris#else 69ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __swab32(* p); 70106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#endif 71ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 72ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic __always_inline __u64 __swab64p(const __u64 * p) { 73655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifdef __arch_swab64p 74ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __arch_swab64p(p); 75655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#else 76ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __swab64(* p); 77655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 78ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 79ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic inline __u32 __swahw32p(const __u32 * p) { 80106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __arch_swahw32p 81ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __arch_swahw32p(p); 82655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#else 83ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __swahw32(* p); 84655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 85ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 86ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic inline __u32 __swahb32p(const __u32 * p) { 87ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris#ifdef __arch_swahb32p 88ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __arch_swahb32p(p); 89106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#else 90ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris return __swahb32(* p); 91655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 92ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 93ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic inline void __swab16s(__u16 * p) { 94655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifdef __arch_swab16s 95ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris __arch_swab16s(p); 96ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris#else 97ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris * p = __swab16p(p); 98106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#endif 99ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 100ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic __always_inline void __swab32s(__u32 * p) { 101655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifdef __arch_swab32s 102ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris __arch_swab32s(p); 103655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#else 104ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris * p = __swab32p(p); 105655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 106ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 107ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic __always_inline void __swab64s(__u64 * p) { 108106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __arch_swab64s 109ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris __arch_swab64s(p); 110655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#else 111ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris * p = __swab64p(p); 112655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 113ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 114ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic inline void __swahw32s(__u32 * p) { 115ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris#ifdef __arch_swahw32s 116ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris __arch_swahw32s(p); 117106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#else 118ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris * p = __swahw32p(p); 119655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 120ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 121ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferrisstatic inline void __swahb32s(__u32 * p) { 122655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifdef __arch_swahb32s 123ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris __arch_swahb32s(p); 124ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris#else 125ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris * p = __swahb32p(p); 126655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 127ee1e0a34ae01aa01a207f00f0fe6cfb09852e44eChristopher Ferris} 128106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#endif 129