summaryrefslogtreecommitdiff
path: root/firmware/thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/thread.c')
-rw-r--r--firmware/thread.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/firmware/thread.c b/firmware/thread.c
index 281801418f..d8282111b5 100644
--- a/firmware/thread.c
+++ b/firmware/thread.c
@@ -78,6 +78,13 @@ void switch_thread(void) ICODE_ATTR;
78static inline void store_context(void* addr) __attribute__ ((always_inline)); 78static inline void store_context(void* addr) __attribute__ ((always_inline));
79static inline void load_context(const void* addr) __attribute__ ((always_inline)); 79static inline void load_context(const void* addr) __attribute__ ((always_inline));
80 80
81#ifdef RB_PROFILE
82#include <profile.h>
83void profile_thread(void) {
84 profstart(current_thread);
85}
86#endif
87
81#if defined(CPU_ARM) 88#if defined(CPU_ARM)
82/*--------------------------------------------------------------------------- 89/*---------------------------------------------------------------------------
83 * Store non-volatile context. 90 * Store non-volatile context.
@@ -245,6 +252,9 @@ static inline void load_context(const void* addr)
245 */ 252 */
246void switch_thread(void) 253void switch_thread(void)
247{ 254{
255#ifdef RB_PROFILE
256 profile_thread_stopped(current_thread);
257#endif
248 int current; 258 int current;
249 unsigned int *stackptr; 259 unsigned int *stackptr;
250 260
@@ -284,6 +294,9 @@ void switch_thread(void)
284 294
285 current_thread = current; 295 current_thread = current;
286 load_context(&thread_contexts[current]); 296 load_context(&thread_contexts[current]);
297#ifdef RB_PROFILE
298 profile_thread_started(current_thread);
299#endif
287} 300}
288 301
289void sleep_thread(void) 302void sleep_thread(void)