diff options
| author | Nils Wallménius <nils@rockbox.org> | 2010-12-27 10:22:39 +0000 |
|---|---|---|
| committer | Nils Wallménius <nils@rockbox.org> | 2010-12-27 10:22:39 +0000 |
| commit | b8bf7cb5edfbff1b440bb749d55c353a9fa081f7 (patch) | |
| tree | 1e622b9f1dd58c5c806a318527fd3416a50bb823 | |
| parent | 7b4eb44395bced7073e37d0b8b0d83fb2f518482 (diff) | |
| download | rockbox-b8bf7cb5edfbff1b440bb749d55c353a9fa081f7.zip rockbox-b8bf7cb5edfbff1b440bb749d55c353a9fa081f7.tar.gz rockbox-b8bf7cb5edfbff1b440bb749d55c353a9fa081f7.tar.bz2 rockbox-b8bf7cb5edfbff1b440bb749d55c353a9fa081f7.tar.xz | |
Move codfire inline asm into cpu specific file.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28910 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/target/coldfire/thread-coldfire.c | 14 | ||||
| -rw-r--r-- | firmware/thread.c | 9 |
2 files changed, 15 insertions, 8 deletions
diff --git a/firmware/target/coldfire/thread-coldfire.c b/firmware/target/coldfire/thread-coldfire.c index f151a97..c94580a 100644 --- a/firmware/target/coldfire/thread-coldfire.c +++ b/firmware/target/coldfire/thread-coldfire.c @@ -95,3 +95,17 @@ static inline void core_sleep(void) /* Supervisor mode, interrupts enabled upon wakeup */ asm volatile ("stop #0x2000"); }; + +/*--------------------------------------------------------------------------- + * Call this from asm to make sure the sp is pointing to the + * correct place before the context is saved. + *--------------------------------------------------------------------------- + */ +static inline void _profile_thread_stopped(int current_thread) +{ + asm volatile ("move.l %[id], -(%%sp)\n\t" + "jsr profile_thread_stopped\n\t" + "addq.l #4, %%sp\n\t" + :: [id] "r" (current_thread) + : "cc", "memory"); +} diff --git a/firmware/thread.c b/firmware/thread.c index 91fe81b..6cd4d33 100644 --- a/firmware/thread.c +++ b/firmware/thread.c @@ -1150,14 +1150,7 @@ void switch_thread(void) #ifdef RB_PROFILE #ifdef CPU_COLDFIRE - /* Call this from asm to make sure the sp is pointing to the - correct place before the context is saved */ - uint16_t id = thread->id & THREAD_ID_SLOT_MASK; - asm volatile ("move.l %[id], -(%%sp)\n\t" - "jsr profile_thread_stopped\n\t" - "addq.l #4, %%sp\n\t" - :: [id] "r" (id) - : "cc", "memory"); + _profile_thread_stopped(thread->id & THREAD_ID_SLOT_MASK); #else profile_thread_stopped(thread->id & THREAD_ID_SLOT_MASK); #endif |