diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-02-18 08:36:16 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-04 13:36:10 +0100 |
commit | 90d8567d34a6d80da04b1cb37b667a3173f584c4 (patch) | |
tree | 221e66b9da1dd9dd79d01e507f0026bfb477b810 /c/src/lib/libbsp/i386/shared/smp/smp-imps.c | |
parent | score: Add _SMP_Before_multitasking_action() (diff) | |
download | rtems-90d8567d34a6d80da04b1cb37b667a3173f584c4.tar.bz2 |
score: Distribute clock tick to all online CPUs
Update #2554.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/i386/shared/smp/smp-imps.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/i386/shared/smp/smp-imps.c b/c/src/lib/libbsp/i386/shared/smp/smp-imps.c index ca1a0f134a..1ed504ccf9 100644 --- a/c/src/lib/libbsp/i386/shared/smp/smp-imps.c +++ b/c/src/lib/libbsp/i386/shared/smp/smp-imps.c @@ -744,13 +744,22 @@ 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(); - _SMP_Inter_processor_interrupt_handler(); + message = _SMP_Inter_processor_interrupt_handler(); + + if ((message & SMP_MESSAGE_CLOCK_TICK) != 0) { + Clock_isr(NULL); + } } static void ipi_install_irq(void) |