summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-06-11 06:39:32 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-06-11 06:39:32 +0000
commit2f7bb96c3dbd462dabd13f75c1a97e4140f093e5 (patch)
treee27d73a26912dec983680706b0dd583e6ecccf9e
parent675dcd1a9cc51c295304d8fdc3252eb2bc029b78 (diff)
downloadrockbox-2f7bb96c3dbd462dabd13f75c1a97e4140f093e5.tar.gz
rockbox-2f7bb96c3dbd462dabd13f75c1a97e4140f093e5.zip
as3525v1: drop the asm version of mono2stereo
When building with eabi gcc, 2 variables are assigned the same register This might be a bug in the constraints, but it's just simpler to use C, even at the cost of 1 cycle per loop git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26761 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/as3525/pcm-as3525.c15
1 files changed, 1 insertions, 14 deletions
diff --git a/firmware/target/arm/as3525/pcm-as3525.c b/firmware/target/arm/as3525/pcm-as3525.c
index bb91bfad65..20c34bba36 100644
--- a/firmware/target/arm/as3525/pcm-as3525.c
+++ b/firmware/target/arm/as3525/pcm-as3525.c
@@ -263,7 +263,7 @@ static inline void mono2stereo(int16_t *end)
263{ 263{
264 if(audio_channels != 1) /* only for microphone */ 264 if(audio_channels != 1) /* only for microphone */
265 return; 265 return;
266#if 0 266
267 /* load pointer in a register and avoid updating it in each loop */ 267 /* load pointer in a register and avoid updating it in each loop */
268 register int16_t *samples = mono_samples; 268 register int16_t *samples = mono_samples;
269 269
@@ -273,19 +273,6 @@ static inline void mono2stereo(int16_t *end)
273 } while(samples != end); 273 } while(samples != end);
274 274
275 mono_samples = samples; /* update pointer */ 275 mono_samples = samples; /* update pointer */
276#else
277 /* gcc doesn't use pre indexing : let's save 1 cycle */
278 int16_t left;
279 asm (
280 "1: ldrh %0, [%1], #2 \n" // load 1 sample of the left-channel
281 " strh %0, [%1], #2 \n" // copy it in the right-channel
282 " cmp %1, %2 \n" // are we finished?
283 " bne 1b \n"
284 : "=r"(left), "+r"(mono_samples)
285 : "r"(end)
286 : "memory"
287 );
288#endif /* C / ASM */
289} 276}
290#endif /* CONFIG_CPU == AS3525 */ 277#endif /* CONFIG_CPU == AS3525 */
291 278