root/arch/unicore32/include/asm/bitops.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. fls

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * linux/arch/unicore32/include/asm/bitops.h
   4  *
   5  * Code specific to PKUnity SoC and UniCore ISA
   6  *
   7  * Copyright (C) 2001-2010 GUAN Xue-tao
   8  */
   9 
  10 #ifndef __UNICORE_BITOPS_H__
  11 #define __UNICORE_BITOPS_H__
  12 
  13 #define _ASM_GENERIC_BITOPS_FLS_H_
  14 #define _ASM_GENERIC_BITOPS___FLS_H_
  15 #define _ASM_GENERIC_BITOPS_FFS_H_
  16 #define _ASM_GENERIC_BITOPS___FFS_H_
  17 /*
  18  * On UNICORE, those functions can be implemented around
  19  * the cntlz instruction for much better code efficiency.
  20  */
  21 
  22 static inline int fls(unsigned int x)
  23 {
  24         int ret;
  25 
  26         asm("cntlz\t%0, %1" : "=r" (ret) : "r" (x) : "cc");
  27         ret = 32 - ret;
  28 
  29         return ret;
  30 }
  31 
  32 #define __fls(x) (fls(x) - 1)
  33 #define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
  34 #define __ffs(x) (ffs(x) - 1)
  35 
  36 #include <asm-generic/bitops.h>
  37 
  38 /* following definitions: to avoid using codes in lib/find_*.c */
  39 #define find_next_bit           find_next_bit
  40 #define find_next_zero_bit      find_next_zero_bit
  41 #define find_first_bit          find_first_bit
  42 #define find_first_zero_bit     find_first_zero_bit
  43 
  44 #include <asm-generic/bitops/find.h>
  45 
  46 #endif /* __UNICORE_BITOPS_H__ */

/* [<][>][^][v][top][bottom][index][help] */