summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/plugin.lds4
-rw-r--r--firmware/export/config.h10
-rw-r--r--firmware/export/config/sansaclipplus.h2
-rw-r--r--firmware/export/config/sansaclipv2.h2
-rw-r--r--firmware/export/config/sansafuzev2.h2
-rw-r--r--firmware/target/arm/as3525/app.lds12
6 files changed, 18 insertions, 14 deletions
diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds
index 0ef27603e9..3a88867fa1 100644
--- a/apps/plugins/plugin.lds
+++ b/apps/plugins/plugin.lds
@@ -68,7 +68,7 @@ OUTPUT_FORMAT(elf32-littlemips)
#elif CONFIG_CPU==AS3525 || CONFIG_CPU==AS3525v2
#include "cpu.h"
#define DRAMORIG DRAM_ORIG
-#ifdef AMS_LOWMEM
+#if defined(AMS_LOWMEM) || (CONFIG_CPU == AS3525v2)
#define DRAMSIZE (DRAM_SIZE - PLUGIN_BUFFER_SIZE - STUBOFFSET - TTB_SIZE)
#else
#define DRAMSIZE (DRAM_SIZE - PLUGIN_BUFFER_SIZE - STUBOFFSET - CODEC_SIZE - TTB_SIZE)
@@ -131,7 +131,7 @@ OUTPUT_FORMAT(elf32-littlemips)
#define IRAMSIZE 0
#elif CONFIG_CPU==AS3525 || CONFIG_CPU==AS3525v2
-#ifdef AMS_LOWMEM
+#if defined(AMS_LOWMEM) || (CONFIG_CPU == AS3525v2)
#define IRAMSIZE 0 /* simulates no IRAM since codec is already entirely in IRAM */
#define CODEC_ORIGIN (IRAM_ORIG + IRAM_SIZE - CODEC_SIZE)
#define PLUGIN_ORIGIN (DRAM_ORIG + DRAMSIZE)
diff --git a/firmware/export/config.h b/firmware/export/config.h
index 5bff51fbef..04bf15faaf 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -719,8 +719,8 @@ Lyre prototype 1 */
defined(CPU_COLDFIRE) || /* Coldfire: core, plugins, codecs */ \
defined(CPU_PP) || /* PortalPlayer: core, plugins, codecs */ \
(CONFIG_CPU == AS3525 && MEMORYSIZE > 2) || /* AS3525 +2MB: core, plugins, codecs */ \
- (CONFIG_CPU == AS3525v2) || /* AS3525v2: core, plugins, codecs */ \
- (CONFIG_CPU == AS3525 && MEMORYSIZE <= 2 && !defined(PLUGIN) && !defined(CODEC)) || /* AS3525 2MB:core only */ \
+ (CONFIG_CPU == AS3525 && MEMORYSIZE <= 2 && !defined(PLUGIN) && !defined(CODEC)) || /* AS3525 2MB: core only */ \
+ (CONFIG_CPU == AS3525v2 && !defined(PLUGIN) && !defined(CODEC)) || /* AS3525v2: core only */ \
(CONFIG_CPU == PNX0101) || \
defined(CPU_S5L870X)) || /* Samsung S5L8700: core, plugins, codecs */ \
(CONFIG_CPU == JZ4732 && !defined(PLUGIN) && !defined(CODEC)) /* Jz4740: core only */
@@ -729,7 +729,8 @@ Lyre prototype 1 */
#define IDATA_ATTR __attribute__ ((section(".idata")))
#define IBSS_ATTR __attribute__ ((section(".ibss")))
#define USE_IRAM
-#if CONFIG_CPU != SH7034 && (CONFIG_CPU != AS3525 || MEMORYSIZE > 2) && CONFIG_CPU != JZ4732
+#if CONFIG_CPU != SH7034 && (CONFIG_CPU != AS3525 || MEMORYSIZE > 2) \
+ && CONFIG_CPU != JZ4732
#define PLUGIN_USE_IRAM
#endif
#if defined(CPU_ARM)
@@ -747,7 +748,8 @@ Lyre prototype 1 */
#define IBSS_ATTR
#define STATICIRAM static
#endif
-#if (defined(CPU_PP) || (CONFIG_CPU == AS3525)) && !defined(SIMULATOR) && !defined(BOOTLOADER)
+#if (defined(CPU_PP) || (CONFIG_CPU == AS3525)) \
+ && !defined(SIMULATOR) && !defined(BOOTLOADER)
/* Functions that have INIT_ATTR attached are NOT guaranteed to survive after
* root_menu() has been called. Their code may be overwritten by other data or
* code in order to save RAM, and references to them might point into
diff --git a/firmware/export/config/sansaclipplus.h b/firmware/export/config/sansaclipplus.h
index c5e6aa5c34..ed8c7bb685 100644
--- a/firmware/export/config/sansaclipplus.h
+++ b/firmware/export/config/sansaclipplus.h
@@ -112,7 +112,7 @@
#define HAVE_FAT16SUPPORT
/* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x100000
+#define CODEC_SIZE (0x100000-0x8000)
/* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config/sansaclipv2.h b/firmware/export/config/sansaclipv2.h
index 8ac90ddcde..876d95ac22 100644
--- a/firmware/export/config/sansaclipv2.h
+++ b/firmware/export/config/sansaclipv2.h
@@ -108,7 +108,7 @@
#define HAVE_FAT16SUPPORT
/* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x100000
+#define CODEC_SIZE (0x100000-0x8000)
/* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config/sansafuzev2.h b/firmware/export/config/sansafuzev2.h
index 73ac7ce17a..71d76f4725 100644
--- a/firmware/export/config/sansafuzev2.h
+++ b/firmware/export/config/sansafuzev2.h
@@ -100,7 +100,7 @@
#define HAVE_FAT16SUPPORT
/* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x100000
+#define CODEC_SIZE (0x100000-0x8000)
/* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/target/arm/as3525/app.lds b/firmware/target/arm/as3525/app.lds
index 56a4b20fa6..f9d070e60d 100644
--- a/firmware/target/arm/as3525/app.lds
+++ b/firmware/target/arm/as3525/app.lds
@@ -23,8 +23,10 @@ STARTUP(target/arm/crt0.o)
/* End of the audio buffer, where the codec buffer starts */
#define ENDAUDIOADDR (DRAMORIG + DRAMSIZE)
+#define CODEC_BUFFER_FILLS_IRAM defined(AMS_LOWMEM) || (CONFIG_CPU == AS3525v2)
-#ifdef AMS_LOWMEM
+#if CODEC_BUFFER_FILLS_IRAM
+/* Entire codec buffer in IRAM */
#define DRAMSIZE (DRAM_SIZE - STUBOFFSET - PLUGINSIZE - TTB_SIZE)
#define CODECORIG (IRAMORIG + (IRAM_SIZE - CODEC_SIZE))
#define IRAMSIZE (IRAM_SIZE - CODEC_SIZE)
@@ -36,7 +38,7 @@ STARTUP(target/arm/crt0.o)
/* Where the codec buffer ends, and the plugin buffer starts */
-#ifdef AMS_LOWMEM
+#if CODEC_BUFFER_FILLS_IRAM
#define ENDADDR (ENDAUDIOADDR)
#else
#define ENDADDR (ENDAUDIOADDR + CODECSIZE)
@@ -44,7 +46,7 @@ STARTUP(target/arm/crt0.o)
MEMORY
{
-#ifdef AMS_LOWMEM
+#if CODEC_BUFFER_FILLS_IRAM
CODEC_IRAM : ORIGIN = CODECORIG, LENGTH = CODEC_SIZE
#endif
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
@@ -110,7 +112,7 @@ SECTIONS
_iend = .;
} > IRAM
- .init CODECORIG :
+ .init ENDADDR :
{
. = ALIGN(4);
_initstart = .;
@@ -154,7 +156,7 @@ SECTIONS
{
codecbuf = .;
_codecbuf = .;
-#ifdef AMS_LOWMEM
+#if CODEC_BUFFER_FILLS_IRAM
} > CODEC_IRAM
#else
} > DRAM