diff options
Diffstat (limited to 'firmware/target/mips')
-rw-r--r-- | firmware/target/mips/ffs-mips.S | 17 |
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 | ||
42 | find_first_set_bit: | 42 | find_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 | 51 | 1: |
52 | jr ra # | ||
53 | nop # | ||