summaryrefslogtreecommitdiff
path: root/firmware/target/mips/ffs-mips.S
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/mips/ffs-mips.S')
-rw-r--r--firmware/target/mips/ffs-mips.S17
1 files changed, 10 insertions, 7 deletions
diff --git a/firmware/target/mips/ffs-mips.S b/firmware/target/mips/ffs-mips.S
index f1547778d4..92f4e31729 100644
--- a/firmware/target/mips/ffs-mips.S
+++ b/firmware/target/mips/ffs-mips.S
@@ -40,11 +40,14 @@
40 .type find_first_set_bit, %function 40 .type find_first_set_bit, %function
41 41
42find_first_set_bit: 42find_first_set_bit:
43 negu t0, a0 # t0 = a0 & -a0 43 beqz a0, 0 # if(a0 == 0) goto 1
44 and t0, t0, a0 # 44 li v0, 32 # v0 = 32
45 45 negu t0, a0 # t0 = -a0
46 clz v0, t0 # Get lead 0's count 46 and t0, t0, a0 # t0 = a0 & t0
47 clz v0, t0 # Get lead 0's count (v0=32 if all 0's)
47 li t0, 31 # t0 = 31 48 li t0, 31 # t0 = 31
48 sub v0, t0, v0 # Return value = t0 - v0 49 jr ra #
49 jr ra 50 sub v0, t0, v0 # v0 = t0 - v0
50 nop 511:
52 jr ra #
53 nop #