diff options
Diffstat (limited to 'bsps/arm/shared/clock/clock-a9mpcore.c')
-rw-r--r-- | bsps/arm/shared/clock/clock-a9mpcore.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/bsps/arm/shared/clock/clock-a9mpcore.c b/bsps/arm/shared/clock/clock-a9mpcore.c index 05d3c0961d..2907dff800 100644 --- a/bsps/arm/shared/clock/clock-a9mpcore.c +++ b/bsps/arm/shared/clock/clock-a9mpcore.c @@ -102,11 +102,13 @@ typedef struct { static void a9mpcore_clock_secondary_action(void *arg) { - volatile a9mpcore_gt *gt = A9MPCORE_GT; - a9mpcore_clock_init_data *init_data = arg; + if (!_Per_CPU_Is_boot_processor(_Per_CPU_Get())) { + volatile a9mpcore_gt *gt = A9MPCORE_GT; + a9mpcore_clock_init_data *init_data = arg; - a9mpcore_clock_gt_init(gt, init_data->cmpval, init_data->interval); - bsp_interrupt_vector_enable(A9MPCORE_IRQ_GT); + a9mpcore_clock_gt_init(gt, init_data->cmpval, init_data->interval); + bsp_interrupt_vector_enable(A9MPCORE_IRQ_GT); + } } #endif @@ -122,10 +124,7 @@ static void a9mpcore_clock_secondary_initialization( .interval = interval }; - _SMP_Before_multitasking_action_broadcast( - a9mpcore_clock_secondary_action, - &init_data - ); + _SMP_Multicast_action(NULL, a9mpcore_clock_secondary_action, &init_data); if (cmpval - a9mpcore_clock_get_counter(gt) >= interval) { bsp_fatal(BSP_ARM_A9MPCORE_FATAL_CLOCK_SMP_INIT); |