Blame view

kernel/linux-imx6_3.14.28/include/asm-generic/bitops/fls.h 635 Bytes
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  #ifndef _ASM_GENERIC_BITOPS_FLS_H_
  #define _ASM_GENERIC_BITOPS_FLS_H_
  
  /**
   * fls - find last (most-significant) bit set
   * @x: the word to search
   *
   * This is defined the same way as ffs.
   * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
   */
  
  static __always_inline int 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;
  }
  
  #endif /* _ASM_GENERIC_BITOPS_FLS_H_ */