diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-02-17 15:02:54 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-02-19 09:59:41 +0100 |
commit | 911b1d228bd3424a4d695f8c41d71e2341873077 (patch) | |
tree | ca507a970f584b46a9e3227726e9808f034cc30d | |
parent | score: Add and use <rtems/score/smpimpl.h> (diff) | |
download | rtems-911b1d228bd3424a4d695f8c41d71e2341873077.tar.bz2 |
score: Rename rtems_smp_secondary_cpu_initialize()
Rename rtems_smp_secondary_cpu_initialize() into
_SMP_Start_multitasking_on_secondary_processor(). Move declaration to
<rtems/score/smpimpl.h>.
-rw-r--r-- | c/src/lib/libbsp/arm/shared/include/arm-a9mpcore-start.h | 3 | ||||
-rw-r--r-- | c/src/lib/libbsp/i386/shared/smp/smp-imps.c | 3 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/startup/smp.c | 3 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc/leon3/smp/smp_leon3.c | 3 | ||||
-rw-r--r-- | cpukit/score/include/rtems/bspsmp.h | 25 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/smpimpl.h | 27 | ||||
-rw-r--r-- | cpukit/score/src/smp.c | 2 |
7 files changed, 36 insertions, 30 deletions
diff --git a/c/src/lib/libbsp/arm/shared/include/arm-a9mpcore-start.h b/c/src/lib/libbsp/arm/shared/include/arm-a9mpcore-start.h index 9ebc5a5cac..e11bc71f26 100644 --- a/c/src/lib/libbsp/arm/shared/include/arm-a9mpcore-start.h +++ b/c/src/lib/libbsp/arm/shared/include/arm-a9mpcore-start.h @@ -24,6 +24,7 @@ #define LIBBSP_ARM_SHARED_ARM_A9MPCORE_START_H #include <rtems/bspsmp.h> +#include <rtems/score/smpimpl.h> #include <libcpu/arm-cp15.h> @@ -109,7 +110,7 @@ BSP_START_TEXT_SECTION static inline arm_a9mpcore_start_hook_0(void) ctrl |= ARM_CP15_CTRL_I | ARM_CP15_CTRL_C | ARM_CP15_CTRL_M; arm_cp15_set_control(ctrl); - rtems_smp_secondary_cpu_initialize(); + _SMP_Start_multitasking_on_secondary_processor(); } else { /* FIXME: Shutdown processor */ while (1) { diff --git a/c/src/lib/libbsp/i386/shared/smp/smp-imps.c b/c/src/lib/libbsp/i386/shared/smp/smp-imps.c index 6170beb1cb..1ed5d41b64 100644 --- a/c/src/lib/libbsp/i386/shared/smp/smp-imps.c +++ b/c/src/lib/libbsp/i386/shared/smp/smp-imps.c @@ -56,6 +56,7 @@ #include <bsp/apic.h> #include <bsp/smp-imps.h> #include <bsp/irq.h> +#include <rtems/score/smpimpl.h> /* * XXXXX The following absolutely must be defined!!! @@ -783,7 +784,7 @@ static void secondary_cpu_initialize(void) enable_sse(); #endif - rtems_smp_secondary_cpu_initialize(); + _SMP_Start_multitasking_on_secondary_processor(); } #include <rtems/bspsmp.h> diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/smp.c b/c/src/lib/libbsp/powerpc/qoriq/startup/smp.c index d124303f15..4260c2b9e2 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/startup/smp.c +++ b/c/src/lib/libbsp/powerpc/qoriq/startup/smp.c @@ -15,6 +15,7 @@ #include <assert.h> #include <rtems/bspsmp.h> +#include <rtems/score/smpimpl.h> #include <libcpu/powerpc-utility.h> @@ -133,7 +134,7 @@ void qoriq_secondary_cpu_initialize(void) bsp_interrupt_vector_enable(QORIQ_IRQ_IPI_0); - rtems_smp_secondary_cpu_initialize(); + _SMP_Start_multitasking_on_secondary_processor(); } static void ipi_handler(void *arg) diff --git a/c/src/lib/libbsp/sparc/leon3/smp/smp_leon3.c b/c/src/lib/libbsp/sparc/leon3/smp/smp_leon3.c index dccca812d9..aac0396ee1 100644 --- a/c/src/lib/libbsp/sparc/leon3/smp/smp_leon3.c +++ b/c/src/lib/libbsp/sparc/leon3/smp/smp_leon3.c @@ -17,6 +17,7 @@ #include <leon.h> #include <rtems/bspIo.h> #include <rtems/bspsmp.h> +#include <rtems/score/smpimpl.h> #include <stdlib.h> static inline void sparc_leon3_set_cctrl( unsigned int val ) @@ -44,7 +45,7 @@ void leon3_secondary_cpu_initialize(uint32_t cpu) LEON_Unmask_interrupt(LEON3_MP_IRQ); LEON3_IrqCtrl_Regs->mask[cpu] |= 1 << LEON3_MP_IRQ; - rtems_smp_secondary_cpu_initialize(); + _SMP_Start_multitasking_on_secondary_processor(); } uint32_t _CPU_SMP_Initialize( uint32_t configured_cpu_count ) diff --git a/cpukit/score/include/rtems/bspsmp.h b/cpukit/score/include/rtems/bspsmp.h index c7502ecbfb..37c038088a 100644 --- a/cpukit/score/include/rtems/bspsmp.h +++ b/cpukit/score/include/rtems/bspsmp.h @@ -52,31 +52,6 @@ extern "C" { #ifndef ASM /** - * @brief Performs high-level initialization of a secondary processor and runs - * the application threads. - * - * The low-level initialization code must call this function to hand over the - * control of this processor to RTEMS. Interrupts must be disabled. It must - * be possible to send inter-processor interrupts to this processor. Since - * interrupts are disabled the inter-processor interrupt delivery is postponed - * until interrupts are enabled the first time. Interrupts are enabled during - * the execution begin of threads in case they have interrupt level zero (this - * is the default). - * - * The pre-requisites for the call to this function are - * - disabled interrupts, - * - delivery of inter-processor interrupts is possible, - * - a valid stack pointer and enough stack space, - * - a valid code memory, and - * - a valid BSS section. - * - * This function must not be called by the main processor. This function does - * not return to the caller. - */ -void rtems_smp_secondary_cpu_initialize( void ) - RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; - -/** * @brief Process the incoming interprocessor request. * * This is the method called by the BSP's interrupt handler diff --git a/cpukit/score/include/rtems/score/smpimpl.h b/cpukit/score/include/rtems/score/smpimpl.h index 59f2b10b67..dc51cdf2ef 100644 --- a/cpukit/score/include/rtems/score/smpimpl.h +++ b/cpukit/score/include/rtems/score/smpimpl.h @@ -63,6 +63,33 @@ typedef enum { #if defined( RTEMS_SMP ) /** + * @brief Performs high-level initialization of a secondary processor and runs + * the application threads. + * + * The low-level initialization code must call this function to hand over the + * control of this processor to RTEMS. Interrupts must be disabled. It must + * be possible to send inter-processor interrupts to this processor. Since + * interrupts are disabled the inter-processor interrupt delivery is postponed + * until interrupts are enabled the first time. Interrupts are enabled during + * the execution begin of threads in case they have interrupt level zero (this + * is the default). + * + * The pre-requisites for the call to this function are + * - disabled interrupts, + * - delivery of inter-processor interrupts is possible, + * - a valid stack pointer and enough stack space, + * - a valid code memory, and + * - a valid BSS section. + * + * This function must not be called by the main processor. The main processor + * uses _Thread_Start_multitasking() instead. + * + * This function does not return to the caller. + */ +void _SMP_Start_multitasking_on_secondary_processor( void ) + RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; + +/** * @brief Sends a SMP message to a processor. * * The target processor may be the sending processor. diff --git a/cpukit/score/src/smp.c b/cpukit/score/src/smp.c index 6c2f78b2eb..86e9cd2bba 100644 --- a/cpukit/score/src/smp.c +++ b/cpukit/score/src/smp.c @@ -30,7 +30,7 @@ #include <rtems/bspIo.h> #endif -void rtems_smp_secondary_cpu_initialize( void ) +void _SMP_Start_multitasking_on_secondary_processor( void ) { Per_CPU_Control *self_cpu = _Per_CPU_Get(); |