lkml.org 
[lkml]   [2006]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[-mm patch 6/8] arm: fix undefined reference to generic_fls
    This patch defines constant_fls() instead of removed generic_fls().

    Signed-off-by: Akinobu Mita <mita@miraclelinux.com>
    Cc: Russell King <rmk@arm.linux.org.uk>

    include/asm-arm/bitops.h | 31 ++++++++++++++++++++++++++++++-
    1 files changed, 30 insertions(+), 1 deletion(-)

    Index: 2.6-mm/include/asm-arm/bitops.h
    ===================================================================
    --- 2.6-mm.orig/include/asm-arm/bitops.h
    +++ 2.6-mm/include/asm-arm/bitops.h
    @@ -239,13 +239,42 @@ extern int _find_next_bit_be(const unsig

    #else

    +static inline int constant_fls(int x)
    +{
    + int r = 32;
    +
    + if (!x)
    + return 0;
    + if (!(x & 0xffff0000u)) {
    + x <<= 16;
    + r -= 16;
    + }
    + if (!(x & 0xff000000u)) {
    + x <<= 8;
    + r -= 8;
    + }
    + if (!(x & 0xf0000000u)) {
    + x <<= 4;
    + r -= 4;
    + }
    + if (!(x & 0xc0000000u)) {
    + x <<= 2;
    + r -= 2;
    + }
    + if (!(x & 0x80000000u)) {
    + x <<= 1;
    + r -= 1;
    + }
    + return r;
    +}
    +
    /*
    * On ARMv5 and above those functions can be implemented around
    * the clz instruction for much better code efficiency.
    */

    #define fls(x) \
    - ( __builtin_constant_p(x) ? generic_fls(x) : \
    + ( __builtin_constant_p(x) ? constant_fls(x) : \
    ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) )
    #define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
    #define __ffs(x) (ffs(x) - 1)
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-02-21 04:52    [W:0.046 / U:59.736 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site