Changes in kernel/generic/include/bitops.h [b3f8fb7:7a0359b] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/bitops.h
rb3f8fb7 r7a0359b 27 27 */ 28 28 29 /** @addtogroup generic 29 /** @addtogroup generic 30 30 * @{ 31 31 */ … … 36 36 #define KERN_BITOPS_H_ 37 37 38 #include <trace.h> 38 39 39 /** Return position of first non-zero bit from left (i.e. [log_2(arg)]). 40 #ifdef __32_BITS__ 41 #define fnzb(arg) fnzb32(arg) 42 #endif 43 44 #ifdef __64_BITS__ 45 #define fnzb(arg) fnzb64(arg) 46 #endif 47 48 /** Return position of first non-zero bit from left (32b variant). 40 49 * 41 * If number is zero, it returns 0 50 * @return 0 (if the number is zero) or [log_2(arg)]. 51 * 42 52 */ 43 static inline int fnzb32(uint32_t arg)53 NO_TRACE static inline uint8_t fnzb32(uint32_t arg) 44 54 { 45 int n = 0;46 55 uint8_t n = 0; 56 47 57 if (arg >> 16) { 48 58 arg >>= 16; … … 65 75 } 66 76 67 if (arg >> 1) { 68 arg >>= 1; 77 if (arg >> 1) 69 78 n += 1; 70 }71 79 72 80 return n; 73 81 } 74 82 75 static inline int fnzb64(uint64_t arg) 83 /** Return position of first non-zero bit from left (64b variant). 84 * 85 * @return 0 (if the number is zero) or [log_2(arg)]. 86 * 87 */ 88 NO_TRACE static inline uint8_t fnzb64(uint64_t arg) 76 89 { 77 int n = 0;78 90 uint8_t n = 0; 91 79 92 if (arg >> 32) { 80 93 arg >>= 32; … … 85 98 } 86 99 87 #define fnzb(x) fnzb32(x)88 89 100 #endif 90 101
Note:
See TracChangeset
for help on using the changeset viewer.