diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/libspc/spc_dsp.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/apps/codecs/libspc/spc_dsp.c b/apps/codecs/libspc/spc_dsp.c index 0017b2a0a0..28e05425fb 100644 --- a/apps/codecs/libspc/spc_dsp.c +++ b/apps/codecs/libspc/spc_dsp.c | |||
@@ -1338,17 +1338,18 @@ void DSP_run_( struct Spc_Dsp* this, long count, int32_t* out_buf ) | |||
1338 | int fb_0, fb_1; | 1338 | int fb_0, fb_1; |
1339 | 1339 | ||
1340 | /* Apply FIR */ | 1340 | /* Apply FIR */ |
1341 | fb_0 = *(uint32_t *)echo_ptr; | ||
1342 | 1341 | ||
1343 | /* Keep last 8 samples */ | 1342 | /* Keep last 8 samples */ |
1344 | asm volatile ( | 1343 | asm volatile ( |
1344 | "ldr %[fb_0], [%[echo_p]] \r\n" | ||
1345 | "add %[fir_p], %[t_fir_p], #4 \r\n" | 1345 | "add %[fir_p], %[t_fir_p], #4 \r\n" |
1346 | "bic %[t_fir_p], %[fir_p], %[mask] \r\n" | 1346 | "bic %[t_fir_p], %[fir_p], %[mask] \r\n" |
1347 | "str %[fb_0], [%[fir_p], #-4] \r\n" | 1347 | "str %[fb_0], [%[fir_p], #-4] \r\n" |
1348 | /* duplicate at +8 eliminates wrap checking below */ | 1348 | /* duplicate at +8 eliminates wrap checking below */ |
1349 | "str %[fb_0], [%[fir_p], #28] \r\n" | 1349 | "str %[fb_0], [%[fir_p], #28] \r\n" |
1350 | : [fir_p]"=&r"(fir_ptr), [t_fir_p]"+r"(this->fir_ptr) | 1350 | : [fir_p]"=&r"(fir_ptr), [t_fir_p]"+r"(this->fir_ptr), |
1351 | : [fb_0]"r"(fb_0), [mask]"i"(~FIR_BUF_MASK)); | 1351 | [fb_0]"=&r"(fb_0) |
1352 | : [echo_p]"r"(echo_ptr), [mask]"i"(~FIR_BUF_MASK)); | ||
1352 | 1353 | ||
1353 | fir_coeff = (int32_t *)this->fir_coeff; | 1354 | fir_coeff = (int32_t *)this->fir_coeff; |
1354 | 1355 | ||