You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OS/ThreadX: fix threadx smp scheduler flow and core control handling
- always process thread time slice in SysTick_Handler
- clear tx_thread_smp_core_control before first thread restore in gcc/iar context.S
- update PortThreadSwitch to synchronize tx_thread_smp_core_control state transitions
- add missing memory barriers in scheduler return path
- fix _tx_thread_smp_protect_count reset in _tx_thread_smp_force_unprotect
- fix _tx_thread_interrupt_control and enable TSP on boot hart
Signed-off-by: Huaqi Fang <578567190@qq.com>
Copy file name to clipboardExpand all lines: doc/source/changelog.rst
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -135,6 +135,7 @@ This is release version of ``0.9.0`` of Nuclei SDK.
135
135
- Fix ThreadX ``tx_port.h`` interrupt disable/restore macros (``TX_DISABLE``/``TX_RESTORE``) by adding ``volatile`` keyword and ``memory`` clobber to inline assembly to prevent compiler reordering and ensure proper memory barrier semantics
136
136
- Add memory barriers to ThreadX UP and SMP ports after interrupt control operations (such as ``__enable_irq()`` and ``CSR_MSTATUS`` access) to ensure proper synchronization and prevent potential compiler/CPU reordering issues
137
137
- Fix ThreadX SMP port ``PortThreadSwitch`` function by adding memory barriers (``__RWMB()``) around ECLIC IRQ priority changes and stack pointer swaps to ensure proper ordering of memory operations on Nuclei 1000 series out-of-order processors, preventing potential race conditions in multi-core task switching
138
+
- Fix ThreadX SMP scheduler flow by always processing time-slice updates in ``SysTick_Handler``, clearing/checking ``tx_thread_smp_core_control`` during first-thread restore and ``PortThreadSwitch``, adding missing memory barriers in the return path, and correcting the ``_tx_thread_smp_protect_count`` reset bug
0 commit comments