summaryrefslogtreecommitdiffstats
path: root/bsps/sparc
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-24 10:50:39 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-25 10:07:42 +0200
commit4678d1a8b0e74a12809122ef071324c99e78d7ff (patch)
tree3236b6cfe13d9b3865715aebd6b07baa2fb2abfa /bsps/sparc
parentscore: _SMP_Inter_processor_interrupt_handler() (diff)
downloadrtems-4678d1a8b0e74a12809122ef071324c99e78d7ff.tar.bz2
bsps: bsp_start_on_secondary_processor()
Pass current processor control as first parameter in bsp_start_on_secondary_processor() and qoriq_start_thread() to make dependency more explicit.
Diffstat (limited to 'bsps/sparc')
-rw-r--r--bsps/sparc/leon3/start/bspsmp.c5
-rw-r--r--bsps/sparc/shared/start/start.S1
2 files changed, 4 insertions, 2 deletions
diff --git a/bsps/sparc/leon3/start/bspsmp.c b/bsps/sparc/leon3/start/bspsmp.c
index 1ef6e8eb3b..5b939fc765 100644
--- a/bsps/sparc/leon3/start/bspsmp.c
+++ b/bsps/sparc/leon3/start/bspsmp.c
@@ -35,9 +35,9 @@ static rtems_isr bsp_inter_processor_interrupt(
_SMP_Inter_processor_interrupt_handler(_Per_CPU_Get());
}
-void bsp_start_on_secondary_processor()
+void bsp_start_on_secondary_processor(Per_CPU_Control *cpu_self)
{
- uint32_t cpu_index_self = _CPU_SMP_Get_current_processor();
+ uint32_t cpu_index_self;
/*
* If data cache snooping is not enabled we terminate using BSP_fatal_exit()
@@ -49,6 +49,7 @@ void bsp_start_on_secondary_processor()
BSP_fatal_exit( LEON3_FATAL_INVALID_CACHE_CONFIG_SECONDARY_PROCESSOR );
/* Unmask IPI interrupts at Interrupt controller for this CPU */
+ cpu_index_self = _Per_CPU_Get_index(cpu_self);
LEON3_IrqCtrl_Regs->mask[cpu_index_self] |= 1U << LEON3_mp_irq;
_SMP_Start_multitasking_on_secondary_processor();
diff --git a/bsps/sparc/shared/start/start.S b/bsps/sparc/shared/start/start.S
index 5bd2937a13..222c5bb164 100644
--- a/bsps/sparc/shared/start/start.S
+++ b/bsps/sparc/shared/start/start.S
@@ -310,6 +310,7 @@ SYM(hard_reset):
andn %sp, 0x0f, %sp ! align stack on 16-byte boundary
mov %sp, %fp ! set frame pointer
+ mv %o0, %g6
call SYM(bsp_start_on_secondary_processor) ! does not return
sub %sp, SPARC_MINIMUM_STACK_FRAME_SIZE, %sp
.Lbootcpu: