/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2023 Sean Anderson * * ARM bitops to call when using THUMB1, which doesn't have these instructions. */ #include #include .pushsection .text.__fls ENTRY(__fls) clz r0, r0 rsb r0, r0, #31 ret lr ENDPROC(__fls) .popsection .pushsection .text.__ffs ENTRY(__ffs) rsb r3, r0, #0 and r0, r0, r3 clz r0, r0 rsb r0, r0, #31 ret lr ENDPROC(__ffs) .popsection .pushsection .text.fls ENTRY(fls) cmp r0, #0 clzne r0, r0 rsbne r0, r0, #32 ret lr ENDPROC(fls) .popsection .pushsection .text.ffs ENTRY(ffs) rsb r3, r0, #0 and r0, r0, r3 clz r0, r0 rsb r0, r0, #32 ret lr ENDPROC(ffs) .popsection