summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-02-16 11:55:03 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-02-17 09:41:27 +0100
commitc34f94f72df4e88e1c4ea7d7f97f14a9ec6296ef (patch)
treebbd8bc6206b6a23709b39a5b0c0d951512b3b33c /cpukit/score/cpu
parentIMFS: Implement variable length node names (diff)
downloadrtems-c34f94f72df4e88e1c4ea7d7f97f14a9ec6296ef.tar.bz2
score: Add _CPU_SMP_Prepare_start_multitasking()
Update #2268.
Diffstat (limited to 'cpukit/score/cpu')
-rw-r--r--cpukit/score/cpu/arm/rtems/score/cpu.h2
-rw-r--r--cpukit/score/cpu/i386/rtems/score/cpu.h2
-rw-r--r--cpukit/score/cpu/no_cpu/rtems/score/cpu.h12
-rw-r--r--cpukit/score/cpu/powerpc/rtems/score/cpu.h2
-rw-r--r--cpukit/score/cpu/sparc/rtems/score/cpu.h8
5 files changed, 20 insertions, 6 deletions
diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h
index 869ab1cb27..f0573c2372 100644
--- a/cpukit/score/cpu/arm/rtems/score/cpu.h
+++ b/cpukit/score/cpu/arm/rtems/score/cpu.h
@@ -504,6 +504,8 @@ void _CPU_Context_validate( uintptr_t pattern );
void _CPU_SMP_Finalize_initialization( uint32_t cpu_count );
+ void _CPU_SMP_Prepare_start_multitasking( void );
+
static inline uint32_t _CPU_SMP_Get_current_processor( void )
{
uint32_t mpidr;
diff --git a/cpukit/score/cpu/i386/rtems/score/cpu.h b/cpukit/score/cpu/i386/rtems/score/cpu.h
index 13d31a41ae..5639fdf1dd 100644
--- a/cpukit/score/cpu/i386/rtems/score/cpu.h
+++ b/cpukit/score/cpu/i386/rtems/score/cpu.h
@@ -494,6 +494,8 @@ uint32_t _CPU_ISR_Get_level( void );
void _CPU_SMP_Finalize_initialization( uint32_t cpu_count );
+ void _CPU_SMP_Prepare_start_multitasking( void );
+
uint32_t _CPU_SMP_Get_current_processor( void );
void _CPU_SMP_Send_interrupt( uint32_t target_processor_index );
diff --git a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
index 0a0cc415ca..c4e838b51a 100644
--- a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
+++ b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
@@ -1574,6 +1574,18 @@ register struct Per_CPU_Control *_CPU_Per_CPU_current asm( "rX" );
void _CPU_SMP_Finalize_initialization( uint32_t cpu_count );
/**
+ * @brief Prepares a CPU to start multitasking in terms of SMP.
+ *
+ * This function is invoked on all processors requested by the application
+ * during system initialization.
+ *
+ * This function will be called after all processors requested by the
+ * application have been started right before the context switch to the first
+ * thread takes place.
+ */
+ void _CPU_SMP_Prepare_start_multitasking( void );
+
+ /**
* @brief Returns the index of the current processor.
*
* An architecture specific method must be used to obtain the index of the
diff --git a/cpukit/score/cpu/powerpc/rtems/score/cpu.h b/cpukit/score/cpu/powerpc/rtems/score/cpu.h
index c305c77d1b..6250c5639f 100644
--- a/cpukit/score/cpu/powerpc/rtems/score/cpu.h
+++ b/cpukit/score/cpu/powerpc/rtems/score/cpu.h
@@ -1123,6 +1123,8 @@ void _CPU_Context_validate( uintptr_t pattern );
void _CPU_SMP_Finalize_initialization( uint32_t cpu_count );
+ void _CPU_SMP_Prepare_start_multitasking( void );
+
static inline uint32_t _CPU_SMP_Get_current_processor( void )
{
uint32_t pir;
diff --git a/cpukit/score/cpu/sparc/rtems/score/cpu.h b/cpukit/score/cpu/sparc/rtems/score/cpu.h
index 6ce065cfe4..c3348f0652 100644
--- a/cpukit/score/cpu/sparc/rtems/score/cpu.h
+++ b/cpukit/score/cpu/sparc/rtems/score/cpu.h
@@ -1186,6 +1186,8 @@ register struct Per_CPU_Control *_SPARC_Per_CPU_current __asm__( "g6" );
void _CPU_SMP_Finalize_initialization( uint32_t cpu_count );
+ void _CPU_SMP_Prepare_start_multitasking( void );
+
#if defined(__leon__) && !defined(RTEMS_PARAVIRT)
static inline uint32_t _CPU_SMP_Get_current_processor( void )
{
@@ -1197,12 +1199,6 @@ register struct Per_CPU_Control *_SPARC_Per_CPU_current __asm__( "g6" );
void _CPU_SMP_Send_interrupt( uint32_t target_processor_index );
- #if defined(__leon__)
- void _LEON3_Start_multitasking( Context_Control *heir )
- RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
- #define _CPU_Start_multitasking _LEON3_Start_multitasking
- #endif
-
static inline void _CPU_SMP_Processor_event_broadcast( void )
{
__asm__ volatile ( "" : : : "memory" );