diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/libspeex/filters_arm4.S | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/apps/codecs/libspeex/filters_arm4.S b/apps/codecs/libspeex/filters_arm4.S index dcd1691982..e652ede554 100644 --- a/apps/codecs/libspeex/filters_arm4.S +++ b/apps/codecs/libspeex/filters_arm4.S | |||
@@ -206,11 +206,9 @@ qmf_synth: | |||
206 | 206 | ||
207 | sub r0, r8, r5 @ r0 = &xx1[N2] | 207 | sub r0, r8, r5 @ r0 = &xx1[N2] |
208 | sub r1, r9, r5 @ r1 = &xx2[N2] | 208 | sub r1, r9, r5 @ r1 = &xx2[N2] |
209 | str r4, [sp, #-4] @ Stack N | 209 | str r4, [sp, #-4]! @ Stack N |
210 | mov r4, r5 | 210 | mov r4, r5 |
211 | str r4, [sp, #-8] @ Stack M | 211 | str r4, [sp, #-4]! @ Stack M |
212 | @ sp doesn't point to the end of the stack frame from here on, but we're not | ||
213 | @ calling anything so it shouldn't matter | ||
214 | @ Main loop, register usage: | 212 | @ Main loop, register usage: |
215 | @ r0 = xx1, r1 = xx2, r2 = a, r3 = y, r4 = M, r5 = x10, r6 = x11, r7 = x20 | 213 | @ r0 = xx1, r1 = xx2, r2 = a, r3 = y, r4 = M, r5 = x10, r6 = x11, r7 = x20 |
216 | @ r8 = x21, r9 = [a1, a0], r10 = acc0, r11 = acc1, r12 = acc2, r14 = acc3 | 214 | @ r8 = x21, r9 = [a1, a0], r10 = acc0, r11 = acc1, r12 = acc2, r14 = acc3 |
@@ -251,7 +249,7 @@ qmf_synth: | |||
251 | subs r4, r4, #4 | 249 | subs r4, r4, #4 |
252 | bne 1b | 250 | bne 1b |
253 | 251 | ||
254 | ldr r4, [sp, #-8] @ r4 = M | 252 | ldr r4, [sp] @ r4 = M |
255 | sub r2, r2, r4, lsl #1 @ r2 = &a[0] | 253 | sub r2, r2, r4, lsl #1 @ r2 = &a[0] |
256 | sub r0, r0, r4 @ r0 = &xx1[N2 - 2 - i] | 254 | sub r0, r0, r4 @ r0 = &xx1[N2 - 2 - i] |
257 | sub r1, r1, r4 @ r1 = &xx2[N2 - 2 - i] | 255 | sub r1, r1, r4 @ r1 = &xx2[N2 - 2 - i] |
@@ -281,13 +279,14 @@ qmf_synth: | |||
281 | strh r11, [r3], #2 | 279 | strh r11, [r3], #2 |
282 | strh r12, [r3], #2 | 280 | strh r12, [r3], #2 |
283 | strh r14, [r3], #2 | 281 | strh r14, [r3], #2 |
284 | ldr r10, [sp, #-4] @ Load N | 282 | ldr r10, [sp, #4] @ Load N |
285 | subs r10, r10, #4 @ Are we done? | 283 | subs r10, r10, #4 @ Are we done? |
286 | strne r10, [sp, #-4] | 284 | strne r10, [sp, #4] @ no -> |
287 | bne 0b | 285 | bne 0b @ do outer loop |
288 | 286 | ||
289 | @ Copy start of xx1 and xx2 back to alternate mem1 and mem2 entries | 287 | @ Copy start of xx1 and xx2 back to alternate mem1 and mem2 entries |
290 | @ r0 and r1 are &xx1[0] and &xx2[0] at this point | 288 | @ r0 and r1 are &xx1[0] and &xx2[0] at this point |
289 | add sp, sp, #8 | ||
291 | ldmia sp, { r5-r6, sp } @ Fetch &mem1[1], &mem2[1], restore sp | 290 | ldmia sp, { r5-r6, sp } @ Fetch &mem1[1], &mem2[1], restore sp |
292 | 0: | 291 | 0: |
293 | ldr r7, [r0], #4 | 292 | ldr r7, [r0], #4 |