Page MenuHomeFreeBSD

D20412.diff
No OneTemporary

D20412.diff

Index: head/sys/arm/include/cpufunc.h
===================================================================
--- head/sys/arm/include/cpufunc.h
+++ head/sys/arm/include/cpufunc.h
@@ -359,6 +359,64 @@
extern u_int arm_cache_loc;
extern u_int arm_cache_type[14];
+#if __ARM_ARCH >= 6
+#define HAVE_INLINE_FFS
+
+static __inline __pure2 int
+ffs(int mask)
+{
+
+ return (__builtin_ffs(mask));
+}
+
+#define HAVE_INLINE_FFSL
+
+static __inline __pure2 int
+ffsl(long mask)
+{
+
+ return (__builtin_ffsl(mask));
+}
+
+#define HAVE_INLINE_FFSLL
+
+static __inline __pure2 int
+ffsll(long long mask)
+{
+
+ return (__builtin_ffsll(mask));
+}
+
+#define HAVE_INLINE_FLS
+
+static __inline __pure2 int
+fls(int mask)
+{
+
+ return (mask == 0 ? 0 :
+ 8 * sizeof(mask) - __builtin_clz((u_int)mask));
+}
+
+#define HAVE_INLINE_FLSL
+
+static __inline __pure2 int
+flsl(long mask)
+{
+
+ return (mask == 0 ? 0 :
+ 8 * sizeof(mask) - __builtin_clzl((u_long)mask));
+}
+
+#define HAVE_INLINE_FLSLL
+
+static __inline __pure2 int
+flsll(long long mask)
+{
+
+ return (mask == 0 ? 0 :
+ 8 * sizeof(mask) - __builtin_clzll((unsigned long long)mask));
+}
+#endif
#else /* !_KERNEL */
static __inline void
Index: head/sys/conf/files.arm
===================================================================
--- head/sys/conf/files.arm
+++ head/sys/conf/files.arm
@@ -129,7 +129,7 @@
kern/subr_sfbuf.c standard
libkern/arm/aeabi_unwind.c standard
libkern/arm/divsi3.S standard
-libkern/arm/ffs.S standard
+libkern/arm/ffs.S optional !armv7 !armv6
libkern/arm/ldivmod.S standard
libkern/arm/ldivmod_helper.c standard
libkern/arm/memclr.S standard
@@ -139,11 +139,11 @@
libkern/ashldi3.c standard
libkern/ashrdi3.c standard
libkern/divdi3.c standard
-libkern/ffsl.c standard
-libkern/ffsll.c standard
-libkern/fls.c standard
-libkern/flsl.c standard
-libkern/flsll.c standard
+libkern/ffsl.c optional !armv7 !armv6
+libkern/ffsll.c optional !armv7 !armv6
+libkern/fls.c optional !armv7 !armv6
+libkern/flsl.c optional !armv7 !armv6
+libkern/flsll.c optional !armv7 !armv6
libkern/lshrdi3.c standard
libkern/memcmp.c standard
libkern/moddi3.c standard

File Metadata

Mime Type
text/plain
Expires
Thu, May 21, 5:03 PM (5 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33400104
Default Alt Text
D20412.diff (2 KB)

Event Timeline