0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <linux/export.h>
0015 #include <linux/kernel.h>
0016
0017 int __weak __ctzsi2(int val);
0018 int __weak __ctzsi2(int val)
0019 {
0020 return __ffs(val);
0021 }
0022 EXPORT_SYMBOL(__ctzsi2);
0023
0024 int __weak __clzsi2(int val);
0025 int __weak __clzsi2(int val)
0026 {
0027 return 32 - fls(val);
0028 }
0029 EXPORT_SYMBOL(__clzsi2);
0030
0031 int __weak __clzdi2(long val);
0032 int __weak __ctzdi2(long val);
0033 #if BITS_PER_LONG == 32
0034
0035 int __weak __clzdi2(long val)
0036 {
0037 return 32 - fls((int)val);
0038 }
0039 EXPORT_SYMBOL(__clzdi2);
0040
0041 int __weak __ctzdi2(long val)
0042 {
0043 return __ffs((u32)val);
0044 }
0045 EXPORT_SYMBOL(__ctzdi2);
0046
0047 #elif BITS_PER_LONG == 64
0048
0049 int __weak __clzdi2(long val)
0050 {
0051 return 64 - fls64((u64)val);
0052 }
0053 EXPORT_SYMBOL(__clzdi2);
0054
0055 int __weak __ctzdi2(long val)
0056 {
0057 return __ffs64((u64)val);
0058 }
0059 EXPORT_SYMBOL(__ctzdi2);
0060
0061 #else
0062 #error BITS_PER_LONG not 32 or 64
0063 #endif