summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2011-09-24 12:45:55 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2011-09-24 12:45:55 +0000
commit86c847c1da3f5d802a091711724a4dcbb64db2d2 (patch)
treecead47287da32ab9dbd660c4e7939100c75f3212 /cpukit/score
parent2011-09-22 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-86c847c1da3f5d802a091711724a4dcbb64db2d2.tar.bz2
2011-09-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
PR 1921/cpukit * score/inline/rtems/score/thread.inl, score/src/threadstartmultitasking.c: Allow CPU port to provide optional multitasking start and stop.
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/inline/rtems/score/thread.inl4
-rw-r--r--cpukit/score/src/threadstartmultitasking.c4
2 files changed, 8 insertions, 0 deletions
diff --git a/cpukit/score/inline/rtems/score/thread.inl b/cpukit/score/inline/rtems/score/thread.inl
index ba13bda908..af824177bb 100644
--- a/cpukit/score/inline/rtems/score/thread.inl
+++ b/cpukit/score/inline/rtems/score/thread.inl
@@ -111,6 +111,9 @@
RTEMS_INLINE_ROUTINE void _Thread_Stop_multitasking( void )
{
+#if defined(_CPU_Stop_multitasking)
+ _CPU_Stop_multitasking( &_Thread_BSP_context );
+#else
/*
* This may look a bit of an odd but _Context_Restart_self is just
* a very careful restore of a specific context which ensures that
@@ -120,6 +123,7 @@ RTEMS_INLINE_ROUTINE void _Thread_Stop_multitasking( void )
* saving the context.
*/
_Context_Restart_self( &_Thread_BSP_context );
+#endif
/***************************************************************
***************************************************************
diff --git a/cpukit/score/src/threadstartmultitasking.c b/cpukit/score/src/threadstartmultitasking.c
index dd7275aab7..54b7d83e3b 100644
--- a/cpukit/score/src/threadstartmultitasking.c
+++ b/cpukit/score/src/threadstartmultitasking.c
@@ -86,5 +86,9 @@ void _Thread_Start_multitasking( void )
_Context_Restore_fp( &_Thread_Heir->fp_context );
#endif
+#if defined(_CPU_Start_multitasking)
+ _CPU_Start_multitasking( &_Thread_BSP_context, &_Thread_Heir->Registers );
+#else
_Context_Switch( &_Thread_BSP_context, &_Thread_Heir->Registers );
+#endif
}