Root/
1 | /* |
2 | * lib/clz_ctz.c |
3 | * |
4 | * Copyright (C) 2013 Chanho Min <chanho.min@lge.com> |
5 | * |
6 | * This program is free software; you can redistribute it and/or modify |
7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. |
9 | * The functions in this file aren't called directly, but are required by |
10 | * GCC builtins such as __builtin_ctz, and therefore they can't be removed |
11 | * despite appearing unreferenced in kernel source. |
12 | * |
13 | * __c[lt]z[sd]i2 can be overridden by linking arch-specific versions. |
14 | */ |
15 | |
16 | #include <linux/export.h> |
17 | #include <linux/kernel.h> |
18 | |
19 | int __weak __ctzsi2(int val); |
20 | int __weak __ctzsi2(int val) |
21 | { |
22 | return __ffs(val); |
23 | } |
24 | EXPORT_SYMBOL(__ctzsi2); |
25 | |
26 | int __weak __clzsi2(int val); |
27 | int __weak __clzsi2(int val) |
28 | { |
29 | return 32 - fls(val); |
30 | } |
31 | EXPORT_SYMBOL(__clzsi2); |
32 | |
33 | int __weak __clzdi2(long val); |
34 | int __weak __ctzdi2(long val); |
35 | #if BITS_PER_LONG == 32 |
36 | |
37 | int __weak __clzdi2(long val) |
38 | { |
39 | return 32 - fls((int)val); |
40 | } |
41 | EXPORT_SYMBOL(__clzdi2); |
42 | |
43 | int __weak __ctzdi2(long val) |
44 | { |
45 | return __ffs((u32)val); |
46 | } |
47 | EXPORT_SYMBOL(__ctzdi2); |
48 | |
49 | #elif BITS_PER_LONG == 64 |
50 | |
51 | int __weak __clzdi2(long val) |
52 | { |
53 | return 64 - fls64((u64)val); |
54 | } |
55 | EXPORT_SYMBOL(__clzdi2); |
56 | |
57 | int __weak __ctzdi2(long val) |
58 | { |
59 | return __ffs64((u64)val); |
60 | } |
61 | EXPORT_SYMBOL(__ctzdi2); |
62 | |
63 | #else |
64 | #error BITS_PER_LONG not 32 or 64 |
65 | #endif |
66 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9