[PATCH] i386: Restore SMP functionality

Kinsey Moore kinsey.moore at oarcorp.com
Mon Feb 12 14:34:35 UTC 2024


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
-- 
2.39.2



More information about the devel mailing list