VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
d2912cb15bdda (Thomas Gleixner 2019-06-04 10:11:33 +0200  1) // SPDX-License-Identifier: GPL-2.0-only
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700  2) /*
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700  3)  * lib/clz_ctz.c
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700  4)  *
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700  5)  * Copyright (C) 2013 Chanho Min <chanho.min@lge.com>
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700  6)  *
3c516cdd02633 (Rashika Kheria  2014-04-03 14:49:09 -0700  7)  * The functions in this file aren't called directly, but are required by
3c516cdd02633 (Rashika Kheria  2014-04-03 14:49:09 -0700  8)  * GCC builtins such as __builtin_ctz, and therefore they can't be removed
3c516cdd02633 (Rashika Kheria  2014-04-03 14:49:09 -0700  9)  * despite appearing unreferenced in kernel source.
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 10)  *
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 11)  * __c[lt]z[sd]i2 can be overridden by linking arch-specific versions.
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 12)  */
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 13) 
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 14) #include <linux/export.h>
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 15) #include <linux/kernel.h>
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 16) 
3c516cdd02633 (Rashika Kheria  2014-04-03 14:49:09 -0700 17) int __weak __ctzsi2(int val);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 18) int __weak __ctzsi2(int val)
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 19) {
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 20) 	return __ffs(val);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 21) }
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 22) EXPORT_SYMBOL(__ctzsi2);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 23) 
3c516cdd02633 (Rashika Kheria  2014-04-03 14:49:09 -0700 24) int __weak __clzsi2(int val);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 25) int __weak __clzsi2(int val)
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 26) {
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 27) 	return 32 - fls(val);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 28) }
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 29) EXPORT_SYMBOL(__clzsi2);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 30) 
3c516cdd02633 (Rashika Kheria  2014-04-03 14:49:09 -0700 31) int __weak __clzdi2(long val);
3c516cdd02633 (Rashika Kheria  2014-04-03 14:49:09 -0700 32) int __weak __ctzdi2(long val);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 33) #if BITS_PER_LONG == 32
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 34) 
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 35) int __weak __clzdi2(long val)
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 36) {
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 37) 	return 32 - fls((int)val);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 38) }
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 39) EXPORT_SYMBOL(__clzdi2);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 40) 
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 41) int __weak __ctzdi2(long val)
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 42) {
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 43) 	return __ffs((u32)val);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 44) }
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 45) EXPORT_SYMBOL(__ctzdi2);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 46) 
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 47) #elif BITS_PER_LONG == 64
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 48) 
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 49) int __weak __clzdi2(long val)
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 50) {
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 51) 	return 64 - fls64((u64)val);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 52) }
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 53) EXPORT_SYMBOL(__clzdi2);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 54) 
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 55) int __weak __ctzdi2(long val)
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 56) {
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 57) 	return __ffs64((u64)val);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 58) }
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 59) EXPORT_SYMBOL(__ctzdi2);
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 60) 
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 61) #else
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 62) #error BITS_PER_LONG not 32 or 64
4df87bb7b6a22 (Chanho Min      2013-07-08 16:01:43 -0700 63) #endif