Commit Graph
518 Commits
Author SHA1 Message Date
Akif Ejaz c1e3678797 Add QEMU based CI regression test infra for RV32 and RV64 (#526)
Added a QEMU virt-machine BSP and CTest infrastructure to run the
ThreadX regression suite on both RISC-V 32-bit and 64-bit targets
in CI.

New components:
- BSP (entry, trap, PLIC, CLINT timer, UART, linker script) targeting
  QEMU virt machine for RV32 and RV64
- CMake build system with Ninja, supporting multiple build configs
- CI scripts: install_riscv.sh (toolchain + QEMU), build_tx_riscv.sh,
  test_tx_riscv.sh
- GitHub Actions workflow job for RISC-V regression gating

Port fixes:
- RV32 tx_thread_context_restore.S: set MPIE alongside MPP (0x1800 →
  0x1880) so mret re-enables interrupts
- RV32/RV64 tx_port.h: add TX_REGRESSION_TEST extension macros needed
  by the test harness
- RV32/RV64 example_build scripts: add compile and QEMU launch steps

Regression test portability fixes:
- Block memory tests: increase pool sizes (320 → 340) to accommodate
  larger RISC-V block-header alignment
- Byte memory test: replace hardcoded offsets with BYTE_POOL_OVERHEAD
  macro for portable pool-size computation
- Event flag timeout test: make counter tolerance unconditional,
  removing linux-only guard

Signed-off-by: Akif Ejaz <akif.ejaz@10xengineers.ai>
2026-05-19 11:03:23 -04:00
Christos Papadopoulos 0dd6d28afb Fixed MPIE being cleared leading to have interrupts being disable after an mret instruction (#522)
* Fixed MPIE being cleared leading to have interrupts being disable when returning from machine mode

* Removed wrong register operand and replaced by immediate value
2026-05-13 09:00:54 -04:00
An Dao 9ab0cf9683 Moved tx_initialize_low_level.S to example_build for Cortex-M33/M55/M85 GNU (#452) (#514)
The Cortex-M33, M55, and M85 GNU ports incorrectly include tx_initialize_low_level.S as a library source in CMakeLists.txt. This file is board-specific initialization code that users must
customize for their hardware, and including it in the library causes linker conflicts when users provide their own implementation (e.g., via CMake FetchContent).

This change aligns these ports with the established pattern used by
Cortex-M0/M3/M4/M7 GNU ports:
- Move tx_initialize_low_level.S from src/ to example_build/
- Remove it from CMakeLists.txt target_sources
- Add sample_threadx.c to example_build/ for consistency

Signed-off-by: An Dao <webmaster@taktflow-systems.com>
2026-05-13 08:56:25 -04:00
Francisco Manuel Merino Torres 42adda4457 Added a riscv32 for the OpenHW CVA6 (#511) 2026-05-13 07:46:54 -04:00
Frédéric Desbiens 3c4d20285f Corrected typos in two test filenames (#527) 2026-04-29 13:22:15 -04:00
Frédéric DesbiensandCopilot 33efad3fee Fixed race condition and message loss in Cortex-M ports (#523)
* Fixed race condition and message loss in Cortex-M GNU, AC6, and IAR ports (#516)

- Added compiler memory barriers to BASEPRI management functions in tx_port.h.
- Added architectural barriers (DSB/ISB) to scheduler return paths in tx_port.h and tx_thread_system_return.S to prevent fall-through before context switch.
- These changes address spurious thread resumption and lost messages, especially when TX_NOT_INTERRUPTABLE is enabled.
- These changes ensure that pending interrupts (specifically PendSV) are recognised before subsequent instructions are executed, following Kairalite's feedback and ARM architectural guidelines.

 Assisted-by: Gemini (Gemini 2.0 Flash)

-----

* Added a comment in common/tx_queue_cleanup to document why the NI path omits revalidation guards

- In `TX_NOT_INTERRUPTABLE` mode, the caller keeps interrupts disabled across the entire cleanup call, so the race window that makes the guards necessary in the interruptable path cannot occur. Add a comment explaining this, and noting that all paths that resume a suspended thread clear tx_thread_suspend_cleanup before calling
_tx_thread_system_ni_resume, making double-cleanup impossible.

This prevents future false-positive suggestions (e.g. from AI tools) to add redundant checks to the NI path.

Relates to: eclipse-threadx/threadx#516

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-29 09:10:57 -04:00
Frédéric Desbiens d5c75fd38f Merge pull request #361 from howjmay/typo
Fixed typos in several regression test files
2026-04-15 11:38:51 -04:00
Frédéric Desbiens f81d1c9eb5 Merge branch 'dev' into typo 2026-04-15 11:36:53 -04:00
Frédéric Desbiens 454ab56fce Merge pull request #278 from Polarisru/master
Fixed SysTick initialization problem in tx_initialize_low_level.s for Cortex-M0.
2026-04-15 11:23:57 -04:00
Frédéric Desbiens 4f1b9bfdc1 Merge pull request #524 from fdesbiens/fix-pr-277
Added conditional CMake support for ThreadX SMP
2026-04-15 11:11:51 -04:00
Frédéric Desbiens 98e4754381 build: add conditional CMake support for ThreadX SMP
- Introduce THREADX_SMP option in root CMakeLists.txt.
- Implement conditional source and port directory selection for SMP builds.
- Add CMake support for common_smp and Cortex-A9 SMP port.
- Fix linker flags in Cortex-A9 SMP sample build script.
- Remove duplicate invalidateCaches_IS declarations in v7.h headers.

Assisted-by: Gemini (Experimental)
2026-04-15 10:52:14 -04:00
Frédéric Desbiens 9dcb05cb78 Merge pull request #273 from hodcarrier/master
Fixed the link flag in the Cortex-A9 sample
2026-04-15 09:42:41 -04:00
Frédéric Desbiens 12553eaf2c Merge pull request #270 from MrNetic/patch-1
Removed extra spaces in tx_port.h.
2026-04-15 09:38:15 -04:00
Frédéric Desbiens a0dc185f66 Merge pull request #508 from goodnorning/feature/rv64_rvv_support
Added rv64 rvv support
2026-04-14 09:26:33 -04:00
Frédéric Desbiens 57e317a7b5 Merge pull request #521 from jblanchard-jblopen/patch-2
Fixed TX_TIMER_TICKS_PER_SECOND default value in tx_user_sample.h
2026-04-14 09:12:31 -04:00
Jonathan Blanchard 2cdebde30a Fix default TX_TIMER_TICKS_PER_SECOND default value in tx_user_sample.h
Changed default value to TX_16_ULONG.
2026-04-12 10:17:10 -04:00
shuta.lst dfafc96149 RISC-V64 qemu_virt example support RVV Extension; 2026-04-07 14:03:24 +08:00
shuta.lst 2f1fc52918 RISC-V64 arch. port support RVV Extension; 2026-04-07 11:41:33 +08:00
Frédéric Desbiens 8c57362209 Merge pull request #512 from eclipse-threadx/master
Merge pull request #510 from eclipse-threadx/dev
2026-03-12 18:18:39 +01:00
Frédéric Desbiens 3726d7906b Merge pull request #510 from eclipse-threadx/dev
cortex_m / Cortex M0 build (push) Has been cancelled
cortex_m / Cortex M3 build (push) Has been cancelled
cortex_m / Cortex M4 build (push) Has been cancelled
cortex_m / Cortex M7 build (push) Has been cancelled
regression_test / tx (push) Has been cancelled
regression_test / smp (push) Has been cancelled
regression_test / deploy (push) Has been cancelled
Merge changes ahead of the v6.5.0.202601 release
v6.5.0.202601_rel
2026-03-06 19:27:49 +01:00
Frédéric Desbiens c3259a2160 Updated copyright headers and version number constants (#509)
* Updated version number constants

* Removed revision history from all files

* Added Eclipse ThreadX contributors' copyright header
2026-03-05 10:46:30 +01:00
Frédéric Desbiens 385d39f421 Merge pull request #502 from quintauris-tech/riscv32-clang-port
Added a RV32 Clang port
v6.5.0.202601_pre
2026-03-04 08:36:53 +01:00
Frédéric Desbiens b3e8a9aa20 Merge pull request #500 from goodnorning/feature/support_xuantie_e906
Added support for the XuanTie E906 CPU.
2026-03-04 08:34:59 +01:00
Frédéric Desbiens 0c92f48d50 Merge pull request #493 from mehmetteren/dev
Fixed VFP build failure in Cortex-A tx_thread_schedule.S
2026-03-02 11:41:53 -05:00
Frédéric Desbiens da5093f84b Proposed changes to the original PR 2026-03-02 14:24:07 +01:00
Frédéric Desbiens 5910de86d6 Merge pull request #506 from akifejaz/qemu-examples
Updated the QEMU examples to match the new RV port format
2026-03-01 13:02:32 -05:00
Akif Ejaz cd101d9ab4 update comments
Signed-off-by: Akif Ejaz <akif.ejaz@10xengineers.ai>
2026-03-01 15:13:28 +05:00
Akif Ejaz ff287cce97 update qemu examples as per new rv port format
- removed the REGBYTES, STORE/LOAD macros

Signed-off-by: Akif Ejaz <akif.ejaz@10xengineers.ai>
2026-03-01 14:14:19 +05:00
Frédéric Desbiens 33610aa190 Merge pull request #504 from fdesbiens/issue499
Added ax attribute to ThreadX module example build preamble.S files
2026-02-27 10:27:25 -05:00
Frédéric Desbiens f4051070db Added ax attribute to ThreadX module example build preamble.S files 2026-02-27 10:25:05 -05:00
Frédéric Desbiens 3bbc096d78 Merge pull request #503 from fdesbiens/issue499
Added a missing symbol to tx_api.h for TX SMP.
2026-02-26 17:28:26 -05:00
Frédéric Desbiens c62ed82b1a Added a missing symbol to tx_api.h for TX SMP. 2026-02-26 17:22:25 -05:00
Francisco Manuel Merino Torres 49439bfa9c Fixes to the RISC-V32 architecture port layer for Clang. 2026-02-26 11:54:26 +01:00
Francisco Manuel Merino Torres 888f7a42b0 Added a RISC-V32 architecture port layer for Clang. 2026-02-26 10:49:23 +01:00
Frédéric Desbiens 8f126ee414 Merge pull request #492 from akifejaz/qemu-virt-rv32
Added a RISC-V32 QEMU-virt example
2026-02-25 08:24:38 -05:00
Frédéric Desbiens 0a0615ada3 Merge pull request #501 from akifejaz/rv64-gnu-port
Removed dead code from riscv64/gnu port
2026-02-25 08:23:49 -05:00
shuta.lst 7bf83088b8 Support XuanTie E906 CPU
- Place the E906 implementation in the ports/risc-v32/gnu directory;
 - Remove code unrelated to the xuantie_smartl_fpga demo;
2026-02-25 11:23:09 +08:00
Akif Ejaz 1d796d5fde Add RISC-V32 arch. port layer
This update adapts the ThreadX low-level kernel routines
for RV32, including:
  - startup and initialization logic
  - context save/restore implementations
  - interrupt control and scheduler entry
  - thread stack build and system return paths
  - timer interrupt handling
  - made it complient as per new risc-v64/gnu
      & threadx style
  - added reademe for risc-v32/gnu port

These changes provide full low-level support needed to run
ThreadX on RISC-V32 targets.

Signed-off-by: Akif Ejaz <akif.ejaz@10xengineers.ai>
2026-02-25 09:06:02 +08:00
Frédéric Desbiens 4de9be75e5 Merge pull request #490 from akifejaz/rv32-port
Added a RISC-V32 architecture port layer for GCC.
2026-02-24 11:06:03 -05:00
Akif Ejaz 757db54d6d Add RISC-V32 arch. port layer
This update adapts the ThreadX low-level kernel routines
for RV32, including:
  - startup and initialization logic
  - context save/restore implementations
  - interrupt control and scheduler entry
  - thread stack build and system return paths
  - timer interrupt handling
  - made it complient as per new risc-v64/gnu
      & threadx style
  - added reademe for risc-v32/gnu port

These changes provide full low-level support needed to run
ThreadX on RISC-V32 targets.

Signed-off-by: Akif Ejaz <akif.ejaz@10xengineers.ai>
2026-02-16 17:15:13 +05:00
Akif Ejaz c1bff3ae34 removed dead code in riscv64/gnu port
Signed-off-by: Akif Ejaz <akif.ejaz@10xengineers.ai>
2026-02-16 13:57:51 +05:00
shuta.lst ede5aa2867 Support XuanTie E906 CPU.
- add ThreadX porting codes for XuanTie E906.
 - add example for XuanTie E906 running on QEMU smartl.
2026-02-12 23:13:31 +08:00
Frédéric Desbiens 579246b4a2 Merge pull request #494 from spir6s/master
Added missing ULONG64 definition for RX ports needed by USBX and NetX Duo
2026-02-05 09:52:58 -05:00
Frédéric Desbiens 0b0f1d0911 Merge pull request #496 from akifejaz/rv64-gnu-port
Improved RV64/GNU port robustness, portability, and CSR handling
2026-02-05 09:50:08 -05:00
Akif Ejaz 21256bed51 Cleanup the macros in tx_port.h & comments in inc/*.S
- removed the trailing whitespaces

Signed-off-by: Akif Ejaz <akif.ejaz@10xengineers.ai>
2026-02-05 16:16:59 +05:00
Akif Ejaz 99ed67df5a few cleanups
Signed-off-by: Akif Ejaz <akif.ejaz@10xengineers.ai>
2026-01-26 16:08:51 +05:00
Akif Ejaz 6c25effb40 improve port robustness, portability, and CSR handling
- removed tx_port.h dependency from .S files
- replaced tx_timer_interrupt.c with tx_timer_interrupt.S
-  made some cleanups, formatting to better readability
- removed macros (LOAD/STORE/REGBYTES)
  changed register nomenclature to use RISC-V ABI
  names (ra, sp, t0, etc.)
- added readme_threadx.txt

Signed-off-by: Akif Ejaz <akif.ejaz@10xengineers.ai>
2026-01-26 15:48:46 +05:00
Frédéric Desbiens 4b6e8100d9 Merge commit from fork
cortex_m / Cortex M0 build (push) Has been cancelled
cortex_m / Cortex M3 build (push) Has been cancelled
cortex_m / Cortex M4 build (push) Has been cancelled
cortex_m / Cortex M7 build (push) Has been cancelled
regression_test / tx (push) Has been cancelled
regression_test / smp (push) Has been cancelled
regression_test / deploy (push) Has been cancelled
Fix: Return 0u when no counters available
v6.4.5.202504_rel
2026-01-09 09:38:16 -05:00
Frédéric Desbiens a9b31c3102 Merge pull request #495 from eclipse-threadx/dev
Merge changes ahead of the v6.4.5.202504 release
2026-01-09 09:36:27 -05:00
Frédéric Desbiens 5c58767c5d Updated the version number 2026-01-09 09:33:14 -05:00