mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
codecs: disable incompatible ARM assembly for Cortex-M
Some assembly routines don't work on Thumb as-is. For now just disable these so the codecs compile. Affected codecs: - libflac - libmad - libspeex - libtta - libwavpack A few DSP routines need to be disabled for the same reason: - crossfeed_process - crossfeed_meier_process - resample_hermite - filter_process - sample_output_stereo Change-Id: I277e0719652096745a19a7e2b597eff32d8e1553
This commit is contained in:
parent
94c7c908b3
commit
da4e02cdd3
17 changed files with 28 additions and 23 deletions
|
@ -2,6 +2,6 @@ decoder.c
|
|||
shndec.c
|
||||
#if defined(CPU_COLDFIRE)
|
||||
coldfire.S
|
||||
#elif defined(CPU_ARM)
|
||||
#elif defined(CPU_ARM_CLASSIC)
|
||||
arm.S
|
||||
#endif
|
||||
|
|
|
@ -320,7 +320,7 @@ static int decode_subframe_lpc(FLACContext *s, int32_t* decoded, int pred_order,
|
|||
(void)sum;
|
||||
lpc_decode_emac(s->blocksize - pred_order, qlevel, pred_order,
|
||||
decoded + pred_order, coeffs);
|
||||
#elif defined(CPU_ARM)
|
||||
#elif defined(CPU_ARM_CLASSIC)
|
||||
(void)sum;
|
||||
lpc_decode_arm(s->blocksize - pred_order, qlevel, pred_order,
|
||||
decoded + pred_order, coeffs);
|
||||
|
|
|
@ -7,8 +7,7 @@ stream.c
|
|||
synth.c
|
||||
#if defined(CPU_COLDFIRE)
|
||||
imdct_mcf5249.S
|
||||
#endif
|
||||
#if defined(CPU_ARM)
|
||||
#elif defined(CPU_ARM_CLASSIC)
|
||||
imdct_l_arm.S
|
||||
synth_full_arm.S
|
||||
#endif
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
#if defined(CPU_COLDFIRE)
|
||||
#define FPM_COLDFIRE_EMAC
|
||||
#elif defined(CPU_ARM)
|
||||
#elif defined(CPU_ARM_CLASSIC)
|
||||
#define FPM_ARM
|
||||
#elif defined(CPU_MIPS)
|
||||
#define FPM_MIPS
|
||||
|
|
|
@ -922,7 +922,7 @@ mad_fixed_t III_requantize(unsigned int value, signed int exp)
|
|||
}
|
||||
|
||||
/* we must take care that sz >= bits and sz < sizeof(long) lest bits == 0 */
|
||||
# if defined(CPU_ARM)
|
||||
# if defined(CPU_ARM_CLASSIC)
|
||||
# define MASK(cache, sz, bits) \
|
||||
({ unsigned long res; \
|
||||
asm ("mov %0, #1\n\t" \
|
||||
|
@ -1557,7 +1557,7 @@ enum mad_error III_stereo(mad_fixed_t xr[2][576],
|
|||
return MAD_ERROR_NONE;
|
||||
}
|
||||
|
||||
#if defined(CPU_ARM)
|
||||
#if defined(CPU_ARM_CLASSIC)
|
||||
void III_aliasreduce(mad_fixed_t xr[576], int lines);
|
||||
#else
|
||||
/*
|
||||
|
@ -2683,7 +2683,7 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
|
|||
|
||||
#endif
|
||||
|
||||
#ifdef CPU_ARM
|
||||
#if defined(CPU_ARM_CLASSIC)
|
||||
void III_overlap(mad_fixed_t const output[36], mad_fixed_t overlap[18],
|
||||
mad_fixed_t sample[18][32], unsigned int sb);
|
||||
#else
|
||||
|
|
|
@ -39,7 +39,7 @@ resample.c
|
|||
#ifdef CPU_COLDFIRE
|
||||
filters_cf.S
|
||||
ltp_cf.S
|
||||
#elif defined(CPU_ARM)
|
||||
#elif defined(CPU_ARM_CLASSIC)
|
||||
filters_arm4.S
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#define DISABLE_VBR
|
||||
|
||||
/* Make use of ARM4E assembly optimizations */
|
||||
#if defined(CPU_ARM)
|
||||
#if defined(CPU_ARM_CLASSIC)
|
||||
#if (ARM_ARCH < 5)
|
||||
#define ARM4_ASM
|
||||
#else
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
ttadec.c
|
||||
#ifdef CPU_ARM
|
||||
#if defined(CPU_ARM_CLASSIC)
|
||||
filter_arm.S
|
||||
#endif
|
||||
#ifdef CPU_COLDFIRE
|
||||
#elif defined(CPU_COLDFIRE)
|
||||
filter_coldfire.S
|
||||
#endif
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
///////// Filter Settings //////////
|
||||
static int flt_set[3] = {10, 9, 10};
|
||||
|
||||
#if defined(CPU_ARM) || defined(CPU_COLDFIRE)
|
||||
#if defined(CPU_ARM_CLASSIC) || defined(CPU_COLDFIRE)
|
||||
int hybrid_filter(fltst *fs, int *in); /* implements in filter_arm.S */
|
||||
|
||||
#else
|
||||
|
|
|
@ -7,8 +7,7 @@ words.c
|
|||
wputils.c
|
||||
#if defined(CPU_COLDFIRE)
|
||||
coldfire.S
|
||||
#endif
|
||||
#if defined(CPU_ARM)
|
||||
#elif defined(CPU_ARM_CLASSIC)
|
||||
arm.S
|
||||
arml.S
|
||||
#endif
|
||||
|
|
|
@ -304,7 +304,7 @@ int read_sample_rate (WavpackContext *wpc, WavpackMetadata *wpmd)
|
|||
|
||||
#if defined(CPU_COLDFIRE)
|
||||
extern void decorr_stereo_pass_cont_mcf5249 (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count);
|
||||
#elif defined(CPU_ARM)
|
||||
#elif defined(CPU_ARM_CLASSIC)
|
||||
extern void decorr_stereo_pass_cont_arm (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count);
|
||||
extern void decorr_stereo_pass_cont_arml (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count);
|
||||
#else
|
||||
|
@ -369,7 +369,7 @@ int32_t unpack_samples (WavpackContext *wpc, int32_t *buffer, uint32_t sample_co
|
|||
decorr_stereo_pass (dpp, buffer, 8);
|
||||
#if defined(CPU_COLDFIRE)
|
||||
decorr_stereo_pass_cont_mcf5249 (dpp, buffer + 16, sample_count - 8);
|
||||
#elif defined(CPU_ARM)
|
||||
#elif defined(CPU_ARM_CLASSIC)
|
||||
if (((flags & MAG_MASK) >> MAG_LSB) > 15)
|
||||
decorr_stereo_pass_cont_arml (dpp, buffer + 16, sample_count - 8);
|
||||
else
|
||||
|
@ -541,7 +541,7 @@ static void decorr_stereo_pass (struct decorr_pass *dpp, int32_t *buffer, int32_
|
|||
dpp->weight_B = weight_B;
|
||||
}
|
||||
|
||||
#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM))
|
||||
#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM_CLASSIC))
|
||||
|
||||
static void decorr_stereo_pass_cont (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count)
|
||||
{
|
||||
|
|
|
@ -172,7 +172,7 @@ void dsp_set_crossfeed_cross_params(long lf_gain, long hf_gain, long cutoff)
|
|||
dsp_get_output_frequency(dsp));
|
||||
}
|
||||
|
||||
#if !defined(CPU_COLDFIRE) && !defined(CPU_ARM)
|
||||
#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM)) || defined(CPU_ARM_MICRO)
|
||||
/* Apply the crossfade to the buffer in place */
|
||||
void crossfeed_process(struct dsp_proc_entry *this, struct dsp_buffer **buf_p)
|
||||
{
|
||||
|
@ -224,7 +224,7 @@ void crossfeed_process(struct dsp_proc_entry *this, struct dsp_buffer **buf_p)
|
|||
}
|
||||
#endif /* CPU */
|
||||
|
||||
#if !defined(CPU_COLDFIRE) && !defined(CPU_ARM)
|
||||
#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM)) || defined(CPU_ARM_MICRO)
|
||||
/**
|
||||
* Implementation of the "simple" passive crossfeed circuit by Jan Meier.
|
||||
* See also: http://www.meier-audio.homepage.t-online.de/passivefilter.htm
|
||||
|
|
|
@ -185,6 +185,7 @@ channel_mode_proc_karaoke:
|
|||
ldmpc regs=r4 @
|
||||
.size channel_mode_proc_karaoke, .-channel_mode_proc_karaoke
|
||||
|
||||
#ifndef CPU_ARM_MICRO
|
||||
/****************************************************************************
|
||||
* void crossfeed_process(struct dsp_proc_entry *this,
|
||||
* struct dsp_buffer **buf_p)
|
||||
|
@ -508,6 +509,7 @@ resample_hermite:
|
|||
str r2, [r3] @ dst->remcount = r2
|
||||
ldmpc regs=r4-r11 @ ... and we're out
|
||||
.size resample_hermite, .-resample_hermite
|
||||
#endif /* CPU_ARM_MICRO */
|
||||
|
||||
/****************************************************************************
|
||||
* void pga_process(struct dsp_proc_entry *this, struct dsp_buffer **buf_p)
|
||||
|
@ -558,6 +560,7 @@ pga_process:
|
|||
ldmpc regs=r4-r8
|
||||
.size pga_process, .-pga_process
|
||||
|
||||
#ifndef CPU_ARM_MICRO
|
||||
/****************************************************************************
|
||||
* void filter_process(struct dsp_filter *f, int32_t *buf[], int count,
|
||||
* unsigned int channels)
|
||||
|
@ -623,6 +626,7 @@ filter_process:
|
|||
add sp, sp, #16 @ compensate for temp storage
|
||||
ldmpc regs=r4-r11
|
||||
.size filter_process, .-filter_process
|
||||
#endif /* CPU_ARM_MICRO */
|
||||
|
||||
#if ARM_ARCH < 6
|
||||
/****************************************************************************
|
||||
|
|
|
@ -71,6 +71,7 @@ sample_output_mono:
|
|||
ldmfd sp!, { r4, pc } @
|
||||
.size sample_output_mono, .-sample_output_mono
|
||||
|
||||
#ifndef CPU_ARM_MICRO
|
||||
/****************************************************************************
|
||||
* void sample_output_stereo(struct sample_io_data *this,
|
||||
* struct dsp_buffer *src,
|
||||
|
@ -131,3 +132,4 @@ sample_output_stereo:
|
|||
@
|
||||
ldmfd sp!, { r4-r7, pc } @
|
||||
.size sample_output_stereo, .-sample_output_stereo
|
||||
#endif /* CPU_ARM_MICRO */
|
||||
|
|
|
@ -277,7 +277,7 @@ void filter_flush(struct dsp_filter *f)
|
|||
* form 1 was chosen because of better numerical properties for fixed point
|
||||
* implementations.
|
||||
*/
|
||||
#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM))
|
||||
#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM)) || defined(CPU_ARM_MICRO)
|
||||
void filter_process(struct dsp_filter *f, int32_t * const buf[], int count,
|
||||
unsigned int channels)
|
||||
{
|
||||
|
|
|
@ -63,7 +63,9 @@ void sample_output_mono(struct sample_io_data *this,
|
|||
}
|
||||
while (--count > 0);
|
||||
}
|
||||
#endif /* CPU */
|
||||
|
||||
#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM)) || defined(CPU_ARM_MICRO)
|
||||
/* write stereo internal format to output format */
|
||||
void sample_output_stereo(struct sample_io_data *this,
|
||||
struct dsp_buffer *src, struct dsp_buffer *dst)
|
||||
|
|
|
@ -97,7 +97,7 @@ static bool resample_new_delta(struct resample_data *data,
|
|||
return true;
|
||||
}
|
||||
|
||||
#if !defined(CPU_COLDFIRE) && !defined(CPU_ARM)
|
||||
#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM)) || defined(CPU_ARM_MICRO)
|
||||
int resample_hermite(struct resample_data *data, struct dsp_buffer *src,
|
||||
struct dsp_buffer *dst)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue