From: Pavel Pisa <p...@cmp.felk.cvut.cz> The elimination of global interrupt lock is necessity condition but far from being sufficient for RTEMS x86 SMP support.
Provided changes allows to build i386 BSP with configure option --enable-smp. The build BSP runs in UP and SMP configurations on QEMU when only one/boot CPU is used. Testing with more CPUs has not been done and I expect that fundamental parts of code are missing. IRQ processing of i8259 interrupts could be sufficient for SMP configuration now when legacy interrupts are routed to single core only. But there is missing mechanism to wait for finishing interrupt service routine running on one CPU when interrupt disable is called on another CPU. Local, IO APIC and MSI interrupts seems to be missing. Pavel Pisa (3): bsps/i386: replace global interrupt disable by SMP build supporting locking. bsps/i386: use Pentimum instructions for pc586 and pc686 builds. libchip/network/if_fxp.c: do not use rtems_interrupt_disable. c/src/lib/libbsp/i386/pc386/clock/ckinit.c | 19 +++++--- c/src/lib/libbsp/i386/pc386/console/inch.c | 10 +++-- c/src/lib/libbsp/i386/pc386/console/keyboard.c | 55 +++++++++++------------ c/src/lib/libbsp/i386/pc386/console/vt.c | 13 +++--- c/src/lib/libbsp/i386/pc386/include/bsp.h | 5 +++ c/src/lib/libbsp/i386/pc386/make/custom/pc586.cfg | 2 +- c/src/lib/libbsp/i386/pc386/make/custom/pc686.cfg | 2 +- c/src/lib/libbsp/i386/pc386/timer/timer.c | 45 ++++++++++++++++--- c/src/lib/libbsp/i386/shared/irq/idt.c | 34 +++++++++----- c/src/lib/libbsp/i386/shared/irq/irq.c | 32 +++++++++---- c/src/lib/libbsp/i386/shared/irq/irq_init.c | 7 ++- c/src/libchip/network/if_fxp.c | 11 ++--- 12 files changed, 154 insertions(+), 81 deletions(-) -- 1.9.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel