From 8d22b57969b9ade59e31d59fb39ad06f95934e5d Mon Sep 17 00:00:00 2001 From: Kinsey Moore Date: Mon, 12 Feb 2024 08:30:58 -0600 Subject: i386: Restore SMP functionality When the switch to waf occurred, the SMP support in i386 was left out causing it to accumulate a minor amount of cruft. This enables SMP for the i386 BSPs that support it and updates them for the API drift that has occurred since the change. --- cpukit/score/cpu/i386/cpu_asm.S | 2 ++ cpukit/score/cpu/i386/include/rtems/score/cpu.h | 5 +++++ spec/build/cpukit/optsmp.yml | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/cpukit/score/cpu/i386/cpu_asm.S b/cpukit/score/cpu/i386/cpu_asm.S index 6b114e94e1..bb5c096e72 100644 --- a/cpukit/score/cpu/i386/cpu_asm.S +++ b/cpukit/score/cpu/i386/cpu_asm.S @@ -67,11 +67,13 @@ .p2align 1 PUBLIC (_CPU_Context_switch) + PUBLIC (_CPU_Context_switch_no_return) .set RUNCONTEXT_ARG, 4 /* save context argument */ .set HEIRCONTEXT_ARG, 8 /* restore context argument */ SYM (_CPU_Context_switch): +SYM (_CPU_Context_switch_no_return): movl RUNCONTEXT_ARG(esp),eax /* eax = running threads context */ GET_SELF_CPU_CONTROL edx /* edx has address for per_CPU information */ movl PER_CPU_ISR_DISPATCH_DISABLE(edx),ecx diff --git a/cpukit/score/cpu/i386/include/rtems/score/cpu.h b/cpukit/score/cpu/i386/include/rtems/score/cpu.h index 76ee238b6e..a12b0f2b92 100644 --- a/cpukit/score/cpu/i386/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/i386/include/rtems/score/cpu.h @@ -572,6 +572,11 @@ void _CPU_Context_switch( Context_Control *heir ); +RTEMS_NO_RETURN void _CPU_Context_switch_no_return( + Context_Control *executing, + Context_Control *heir +); + /* * _CPU_Context_restore * diff --git a/spec/build/cpukit/optsmp.yml b/spec/build/cpukit/optsmp.yml index 6e4ec30802..45d41299da 100644 --- a/spec/build/cpukit/optsmp.yml +++ b/spec/build/cpukit/optsmp.yml @@ -33,6 +33,10 @@ enabled-by: - arm/xilinx_zynq_picozed - arm/xilinx_zynq_pynq - arm/xilinx_zynq_microzed +- i386/pc386 +- i386/pc486 +- i386/pc586 +- i386/pc686 - powerpc/qoriq_e500 - powerpc/qoriq_e6500_32 - powerpc/qoriq_e6500_64 -- cgit v1.2.3