From 31047d6266af5bd4ec2aea4cf27a3b896699ac85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?YOSHIFUJI=20Hideaki=20/=20=E5=90=89=E8=97=A4=E8=8B=B1?= =?UTF-8?q?=E6=98=8E?= Date: Sat, 27 Mar 2010 01:24:16 +0000 Subject: [PATCH] --- yaml --- r: 193895 b: refs/heads/master c: 02cdce53f3d0d3eee8188944c96150ee8c97100d h: refs/heads/master i: 193893: 02eba1945425c978f7b364aab5173622b4ecab15 193891: 41f7cbe61a9811a214b1b98ebe1884f7c25f743c 193887: e5c07421461e0ce7eef102032fd59f5b6068e8ec v: v3 --- [refs] | 2 +- trunk/net/ipv6/ip6_fib.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 54c4139fb323..aff5696760d9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: de7737e056d65ad6b0f135f7bb24d86458af0d47 +refs/heads/master: 02cdce53f3d0d3eee8188944c96150ee8c97100d diff --git a/trunk/net/ipv6/ip6_fib.c b/trunk/net/ipv6/ip6_fib.c index 2f9847924fa5..68119ef62869 100644 --- a/trunk/net/ipv6/ip6_fib.c +++ b/trunk/net/ipv6/ip6_fib.c @@ -127,12 +127,23 @@ static __inline__ u32 fib6_new_sernum(void) /* * test bit */ +#if defined(__LITTLE_ENDIAN) +# define BITOP_BE32_SWIZZLE (0x1F & ~7) +#else +# define BITOP_BE32_SWIZZLE 0 +#endif static __inline__ __be32 addr_bit_set(void *token, int fn_bit) { __be32 *addr = token; - - return htonl(1 << ((~fn_bit)&0x1F)) & addr[fn_bit>>5]; + /* + * Here, + * 1 << ((~fn_bit ^ BITOP_BE32_SWIZZLE) & 0x1f) + * is optimized version of + * htonl(1 << ((~fn_bit)&0x1F)) + * See include/asm-generic/bitops/le.h. + */ + return (1 << ((~fn_bit ^ BITOP_BE32_SWIZZLE) & 0x1f)) & addr[fn_bit >> 5]; } static __inline__ struct fib6_node * node_alloc(void)