summaryrefslogtreecommitdiff
path: root/apps/codecs/libmad/mad_iram.h
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2007-07-29 16:40:11 +0000
committerDave Chapman <dave@dchapman.com>2007-07-29 16:40:11 +0000
commitf52c17851738b201ebafa45a055b748e9db12f4a (patch)
tree68dc83b03e460d0143cd17aac78f0f04d00b746d /apps/codecs/libmad/mad_iram.h
parent3d45dfb4bdb9c6cb75d1d25f012e9b2179a1f11b (diff)
Revert r14050 (apart from the non-related whitespace changes) and fix the S3C2440 (Gigabeat F/X) problems introduced by my r14041 commit in a slightly different way: Introduce a mad_iram.h file and centralise all IRAM-related decisions in there (similar to how Tremor does it). Now checks for CPU type (S3C2440) instead of target (TOSHIBA_GIGABEAT_F) and there is also a .ibss variable in syth_full_arm.S which shouldn't go in IRAM on S3C2440 targets. Closes FS#7500
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14057 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libmad/mad_iram.h')
-rw-r--r--apps/codecs/libmad/mad_iram.h52
1 files changed, 52 insertions, 0 deletions
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 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2007 Dave Chapman
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+/* Define how IRAM is used on the various targets. Note that this
+ file is included by both .c and .S files so must not contain any C
+ code.
+*/
+
+#ifndef _LIBMAD_IRAM_H
+#define _LIBMAD_IRAM_H
+
+#include "config.h"
+
+/* Code performs slower in IRAM on PP502x and there is no space in
+ mpegplayer on the PP5002. S3C2440 doesn't have any IRAM available for
+ codecs */
+#if defined(CPU_PP502x) || (CONFIG_CPU == PP5002 && defined(MPEGPLAYER)) || \
+ (CONFIG_CPU==S3C2440)
+#define ICODE_SECTION_MPA_ARM .text
+#define ICODE_ATTR_MPA_SYNTH
+#else
+#define ICODE_SECTION_MPA_ARM .icode
+#define ICODE_ATTR_MPA_SYNTH ICODE_ATTR
+#endif
+
+#if CONFIG_CPU == S3C2440
+#define IBSS_SECTION_MPA_ARM .bss
+#else
+#define IBSS_SECTION_MPA_ARM .ibss
+#endif
+
+#ifndef ICONST_ATTR_MPA_HUFFMAN
+#define ICONST_ATTR_MPA_HUFFMAN ICONST_ATTR
+#endif
+
+#endif /* MAD_IRAM_H */