summaryrefslogtreecommitdiffstats
path: root/bsps/arm/shared/clock/clock-a9mpcore.c
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/arm/shared/clock/clock-a9mpcore.c')
-rw-r--r--bsps/arm/shared/clock/clock-a9mpcore.c15
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);