summaryrefslogtreecommitdiff
path: root/apps/dsp_arm.S
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dsp_arm.S')
-rw-r--r--apps/dsp_arm.S31
1 files changed, 17 insertions, 14 deletions
diff --git a/apps/dsp_arm.S b/apps/dsp_arm.S
index 2150ff0631..7e360749a3 100644
--- a/apps/dsp_arm.S
+++ b/apps/dsp_arm.S
@@ -23,6 +23,9 @@
23/**************************************************************************** 23/****************************************************************************
24 * void channels_process_sound_chan_mono(int count, int32_t *buf[]) 24 * void channels_process_sound_chan_mono(int count, int32_t *buf[])
25 */ 25 */
26
27#include "config.h"
28
26 .section .icode, "ax", %progbits 29 .section .icode, "ax", %progbits
27 .align 2 30 .align 2
28 .global channels_process_sound_chan_mono 31 .global channels_process_sound_chan_mono
@@ -47,7 +50,7 @@ channels_process_sound_chan_mono:
47 stmia r2!, { r12, r14 } @ store Mo0, Mo1 50 stmia r2!, { r12, r14 } @ store Mo0, Mo1
48 bgt .monoloop @ 51 bgt .monoloop @
49 @ 52 @
50 ldmltfd sp!, { r4, pc } @ if count was even, we're done 53 ldmpc cond=lt, regs=r4 @ if count was even, we're done
51 @ 54 @
52.mono_singlesample: @ 55.mono_singlesample: @
53 ldr r3, [r1] @ r3 = Ls 56 ldr r3, [r1] @ r3 = Ls
@@ -57,7 +60,7 @@ channels_process_sound_chan_mono:
57 str r12, [r1] @ store Mo 60 str r12, [r1] @ store Mo
58 str r12, [r2] @ store Mo 61 str r12, [r2] @ store Mo
59 @ 62 @
60 ldmfd sp!, { r4, pc } @ 63 ldmpc regs=r4 @
61 .size channels_process_sound_chan_mono, \ 64 .size channels_process_sound_chan_mono, \
62 .-channels_process_sound_chan_mono 65 .-channels_process_sound_chan_mono
63 66
@@ -112,7 +115,7 @@ channels_process_sound_chan_custom:
112 115
113 bgt .custom_loop 116 bgt .custom_loop
114 117
115 ldmltfd sp!, { r4-r10, pc } @ < 0? even count 118 ldmpc cond=lt, regs=r4-r10 @ < 0? even count
116 119
117.custom_single_sample: 120.custom_single_sample:
118 ldr r5, [r1] @ handle odd sample 121 ldr r5, [r1] @ handle odd sample
@@ -131,7 +134,7 @@ channels_process_sound_chan_custom:
131 str r5, [r1] @ Store Lc0 134 str r5, [r1] @ Store Lc0
132 str r7, [r2] @ Store Rc0 135 str r7, [r2] @ Store Rc0
133 136
134 ldmfd sp!, { r4-r10, pc } 137 ldmpc regs=r4-r10
135 .size channels_process_sound_chan_custom, \ 138 .size channels_process_sound_chan_custom, \
136 .-channels_process_sound_chan_custom 139 .-channels_process_sound_chan_custom
137 140
@@ -164,7 +167,7 @@ channels_process_sound_chan_karaoke:
164 stmia r2!, { r12, r14 } @ store Ro0, Ro1 167 stmia r2!, { r12, r14 } @ store Ro0, Ro1
165 bgt .karaokeloop @ 168 bgt .karaokeloop @
166 @ 169 @
167 ldmltfd sp!, { r4, pc } @ if count was even, we're done 170 ldmpc cond=lt, regs=r4 @ if count was even, we're done
168 @ 171 @
169.karaoke_singlesample: @ 172.karaoke_singlesample: @
170 ldr r3, [r1] @ r3 = Li 173 ldr r3, [r1] @ r3 = Li
@@ -175,7 +178,7 @@ channels_process_sound_chan_karaoke:
175 str r3, [r1] @ store Lo 178 str r3, [r1] @ store Lo
176 str r12, [r2] @ store Ro 179 str r12, [r2] @ store Ro
177 @ 180 @
178 ldmfd sp!, { r4, pc } @ 181 ldmpc regs=r4 @
179 .size channels_process_sound_chan_karaoke, \ 182 .size channels_process_sound_chan_karaoke, \
180 .-channels_process_sound_chan_karaoke 183 .-channels_process_sound_chan_karaoke
181 184
@@ -225,7 +228,7 @@ sample_output_mono:
225 subs r0, r0, #2 228 subs r0, r0, #2
226 bgt .somloop 229 bgt .somloop
227 230
228 ldmltfd sp!, { r4-r6, pc } @ even 'count'? return 231 ldmpc cond=lt, regs=r4-r6 @ even 'count'? return
229 232
230.som_singlesample: 233.som_singlesample:
231 ldr r5, [r2] @ do odd sample 234 ldr r5, [r2] @ do odd sample
@@ -239,7 +242,7 @@ sample_output_mono:
239 orr r5, r5, r5, lsl #16 242 orr r5, r5, r5, lsl #16
240 str r5, [r3] 243 str r5, [r3]
241 244
242 ldmfd sp!, { r4-r6, pc } 245 ldmpc regs=r4-r6
243 .size sample_output_mono, .-sample_output_mono 246 .size sample_output_mono, .-sample_output_mono
244 247
245/**************************************************************************** 248/****************************************************************************
@@ -302,7 +305,7 @@ sample_output_stereo:
302 subs r0, r0, #2 305 subs r0, r0, #2
303 bgt .sosloop 306 bgt .sosloop
304 307
305 ldmltfd sp!, { r4-r9, pc } @ even 'count'? return 308 ldmpc cond=lt, regs=r4-r9 @ even 'count'? return
306 309
307.sos_singlesample: 310.sos_singlesample:
308 ldr r6, [r2] @ left odd sample 311 ldr r6, [r2] @ left odd sample
@@ -324,7 +327,7 @@ sample_output_stereo:
324 327
325 str r8, [r3] 328 str r8, [r3]
326 329
327 ldmfd sp!, { r4-r9, pc } 330 ldmpc regs=r4-r9
328 .size sample_output_stereo, .-sample_output_stereo 331 .size sample_output_stereo, .-sample_output_stereo
329#endif /* ARM_ARCH < 6 */ 332#endif /* ARM_ARCH < 6 */
330 333
@@ -387,7 +390,7 @@ apply_crossfeed:
387 stmia r12, { r8-r11 } @ save filter history 390 stmia r12, { r8-r11 } @ save filter history
388 str r0, [r12, #30*4] @ save delay line index 391 str r0, [r12, #30*4] @ save delay line index
389 add sp, sp, #8 @ remove temp variables from stack 392 add sp, sp, #8 @ remove temp variables from stack
390 ldmia sp!, { r4-r11, pc } 393 ldmpc regs=r4-r11
391 .size apply_crossfeed, .-apply_crossfeed 394 .size apply_crossfeed, .-apply_crossfeed
392 395
393/**************************************************************************** 396/****************************************************************************
@@ -444,7 +447,7 @@ dsp_downsample:
444 ldr r1, [r3] @ r1 = &dst[0] 447 ldr r1, [r3] @ r1 = &dst[0]
445 sub r8, r8, r1 @ dst - &dst[0] 448 sub r8, r8, r1 @ dst - &dst[0]
446 mov r0, r8, lsr #2 @ convert bytes->samples 449 mov r0, r8, lsr #2 @ convert bytes->samples
447 ldmia sp!, { r4-r11, pc } @ ... and we're out 450 ldmpc regs=r4-r11 @ ... and we're out
448 .size dsp_downsample, .-dsp_downsample 451 .size dsp_downsample, .-dsp_downsample
449 452
450/**************************************************************************** 453/****************************************************************************
@@ -507,7 +510,7 @@ dsp_upsample:
507 sub r8, r8, r2 @ dst - &dst[0] 510 sub r8, r8, r2 @ dst - &dst[0]
508 mov r0, r8, lsr #2 @ convert bytes->samples 511 mov r0, r8, lsr #2 @ convert bytes->samples
509 add sp, sp, #8 @ adjust stack for temp variables 512 add sp, sp, #8 @ adjust stack for temp variables
510 ldmfd sp!, { r4-r11, pc } @ ... and we're out 513 ldmpc regs=r4-r11 @ ... and we're out
511 .size dsp_upsample, .-dsp_upsample 514 .size dsp_upsample, .-dsp_upsample
512 515
513/**************************************************************************** 516/****************************************************************************
@@ -554,5 +557,5 @@ dsp_apply_gain:
554 subs r3, r3, #1 557 subs r3, r3, #1
555 bgt .dag_outerloop @ end of outer loop 558 bgt .dag_outerloop @ end of outer loop
556 559
557 ldmfd sp!, { r4-r8, pc } 560 ldmpc regs=r4-r8
558 .size dsp_apply_gain, .-dsp_apply_gain 561 .size dsp_apply_gain, .-dsp_apply_gain