From 040dc2eebc6628cc05c4ac5e287c5287c5dacf2e Mon Sep 17 00:00:00 2001 From: Jessica Hamilton Date: Fri, 30 May 2014 08:01:37 +1200 Subject: [PATCH] ByteOrder.h: remove use of __builtin_bswap16. * Fixes the build for host compilers older than gcc-4.8 --- headers/os/support/ByteOrder.h | 7 +++++-- headers/posix/netinet/in.h | 4 ++++ src/build/libroot/byteorder.cpp | 6 ------ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/headers/os/support/ByteOrder.h b/headers/os/support/ByteOrder.h index de6e959a15..05c4589cc6 100644 --- a/headers/os/support/ByteOrder.h +++ b/headers/os/support/ByteOrder.h @@ -29,6 +29,11 @@ typedef enum { # define ntohl(x) B_BENDIAN_TO_HOST_INT32(x) # define htons(x) B_HOST_TO_BENDIAN_INT16(x) # define ntohs(x) B_BENDIAN_TO_HOST_INT16(x) + +static inline uint16 __swap_int16(uint16 arg) +{ + return (arg >> 8) | (arg << 8); +} #endif /* always swap macros */ @@ -123,11 +128,9 @@ extern float __swap_float(float arg); #if __GNUC__ >= 4 #define __swap_int64(arg) __builtin_bswap64(arg) #define __swap_int32(arg) __builtin_bswap32(arg) -#define __swap_int16(arg) __builtin_bswap16(arg) #else extern uint64 __swap_int64(uint64 arg); extern uint32 __swap_int32(uint32 arg); -extern uint16 __swap_int16(uint16 arg); #endif #ifdef __cplusplus diff --git a/headers/posix/netinet/in.h b/headers/posix/netinet/in.h index ab891cb8dd..169a6cb04c 100644 --- a/headers/posix/netinet/in.h +++ b/headers/posix/netinet/in.h @@ -31,6 +31,10 @@ typedef uint32_t in_addr_t; # else extern unsigned int __swap_int32(unsigned int); /* private */ # endif + static inline uint16_t __swap_int16(uint16_t arg) + { + return (arg >> 8) | (arg << 8); + } extern uint16_t __swap_int16(uint16_t); /* private */ # if BYTE_ORDER == LITTLE_ENDIAN # define htonl(x) ((uint32_t)__swap_int32(x)) diff --git a/src/build/libroot/byteorder.cpp b/src/build/libroot/byteorder.cpp index fdcbf328ae..ebd6ae0955 100644 --- a/src/build/libroot/byteorder.cpp +++ b/src/build/libroot/byteorder.cpp @@ -7,12 +7,6 @@ #include -uint16 -__swap_int16(uint16 value) -{ - return (value >> 8) | (value << 8); -} - uint32 __swap_int32(uint32 value) {