diff options
Diffstat (limited to 'sys/lib/libkern')
| -rw-r--r-- | sys/lib/libkern/arch/arm64/ffs.S | 17 | ||||
| -rw-r--r-- | sys/lib/libkern/arch/powerpc/ffs.S | 15 | ||||
| -rw-r--r-- | sys/lib/libkern/arch/powerpc64/ffs.S | 15 |
3 files changed, 47 insertions, 0 deletions
diff --git a/sys/lib/libkern/arch/arm64/ffs.S b/sys/lib/libkern/arch/arm64/ffs.S new file mode 100644 index 00000000000..03101cb2c9f --- /dev/null +++ b/sys/lib/libkern/arch/arm64/ffs.S @@ -0,0 +1,17 @@ +/* $OpenBSD: ffs.S,v 1.1 2020/06/10 20:19:29 naddy Exp $ */ +/* + * Written by Christian Weisgerber <naddy@openbsd.org>. + * Public domain. + */ + +#include <machine/asm.h> + +ENTRY(ffs) + RETGUARD_SETUP(ffs, x15) + rbit w1, w0 + clz w1, w1 + cmp w0, wzr + csinc w0, wzr, w1, eq + RETGUARD_CHECK(ffs, x15) + ret +END(ffs) diff --git a/sys/lib/libkern/arch/powerpc/ffs.S b/sys/lib/libkern/arch/powerpc/ffs.S new file mode 100644 index 00000000000..13fe17fb4f8 --- /dev/null +++ b/sys/lib/libkern/arch/powerpc/ffs.S @@ -0,0 +1,15 @@ +/* $OpenBSD: ffs.S,v 1.1 2020/06/10 20:19:29 naddy Exp $ */ +/* + * Written by Christian Weisgerber <naddy@openbsd.org>. + * Public domain. + */ + +#include <machine/asm.h> + +ENTRY(ffs) + neg %r4, %r3 + and %r3, %r3, %r4 + cntlzw %r3, %r3 + subfic %r3, %r3, 32 + blr +END(ffs) diff --git a/sys/lib/libkern/arch/powerpc64/ffs.S b/sys/lib/libkern/arch/powerpc64/ffs.S new file mode 100644 index 00000000000..13fe17fb4f8 --- /dev/null +++ b/sys/lib/libkern/arch/powerpc64/ffs.S @@ -0,0 +1,15 @@ +/* $OpenBSD: ffs.S,v 1.1 2020/06/10 20:19:29 naddy Exp $ */ +/* + * Written by Christian Weisgerber <naddy@openbsd.org>. + * Public domain. + */ + +#include <machine/asm.h> + +ENTRY(ffs) + neg %r4, %r3 + and %r3, %r3, %r4 + cntlzw %r3, %r3 + subfic %r3, %r3, 32 + blr +END(ffs) |
