diff options
Diffstat (limited to 'apps/codecs')
-rw-r--r-- | apps/codecs/libmad/dct32_arm.S | 10 | ||||
-rw-r--r-- | apps/codecs/libmad/global.h | 6 | ||||
-rw-r--r-- | apps/codecs/libmad/mad_iram.h | 52 | ||||
-rw-r--r-- | apps/codecs/libmad/synth.c | 6 | ||||
-rw-r--r-- | apps/codecs/libmad/synth_full_arm.S | 12 |
5 files changed, 60 insertions, 26 deletions
diff --git a/apps/codecs/libmad/dct32_arm.S b/apps/codecs/libmad/dct32_arm.S index 8ead5af899..5a1782a651 100644 --- a/apps/codecs/libmad/dct32_arm.S +++ b/apps/codecs/libmad/dct32_arm.S | |||
@@ -17,17 +17,11 @@ | |||
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | 19 | ||
20 | #include "config.h" | 20 | #include "mad_iram.h" |
21 | 21 | ||
22 | .global dct32 | 22 | .global dct32 |
23 | 23 | ||
24 | /* This performs slower in IRAM on PP502x and there is no space in | 24 | .section ICODE_SECTION_MPA_ARM,"ax",%progbits |
25 | mpegplayer on the PP5002 */ | ||
26 | #if defined(CPU_PP502x) || (CONFIG_CPU == PP5002 && defined(MPEGPLAYER)) || defined(TOSHIBA_GIGABEAT_F) | ||
27 | .section .text,"ax",%progbits | ||
28 | #else | ||
29 | .section .icode,"ax",%progbits | ||
30 | #endif | ||
31 | 25 | ||
32 | dct32: | 26 | dct32: |
33 | stmdb r13!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} | 27 | stmdb r13!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} |
diff --git a/apps/codecs/libmad/global.h b/apps/codecs/libmad/global.h index 38e4aade35..1dad4d5583 100644 --- a/apps/codecs/libmad/global.h +++ b/apps/codecs/libmad/global.h | |||
@@ -24,6 +24,8 @@ | |||
24 | # ifndef LIBMAD_GLOBAL_H | 24 | # ifndef LIBMAD_GLOBAL_H |
25 | # define LIBMAD_GLOBAL_H | 25 | # define LIBMAD_GLOBAL_H |
26 | 26 | ||
27 | #include "mad_iram.h" | ||
28 | |||
27 | #if defined(CPU_COLDFIRE) | 29 | #if defined(CPU_COLDFIRE) |
28 | #define FPM_COLDFIRE_EMAC | 30 | #define FPM_COLDFIRE_EMAC |
29 | #elif defined(CPU_ARM) | 31 | #elif defined(CPU_ARM) |
@@ -66,8 +68,4 @@ | |||
66 | # endif | 68 | # endif |
67 | # endif | 69 | # endif |
68 | 70 | ||
69 | #ifndef ICONST_ATTR_MPA_HUFFMAN | ||
70 | #define ICONST_ATTR_MPA_HUFFMAN ICONST_ATTR | ||
71 | #endif | ||
72 | |||
73 | # endif | 71 | # endif |
diff --git a/apps/codecs/libmad/mad_iram.h b/apps/codecs/libmad/mad_iram.h new file mode 100644 index 0000000000..b4dadd8a23 --- /dev/null +++ b/apps/codecs/libmad/mad_iram.h | |||
@@ -0,0 +1,52 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2007 Dave Chapman | ||
11 | * | ||
12 | * All files in this archive are subject to the GNU General Public License. | ||
13 | * See the file COPYING in the source tree root for full license agreement. | ||
14 | * | ||
15 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
16 | * KIND, either express or implied. | ||
17 | * | ||
18 | ****************************************************************************/ | ||
19 | |||
20 | /* Define how IRAM is used on the various targets. Note that this | ||
21 | file is included by both .c and .S files so must not contain any C | ||
22 | code. | ||
23 | */ | ||
24 | |||
25 | #ifndef _LIBMAD_IRAM_H | ||
26 | #define _LIBMAD_IRAM_H | ||
27 | |||
28 | #include "config.h" | ||
29 | |||
30 | /* Code performs slower in IRAM on PP502x and there is no space in | ||
31 | mpegplayer on the PP5002. S3C2440 doesn't have any IRAM available for | ||
32 | codecs */ | ||
33 | #if defined(CPU_PP502x) || (CONFIG_CPU == PP5002 && defined(MPEGPLAYER)) || \ | ||
34 | (CONFIG_CPU==S3C2440) | ||
35 | #define ICODE_SECTION_MPA_ARM .text | ||
36 | #define ICODE_ATTR_MPA_SYNTH | ||
37 | #else | ||
38 | #define ICODE_SECTION_MPA_ARM .icode | ||
39 | #define ICODE_ATTR_MPA_SYNTH ICODE_ATTR | ||
40 | #endif | ||
41 | |||
42 | #if CONFIG_CPU == S3C2440 | ||
43 | #define IBSS_SECTION_MPA_ARM .bss | ||
44 | #else | ||
45 | #define IBSS_SECTION_MPA_ARM .ibss | ||
46 | #endif | ||
47 | |||
48 | #ifndef ICONST_ATTR_MPA_HUFFMAN | ||
49 | #define ICONST_ATTR_MPA_HUFFMAN ICONST_ATTR | ||
50 | #endif | ||
51 | |||
52 | #endif /* MAD_IRAM_H */ | ||
diff --git a/apps/codecs/libmad/synth.c b/apps/codecs/libmad/synth.c index 00e00ad5ff..6f5d2ec975 100644 --- a/apps/codecs/libmad/synth.c +++ b/apps/codecs/libmad/synth.c | |||
@@ -1042,13 +1042,9 @@ void synth_full2(mad_fixed_t *pcm, mad_fixed_t (*fo)[8], mad_fixed_t (*fe)[8], | |||
1042 | mad_fixed_t const (*D0ptr)[32], | 1042 | mad_fixed_t const (*D0ptr)[32], |
1043 | mad_fixed_t const (*D1ptr)[32]); | 1043 | mad_fixed_t const (*D1ptr)[32]); |
1044 | 1044 | ||
1045 | /* This performs slower in IRAM on PP502x and there is no space in | ||
1046 | mpegplayer on the PP5002 */ | ||
1047 | #if !defined(CPU_PP502x) && !(CONFIG_CPU == PP5002 && defined(MPEGPLAYER)) && !defined(TOSHIBA_GIGABEAT_F) | ||
1048 | static | 1045 | static |
1049 | void synth_full(struct mad_synth *synth, struct mad_frame const *frame, | 1046 | void synth_full(struct mad_synth *synth, struct mad_frame const *frame, |
1050 | unsigned int nch, unsigned int ns) ICODE_ATTR; | 1047 | unsigned int nch, unsigned int ns) ICODE_ATTR_MPA_SYNTH; |
1051 | #endif | ||
1052 | static | 1048 | static |
1053 | void synth_full(struct mad_synth *synth, struct mad_frame const *frame, | 1049 | void synth_full(struct mad_synth *synth, struct mad_frame const *frame, |
1054 | unsigned int nch, unsigned int ns) | 1050 | unsigned int nch, unsigned int ns) |
diff --git a/apps/codecs/libmad/synth_full_arm.S b/apps/codecs/libmad/synth_full_arm.S index 3e81f77ec9..47560a4079 100644 --- a/apps/codecs/libmad/synth_full_arm.S +++ b/apps/codecs/libmad/synth_full_arm.S | |||
@@ -17,15 +17,9 @@ | |||
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | 19 | ||
20 | #include "config.h" | 20 | #include "mad_iram.h" |
21 | 21 | ||
22 | /* This performs slower in IRAM on PP502x and there is no space in | 22 | .section ICODE_SECTION_MPA_ARM,"ax",%progbits |
23 | mpegplayer on the PP5002 */ | ||
24 | #if defined(CPU_PP502x) || (CONFIG_CPU == PP5002 && defined(MPEGPLAYER)) || defined(TOSHIBA_GIGABEAT_F) | ||
25 | .section .text,"ax",%progbits | ||
26 | #else | ||
27 | .section .icode,"ax",%progbits | ||
28 | #endif | ||
29 | 23 | ||
30 | .global synth_full1 | 24 | .global synth_full1 |
31 | .global synth_full2 | 25 | .global synth_full2 |
@@ -338,6 +332,6 @@ III_overlap: | |||
338 | stmia r1!, {r4, r5, r6, r7, r8, lr} | 332 | stmia r1!, {r4, r5, r6, r7, r8, lr} |
339 | ldmia sp!, {r4, r5, r6, r7, r8, pc} | 333 | ldmia sp!, {r4, r5, r6, r7, r8, pc} |
340 | 334 | ||
341 | .section .ibss,"aw",%nobits | 335 | .section IBSS_SECTION_MPA_ARM,"aw",%nobits |
342 | synth_full_sp: | 336 | synth_full_sp: |
343 | .space 4 | 337 | .space 4 |