diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/core_alloc.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/firmware/core_alloc.c b/firmware/core_alloc.c index df1b4d3213..bf2f8e8298 100644 --- a/firmware/core_alloc.c +++ b/firmware/core_alloc.c @@ -8,16 +8,27 @@ /* not static so it can be discovered by core_get_data() */ struct buflib_context core_ctx; -/* defined in linker script */ #if (CONFIG_PLATFORM & PLATFORM_NATIVE) && !defined(__PCTOOL__) + #if defined(IPOD_VIDEO) && !defined(BOOTLOADER) +/* defined in linker script */ +extern unsigned char audiobuffer[]; extern unsigned char *audiobufend_lds[]; +/* pointer to end of audio buffer filled at runtime allocator_init */ unsigned char *audiobufend; -#else /* !IPOD_VIDEO */ -extern unsigned char audiobufend[]; -#endif +#elif defined(SANSA_E200) && defined(HAVE_BOOTLOADER_USB_MODE) +/* defined in linker script */ +extern unsigned char freebuffer[]; +extern unsigned char freebufferend[]; +/* map linker symbol to the audiobuffer in order to use core_alloc */ +unsigned char *audiobuffer = (unsigned char *)freebuffer; +unsigned char *audiobufend = (unsigned char *)freebufferend; +#else /* !IPOD_VIDEO, !SANSA_E200&&BOOTLOADERUSB */ /* defined in linker script */ extern unsigned char audiobuffer[]; +extern unsigned char audiobufend[]; +#endif + #else /* PLATFORM_HOSTED */ static unsigned char audiobuffer[((MEMORYSIZE)*1024-768)*1024]; unsigned char *audiobufend = audiobuffer + sizeof(audiobuffer); |