From 1a971d836cdb4b9b642b69a71817e2b14484f20d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 18 Apr 2019 07:38:13 +0200 Subject: score: Remove SMP_MESSAGE_CLOCK_TICK Use _SMP_Multicast_action() instead. --- bsps/i386/pc386/clock/ckinit.c | 10 +++++++++- bsps/i386/pc386/start/smp-imps.c | 11 +---------- cpukit/include/rtems/score/smpimpl.h | 10 ---------- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/bsps/i386/pc386/clock/ckinit.c b/bsps/i386/pc386/clock/ckinit.c index afd5d01f1e..478a37f5d7 100644 --- a/bsps/i386/pc386/clock/ckinit.c +++ b/bsps/i386/pc386/clock/ckinit.c @@ -29,6 +29,9 @@ #include #include #include +#ifdef RTEMS_SMP +#include +#endif #define CLOCK_VECTOR 0 @@ -66,7 +69,12 @@ extern volatile uint32_t Clock_driver_ticks; #ifdef RTEMS_SMP #define Clock_driver_support_at_tick() \ - _SMP_Send_message_broadcast(SMP_MESSAGE_CLOCK_TICK) + do { \ + Processor_mask targets; \ + _Processor_mask_Assign(&targets, _SMP_Get_online_processors()); \ + _Processor_mask_Clear(&targets, _SMP_Get_current_processor()); \ + _SMP_Multicast_action(&targets, Clock_isr, NULL); \ + } while (0) #endif static uint32_t pc386_get_timecount_tsc(struct timecounter *tc) diff --git a/bsps/i386/pc386/start/smp-imps.c b/bsps/i386/pc386/start/smp-imps.c index d8b2dd3edc..0543b17ec5 100644 --- a/bsps/i386/pc386/start/smp-imps.c +++ b/bsps/i386/pc386/start/smp-imps.c @@ -744,22 +744,13 @@ static void smp_apic_ack(void) IMPS_LAPIC_WRITE(LAPIC_EOI, 0 ); /* ACK the interrupt */ } -/* FIXME: There should be a header file for this */ -void Clock_isr(void *arg); - static void bsp_inter_processor_interrupt(void *arg) { - unsigned long message; - (void) arg; smp_apic_ack(); - message = _SMP_Inter_processor_interrupt_handler(_Per_CPU_Get()); - - if ((message & SMP_MESSAGE_CLOCK_TICK) != 0) { - Clock_isr(NULL); - } + _SMP_Inter_processor_interrupt_handler(_Per_CPU_Get()); } static void ipi_install_irq(void) diff --git a/cpukit/include/rtems/score/smpimpl.h b/cpukit/include/rtems/score/smpimpl.h index ecea1fda43..1b7841630b 100644 --- a/cpukit/include/rtems/score/smpimpl.h +++ b/cpukit/include/rtems/score/smpimpl.h @@ -57,16 +57,6 @@ extern "C" { */ #define SMP_MESSAGE_PERFORM_JOBS 0x4UL -/** - * @brief SMP message to request a clock tick. - * - * This message is provided for systems without a proper interrupt affinity - * support and may be used by the clock driver. - * - * @see _SMP_Send_message(). - */ -#define SMP_MESSAGE_CLOCK_TICK 0x8UL - /** * @brief SMP fatal codes. */ -- cgit v1.2.3