|
@@ -56,4 +56,19 @@ unsigned long __rt_ffsl(unsigned long value)
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+unsigned long __rt_clz(unsigned long value)
|
|
|
|
+{
|
|
|
|
+#ifdef __GNUC__
|
|
|
|
+ return __builtin_clz(value);
|
|
|
|
+#else
|
|
|
|
+ unsigned long val;
|
|
|
|
+
|
|
|
|
+ __asm__ volatile ("clz %0, %1"
|
|
|
|
+ :"=r"(val)
|
|
|
|
+ :"r"(value));
|
|
|
|
+
|
|
|
|
+ return val;
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
#endif /* RT_USING_CPU_FFS */
|
|
#endif /* RT_USING_CPU_FFS */
|