Fix profiling compilation for non-m68k targets

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8967 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Brandon Low 2006-03-09 01:37:52 +00:00
parent ca9e8b6cf5
commit 9c2b203025
3 changed files with 12 additions and 1 deletions

View file

@ -145,8 +145,12 @@ void qsort(void *base, size_t nmemb, size_t size,
#ifdef RB_PROFILE
void __cyg_profile_func_enter(void *this_fn, void *call_site) {
#ifdef CPU_COLDFIRE
(void)call_site;
local_rb->profile_func_enter(this_fn, __builtin_return_address(1));
#else
local_rb->profile_func_enter(this_fn, call_site);
#endif
}
void __cyg_profile_func_exit(void *this_fn, void *call_site) {

View file

@ -29,8 +29,12 @@ void profile_init(struct plugin_api* pa)
}
void __cyg_profile_func_enter(void *this_fn, void *call_site) {
#ifdef CPU_COLDFIRE
(void)call_site;
local_rb->profile_func_enter(this_fn, __builtin_return_address(1));
#else
local_rb->profile_func_enter(this_fn, call_site);
#endif
}
void __cyg_profile_func_exit(void *this_fn, void *call_site) {

View file

@ -76,10 +76,14 @@ static void profile_timer_unregister(void);
static void write_function_recursive(int fd, struct pfd_struct *pfd, int depth);
/* Be careful to use the right one for the size of your variable */
#ifdef CPU_COLDFIRE
#define ADDQI_L(_var,_value) \
asm ("addq.l %[value],%[var];" \
: [var] "+g" (_var) \
: [value] "I" (_value) )
#else
#define ADDQI_L(var, value) var += value
#endif
void profile_thread_stopped(int current_thread) {
if (current_thread == profiling_thread) {
@ -227,7 +231,6 @@ void profile_func_enter(void *self_pc, void *from_pc) {
if (profiling) {
return;
}
/* this is equivalent to 'profiling = PROF_BUSY;' but it's faster */
profiling = PROF_BUSY;
/* A check that the PC is in the code range here wouldn't hurt, but this is
* logically guaranteed to be a valid address unless the constants are