X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fcommon%2Finclude%2Frte_byteorder.h;h=4902b48f7fc8b043b8029fbce177f7b51c6b0a24;hb=03f6bced5bba;hp=ccaa528bf3c9a752375fb2814168e6a4ac4fea03;hpb=af75078fece3615088e561357c1e97603e43a5fe;p=dpdk.git diff --git a/lib/librte_eal/common/include/rte_byteorder.h b/lib/librte_eal/common/include/rte_byteorder.h index ccaa528bf3..4902b48f7f 100644 --- a/lib/librte_eal/common/include/rte_byteorder.h +++ b/lib/librte_eal/common/include/rte_byteorder.h @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright(c) 2010-2012 Intel Corporation. All rights reserved. + * Copyright(c) 2010-2013 Intel Corporation. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,7 +30,6 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * version: DPDK.L.1.2.3-3 */ #ifndef _RTE_BYTEORDER_H_ @@ -153,26 +152,44 @@ static inline uint64_t rte_arch_bswap64(uint64_t x) } #endif /* RTE_ARCH_X86_64 */ + /** * Swap bytes in a 16-bit value. */ #define rte_bswap16(x) ((uint16_t)(__builtin_constant_p(x) ? \ rte_constant_bswap16(x) : \ - rte_arch_bswap16(x))) \ + rte_arch_bswap16(x))) +#ifndef RTE_FORCE_INTRINSICS /** * Swap bytes in a 32-bit value. */ #define rte_bswap32(x) ((uint32_t)(__builtin_constant_p(x) ? \ rte_constant_bswap32(x) : \ - rte_arch_bswap32(x))) \ + rte_arch_bswap32(x))) /** * Swap bytes in a 64-bit value. */ #define rte_bswap64(x) ((uint64_t)(__builtin_constant_p(x) ? \ rte_constant_bswap64(x) : \ - rte_arch_bswap64(x))) \ + rte_arch_bswap64(x))) + +#else + +/* __builtin_bswap16 is only available gcc 4.8 and upwards */ + +/** + * Swap bytes in a 32-bit value. + */ +#define rte_bswap32(x) __builtin_bswap32(x) + +/** + * Swap bytes in a 64-bit value. + */ +#define rte_bswap64(x) __builtin_bswap64(x) + +#endif /** * Convert a 16-bit value from CPU order to little endian.