summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-06-14 14:00:38 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-17 13:09:49 +0200
commit39e51758c86754cef5ba4521c0c36578521f73d0 (patch)
treea87255c5c0592b876106da50b939dedd471b7d5a /c
parentsmp: Delete RTEMS_BSP_SMP_CONTEXT_SWITCH_NECESSARY (diff)
downloadrtems-39e51758c86754cef5ba4521c0c36578521f73d0.tar.bz2
smp: Add and use _CPU_SMP_Get_current_processor()
Add and use _SMP_Get_current_processor() and rtems_smp_get_current_processor(). Delete bsp_smp_interrupt_cpu(). Change type of current processor index from int to uint32_t to match _SMP_Processor_count type.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/arm/shared/arm-a9mpcore-smp.c5
-rw-r--r--c/src/lib/libbsp/i386/shared/irq/irq_asm.S2
-rw-r--r--c/src/lib/libbsp/i386/shared/smp/getcpuid.c4
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/smp.c5
-rw-r--r--c/src/lib/libbsp/shared/smp/getcpuid.c5
-rw-r--r--c/src/lib/libbsp/sparc/leon3/smp/getcpuid.c6
-rw-r--r--c/src/lib/libbsp/sparc/leon3/smp/smp_leon3.c10
7 files changed, 16 insertions, 21 deletions
diff --git a/c/src/lib/libbsp/arm/shared/arm-a9mpcore-smp.c b/c/src/lib/libbsp/arm/shared/arm-a9mpcore-smp.c
index b94bcec81c..e647b4fa92 100644
--- a/c/src/lib/libbsp/arm/shared/arm-a9mpcore-smp.c
+++ b/c/src/lib/libbsp/arm/shared/arm-a9mpcore-smp.c
@@ -20,11 +20,6 @@
#include <bsp/irq.h>
-int bsp_smp_processor_id(void)
-{
- return (int) arm_cortex_a9_get_multiprocessor_cpu_id();
-}
-
static void ipi_handler(void *arg)
{
rtems_smp_process_interrupt();
diff --git a/c/src/lib/libbsp/i386/shared/irq/irq_asm.S b/c/src/lib/libbsp/i386/shared/irq/irq_asm.S
index d07ae2cb6b..2b16234622 100644
--- a/c/src/lib/libbsp/i386/shared/irq/irq_asm.S
+++ b/c/src/lib/libbsp/i386/shared/irq/irq_asm.S
@@ -100,7 +100,7 @@ SYM (_ISR_Handler):
movl esp, ebp /* ebp = previous stack pointer */
#if defined(RTEMS_SMP) && defined(BSP_HAS_SMP)
movl $SYM(_Per_CPU_Information_p), ebx
- call SYM(bsp_smp_processor_id)
+ call SYM(_CPU_SMP_Get_current_processor)
mov (ebx,eax,4), ebx
pushl ecx
call SYM(_ISR_SMP_Enter)
diff --git a/c/src/lib/libbsp/i386/shared/smp/getcpuid.c b/c/src/lib/libbsp/i386/shared/smp/getcpuid.c
index dc82d3f883..dec816698d 100644
--- a/c/src/lib/libbsp/i386/shared/smp/getcpuid.c
+++ b/c/src/lib/libbsp/i386/shared/smp/getcpuid.c
@@ -7,13 +7,15 @@
* http://www.rtems.com/license/LICENSE.
*/
+#include <rtems/score/cpu.h>
+
#include <bsp/apic.h>
#include <bsp/smp-imps.h>
static int lapic_dummy = 0;
unsigned imps_lapic_addr = ((unsigned)(&lapic_dummy)) - LAPIC_ID;
-int bsp_smp_processor_id(void)
+uint32_t _CPU_SMP_Get_current_processor( void )
{
return APIC_ID(IMPS_LAPIC_READ(LAPIC_ID));
}
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/smp.c b/c/src/lib/libbsp/powerpc/qoriq/startup/smp.c
index 352d7d44cc..4634eef76d 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/smp.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/smp.c
@@ -43,11 +43,6 @@ void _start_core_1(void);
#define TLB_COUNT (TLB_END - TLB_BEGIN)
-int bsp_smp_processor_id(void)
-{
- return (int) ppc_processor_id();
-}
-
/*
* These values can be obtained with the debugger or a look into the
* U-Boot sources (arch/powerpc/cpu/mpc85xx/release.S).
diff --git a/c/src/lib/libbsp/shared/smp/getcpuid.c b/c/src/lib/libbsp/shared/smp/getcpuid.c
index c1806c8916..8d57b780d3 100644
--- a/c/src/lib/libbsp/shared/smp/getcpuid.c
+++ b/c/src/lib/libbsp/shared/smp/getcpuid.c
@@ -7,8 +7,9 @@
* http://www.rtems.com/license/LICENSE.
*/
-int bsp_smp_processor_id(void)
+#include <rtems/score/cpu.h>
+
+uint32_t _CPU_SMP_Get_current_processor( void )
{
return 0;
}
-
diff --git a/c/src/lib/libbsp/sparc/leon3/smp/getcpuid.c b/c/src/lib/libbsp/sparc/leon3/smp/getcpuid.c
index 5678fd4962..824278db61 100644
--- a/c/src/lib/libbsp/sparc/leon3/smp/getcpuid.c
+++ b/c/src/lib/libbsp/sparc/leon3/smp/getcpuid.c
@@ -13,9 +13,11 @@
* http://www.rtems.com/license/LICENSE.
*/
-int bsp_smp_processor_id(void)
+#include <rtems/score/cpu.h>
+
+uint32_t _CPU_SMP_Get_current_processor( void )
{
- unsigned int id;
+ uint32_t id;
__asm__ __volatile__( "rd %%asr17,%0\n\t" : "=r" (id) : );
return ((id >> 28) & 0xff);
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 7dbd5bb12a..39fc9f9dfa 100644
--- a/c/src/lib/libbsp/sparc/leon3/smp/smp_leon3.c
+++ b/c/src/lib/libbsp/sparc/leon3/smp/smp_leon3.c
@@ -43,7 +43,7 @@ static rtems_isr bsp_ap_ipi_isr(
static void leon3_secondary_cpu_initialize(void)
{
- int cpu = bsp_smp_processor_id();
+ uint32_t cpu = rtems_smp_get_current_processor();
sparc_leon3_set_cctrl( 0x80000F );
LEON_Unmask_interrupt(LEON3_MP_IRQ);
@@ -125,11 +125,11 @@ void bsp_smp_interrupt_cpu(
void bsp_smp_broadcast_interrupt(void)
{
- int dest_cpu;
- int cpu;
- int max_cpus;
+ uint32_t dest_cpu;
+ uint32_t cpu;
+ uint32_t max_cpus;
- cpu = bsp_smp_processor_id();
+ cpu = rtems_smp_get_current_processor();
max_cpus = rtems_smp_get_processor_count();
for ( dest_cpu=0 ; dest_cpu < max_cpus ; dest_cpu++ ) {