diff options
Diffstat (limited to 'apps/codecs/lib/udiv32_armv4.S')
-rw-r--r-- | apps/codecs/lib/udiv32_armv4.S | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/apps/codecs/lib/udiv32_armv4.S b/apps/codecs/lib/udiv32_armv4.S index a659a9eb8e..2cb6fc8088 100644 --- a/apps/codecs/lib/udiv32_armv4.S +++ b/apps/codecs/lib/udiv32_armv4.S | |||
@@ -33,7 +33,7 @@ | |||
33 | .macro ARM_DIV_BODY dividend, divisor, result, curbit | 33 | .macro ARM_DIV_BODY dividend, divisor, result, curbit |
34 | 34 | ||
35 | mov \result, \dividend | 35 | mov \result, \dividend |
36 | mov \curbit, #90 @ 3 * 30, (calculating branch dest) | 36 | mov \curbit, #93 @ 3 * 31, (calculating branch dest) |
37 | cmp \divisor, \result, lsr #16 | 37 | cmp \divisor, \result, lsr #16 |
38 | movls \result,\result, lsr #16 | 38 | movls \result,\result, lsr #16 |
39 | subls \curbit, \curbit, #48 | 39 | subls \curbit, \curbit, #48 |
@@ -44,9 +44,10 @@ | |||
44 | movls \result,\result, lsr #4 | 44 | movls \result,\result, lsr #4 |
45 | subls \curbit, \curbit, #12 | 45 | subls \curbit, \curbit, #12 |
46 | cmp \divisor, \result, lsr #2 | 46 | cmp \divisor, \result, lsr #2 |
47 | movls \result,\result, lsr #2 | ||
47 | subls \curbit, \curbit, #6 | 48 | subls \curbit, \curbit, #6 |
48 | @ calculation is only done down to shift=2, because the shift=1 step | 49 | cmp \divisor, \result, lsr #1 |
49 | @ would need 3 more cycles, but would only gain 1.5 cycles on average | 50 | subls \curbit, \curbit, #3 |
50 | mov \result, #0 | 51 | mov \result, #0 |
51 | add pc, pc, \curbit, lsl #2 | 52 | add pc, pc, \curbit, lsl #2 |
52 | nop | 53 | nop |