diff options
| author | Tomasz Malesinski <tomal@rockbox.org> | 2006-11-26 18:31:41 +0000 |
|---|---|---|
| committer | Tomasz Malesinski <tomal@rockbox.org> | 2006-11-26 18:31:41 +0000 |
| commit | 80da8b141c4672ca4380d66094976b6342ed5071 (patch) | |
| tree | 631e9edd537ae9983524622a9e1ec82e24957280 /apps/codecs/codec_crt0.c | |
| parent | 8ef3c8a342d41c2aa5e5d8370fd4e89d4d8d937e (diff) | |
| download | rockbox-80da8b141c4672ca4380d66094976b6342ed5071.zip rockbox-80da8b141c4672ca4380d66094976b6342ed5071.tar.gz rockbox-80da8b141c4672ca4380d66094976b6342ed5071.tar.bz2 rockbox-80da8b141c4672ca4380d66094976b6342ed5071.tar.xz | |
FS#6357, patch 1: let iramcopy and bss share the same space in codecs and
plugins. Currently, in case of plugins using IRAM bss is cleared twice,
once in the loader, once in PLUGIN_IRAM_INIT. For codecs, bss is cleared only
during codec initialization. Also, removed double variables in codecs
storing a pointer to codec_api.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11606 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/codec_crt0.c')
| -rw-r--r-- | apps/codecs/codec_crt0.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/apps/codecs/codec_crt0.c b/apps/codecs/codec_crt0.c new file mode 100644 index 0000000..96dc862 --- /dev/null +++ b/apps/codecs/codec_crt0.c @@ -0,0 +1,46 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2006 Tomasz Malesinski + * + * 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. + * + ****************************************************************************/ + +#include "config.h" +#include "codeclib.h" + +struct codec_api *ci; + +extern unsigned char iramcopy[]; +extern unsigned char iramstart[]; +extern unsigned char iramend[]; +extern unsigned char iedata[]; +extern unsigned char iend[]; +extern unsigned char plugin_bss_start[]; +extern unsigned char plugin_end_addr[]; + +extern enum codec_status codec_main(void); + +enum codec_status codec_start(struct codec_api *api) +{ +#ifndef SIMULATOR +#ifdef USE_IRAM + api->memcpy(iramstart, iramcopy, iramend - iramstart); + api->memset(iedata, 0, iend - iedata); +#endif + api->memset(plugin_bss_start, 0, plugin_end_addr - plugin_bss_start); +#endif + ci = api; + return codec_main(); +} |