summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-05-16 11:08:40 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-05-29 11:06:08 +0200
commite071c18322b9e01f95fced40fe0242542e1b13e1 (patch)
tree28797e5dd32f89edf2e21e2065c604eb7eefa545 /cpukit
parentsmp: Use _CPU_Fatal_halt() (diff)
downloadrtems-e071c18322b9e01f95fced40fe0242542e1b13e1.tar.bz2
smp: Move secondary CPU initialization request
Do not assume that the scheduler selects the main processor for the initialization thread.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/sapi/src/exinit.c4
-rw-r--r--cpukit/score/src/threadhandler.c6
2 files changed, 4 insertions, 6 deletions
diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c
index 3fb27fdfa0..4ee24710b3 100644
--- a/cpukit/sapi/src/exinit.c
+++ b/cpukit/sapi/src/exinit.c
@@ -223,6 +223,10 @@ void rtems_initialize_start_multitasking(void)
_System_state_Set( SYSTEM_STATE_BEGIN_MULTITASKING );
+#ifdef RTEMS_SMP
+ _SMP_Request_other_cores_to_perform_first_context_switch();
+#endif
+
_Thread_Start_multitasking();
/*******************************************************************
diff --git a/cpukit/score/src/threadhandler.c b/cpukit/score/src/threadhandler.c
index 6367c451f4..e4f124c052 100644
--- a/cpukit/score/src/threadhandler.c
+++ b/cpukit/score/src/threadhandler.c
@@ -126,12 +126,6 @@ void _Thread_Handler( void )
*/
if (doCons) /* && (volatile void *)_init) */ {
INIT_NAME ();
-
- #if defined(RTEMS_SMP)
- _Thread_Disable_dispatch();
- _SMP_Request_other_cores_to_perform_first_context_switch();
- _Thread_Enable_dispatch();
- #endif
}
#endif