From c940811ade7d99a0e0d414df7c6509672413684a Mon Sep 17 00:00:00 2001 From: Andree Buschmann Date: Tue, 30 Aug 2011 12:35:12 +0000 Subject: Introduce CPU dependent IRAM configuration for libgme. Use ICODE_ATTR for an emu2413-function to speed up PP5022 by up to 6%. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30379 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/libgme/blargg_common.h | 15 +++++++++++++++ apps/codecs/libgme/emu2413.c | 2 ++ apps/codecs/libgme/emu2413.h | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) (limited to 'apps/codecs') diff --git a/apps/codecs/libgme/blargg_common.h b/apps/codecs/libgme/blargg_common.h index 74125bb808..65ae76ae99 100644 --- a/apps/codecs/libgme/blargg_common.h +++ b/apps/codecs/libgme/blargg_common.h @@ -25,6 +25,21 @@ #define FP_ONE_GAIN (1LL << 24) #define FP_ONE_VOLUME FP_ONE_GAIN +// IRAM configuration +#if (CONFIG_CPU == MCF5250) +#define EMU2413_CALC_ICODE + +#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) +#define EMU2413_CALC_ICODE ICODE_ATTR + +#elif defined(CPU_S5L870X) +#define EMU2413_CALC_ICODE + +#else +#define EMU2413_CALC_ICODE + +#endif + // BLARGG_RESTRICT: equivalent to C99's restrict, where supported #if __GNUC__ >= 3 || _MSC_VER >= 1100 #define BLARGG_RESTRICT __restrict diff --git a/apps/codecs/libgme/emu2413.c b/apps/codecs/libgme/emu2413.c index 48f32d8e57..44782c3dc1 100644 --- a/apps/codecs/libgme/emu2413.c +++ b/apps/codecs/libgme/emu2413.c @@ -1422,6 +1422,8 @@ calc_slot_hat (OPLL_SLOT *slot, e_int32 pgout_cym, e_uint32 noise) return DB2LIN_TABLE[dbout + slot->egout]; } +static e_int16 +calc (OPLL * opll) EMU2413_CALC_ICODE; static e_int16 calc (OPLL * opll) { diff --git a/apps/codecs/libgme/emu2413.h b/apps/codecs/libgme/emu2413.h index 89d6e4dbd5..6a19b102a1 100644 --- a/apps/codecs/libgme/emu2413.h +++ b/apps/codecs/libgme/emu2413.h @@ -137,7 +137,7 @@ EMU2413_API void OPLL_writeReg(OPLL *, e_uint32 reg, e_uint32 val); EMU2413_API e_uint32 OPLL_read(OPLL *, e_uint32 port); /* Synthsize */ -EMU2413_API e_int16 OPLL_calc(OPLL *) ; +EMU2413_API e_int16 OPLL_calc(OPLL *) EMU2413_CALC_ICODE; EMU2413_API void OPLL_calc_stereo(OPLL *, e_int32 out[2]) ; EMU2413_API e_int16 *OPLL_update_buffer(OPLL *, e_uint32 length) ; -- cgit v1.2.3