From 2f7bb96c3dbd462dabd13f75c1a97e4140f093e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C3=ABl=20Carr=C3=A9?= Date: Fri, 11 Jun 2010 06:39:32 +0000 Subject: [PATCH] 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 --- firmware/target/arm/as3525/pcm-as3525.c | 15 +-------------- 1 file changed, 1 insertion(+), 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) { if(audio_channels != 1) /* only for microphone */ return; -#if 0 + /* load pointer in a register and avoid updating it in each loop */ register int16_t *samples = mono_samples; @@ -273,19 +273,6 @@ static inline void mono2stereo(int16_t *end) } while(samples != end); mono_samples = samples; /* update pointer */ -#else - /* gcc doesn't use pre indexing : let's save 1 cycle */ - int16_t left; - asm ( - "1: ldrh %0, [%1], #2 \n" // load 1 sample of the left-channel - " strh %0, [%1], #2 \n" // copy it in the right-channel - " cmp %1, %2 \n" // are we finished? - " bne 1b \n" - : "=r"(left), "+r"(mono_samples) - : "r"(end) - : "memory" - ); -#endif /* C / ASM */ } #endif /* CONFIG_CPU == AS3525 */