diff --git a/src/system/libroot/posix/musl/misc/Jamfile b/src/system/libroot/posix/musl/misc/Jamfile index 18e9124faf..739adabb61 100644 --- a/src/system/libroot/posix/musl/misc/Jamfile +++ b/src/system/libroot/posix/musl/misc/Jamfile @@ -2,6 +2,7 @@ SubDir HAIKU_TOP src system libroot posix musl misc ; SubDirSysHdrs [ FDirName $(SUBDIR) .. include ] ; UseHeaders [ FDirName $(SUBDIR) .. internal ] ; +UseHeaders [ FDirName $(SUBDIR) .. arch $(TARGET_KERNEL_ARCH_DIR) ] ; local architectureObject ; for architectureObject in [ MultiArchSubDirSetup ] { @@ -10,6 +11,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { MergeObject <$(architecture)>posix_musl_misc.o : a64l.c + ffs.c ; } } diff --git a/src/system/libroot/posix/musl/misc/ffs.c b/src/system/libroot/posix/musl/misc/ffs.c new file mode 100644 index 0000000000..240b3a101d --- /dev/null +++ b/src/system/libroot/posix/musl/misc/ffs.c @@ -0,0 +1,6 @@ +#include "atomic.h" + +int ffs(int i) +{ + return i ? a_ctz_l(i)+1 : 0; +} diff --git a/src/system/libroot/posix/string/Jamfile b/src/system/libroot/posix/string/Jamfile index 609c0fdb4c..105ff21c63 100644 --- a/src/system/libroot/posix/string/Jamfile +++ b/src/system/libroot/posix/string/Jamfile @@ -20,7 +20,6 @@ for architectureObject in [ MultiArchSubDirSetup ] { bcmp.c bcopy.c bzero.c - ffs.cpp memccpy.c memchr.c memcmp.c diff --git a/src/system/libroot/posix/string/ffs.cpp b/src/system/libroot/posix/string/ffs.cpp deleted file mode 100644 index 0005f34afe..0000000000 --- a/src/system/libroot/posix/string/ffs.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2020, Adrien Destugues . - * Distributed under the terms of the MIT License. - */ - - -// find first (least significant) set bit -extern "C" int -ffs(int value) -{ -#ifdef __riscv - // TODO: As of this writing, gcc 8.x seems - // to have an issue with infinite recursion. - // Re-examine in future GCC updates - int bit; - if (value == 0) - return 0; - for (bit = 1; !(value & 1); bit++) - value >>= 1; - return bit; -#else - return __builtin_ffs(value); -#endif -}