summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc
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/src/lib/libbsp/sparc
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/src/lib/libbsp/sparc')
-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
2 files changed, 9 insertions, 7 deletions
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++ ) {