<feed xmlns='http://www.w3.org/2005/Atom'>
<title>threadx.git/cmake/riscv32_gnu.cmake, branch v6.5.2.202603_rel</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/threadx.git/atom/cmake/riscv32_gnu.cmake?h=v6.5.2.202603_rel</id>
<link rel='self' href='http://cgit.235523.xyz/threadx.git/atom/cmake/riscv32_gnu.cmake?h=v6.5.2.202603_rel'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/'/>
<updated>2026-09-09T15:40:05Z</updated>
<entry>
<title>riscv32: spec compliance and regression test fix (#691)</title>
<updated>2026-09-09T15:40:05Z</updated>
<author>
<name>Akif Ejaz</name>
<email>akifejaz40@gmail.com</email>
</author>
<published>2026-09-09T15:40:05Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=40db27e843e06657e5320049a2c10e215cc95dc4'/>
<id>urn:sha1:40db27e843e06657e5320049a2c10e215cc95dc4</id>
<content type='text'>
* riscv32: spec compliance and regression test fix

Signed-off-by: Akif Ejaz &lt;akifejaz40@gmail.com&gt;

* Derived the RISC-V32 frame sizes from the port contract in one place

tx_port.h published TX_RISCV_TRAP_FRAME_SIZE for the GNU BSP assembly, but
nothing in the port consumed it. Six .S files each rebuilt the same numbers
from their own #if, so the interrupt frame size was written out in seven
places and the solicited frame size in three.

That is the shape that produced the RISC-V64 fault fixed in #708, where the
port moved to a padded frame and one copy of the constant did not. The
sources now include tx_port.h and take both sizes from it, and no literal
frame size remains in the port. TX_RISCV_SOL_FRAME_SIZE joins the contract,
since the solicited frame was never published at all.

The emitted code is unchanged: 400 and 176 bytes for ILP32D, 128 for
soft-float, confirmed by disassembly before and after.

Two further corrections:

_tx_initialize_low_level carried .global immediately followed by .weak, so
the symbol stayed weak and the .global did nothing. Weak is what the port
wants, because the example and regression BSPs both provide their own
definition, so the stray .global is removed rather than the .weak. Verified
with nm that the symbol is still W.

The QEMU runner seeded fpu_verified from skip_fpu, so a soft-float run
satisfied the FPU gate whether or not the script ever reported the skip. It
now starts false and is set only when the skip marker is present, so a run
that dies before reaching that point fails instead of passing.

Assisted-by: Claude Code (Opus 5) &lt;noreply@anthropic.com&gt;

---------

Signed-off-by: Akif Ejaz &lt;akifejaz40@gmail.com&gt;
Co-authored-by: Frédéric Desbiens &lt;frederic.desbiens@eclipse-foundation.org&gt;</content>
</entry>
<entry>
<title>Implemented lazy FPU, GP relaxation, and QEMU automation for GNU port in arch/risc-v32 (#513)</title>
<updated>2026-05-25T20:43:24Z</updated>
<author>
<name>Wei-Chen Lai</name>
<email>138997176+Winstonllllai@users.noreply.github.com</email>
</author>
<published>2026-05-25T20:43:24Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=e031a3d506fdbc589fc6032eba618918e0c6719a'/>
<id>urn:sha1:e031a3d506fdbc589fc6032eba618918e0c6719a</id>
<content type='text'>
This PR adds three functional improvements to the RISC-V 32-bit GNU port.

Lazy FPU stacking (tx_thread_context_save.S, tx_thread_context_restore.S, tx_thread_schedule.S): FP register save/restore is now skipped whenmstatus.FS is Off, reducing context switch overhead for threads that do not use floating point.

GP relaxation (cmake/riscv32_gnu.cmake, entry.s, link.lds): Enables the -mrelax compiler flag and defines __global_pointer$ in the linker script.The entry stub initializes gp at startup. gp is not saved or restored during context switches.

WFI in idle loop (tx_thread_schedule.S): The scheduler issues wfi when no thread is ready, replacing busy-waiting with a low-power sleep.

A Python/QEMU/GDB functional test runner is added under ports/risc-v32/gnu/example_build/qemu_virt/test/. It validates context switching, FPUcontext preservation, timer interrupts, and preemption. To run:

cd ports/risc-v32/gnu/example_build/qemu_virt
make check-functional-riscv32

Tested on QEMU virt machine (rv32gc).

Co-authored-by: Wei-Chen Lai Winstonllllai@users.noreply.github.com
Co-authored-by: Frédéric Desbiens frederic.desbiens@eclipse-foundation.org
Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com</content>
</entry>
<entry>
<title>Added a riscv32 for the OpenHW CVA6 (#511)</title>
<updated>2026-05-13T11:46:54Z</updated>
<author>
<name>Francisco Manuel Merino Torres</name>
<email>francisco.merino@quintauris.com</email>
</author>
<published>2026-05-13T11:46:54Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=42adda44573b7c0062138818749437e6baf1044f'/>
<id>urn:sha1:42adda44573b7c0062138818749437e6baf1044f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add RISC-V32 arch. port layer</title>
<updated>2026-02-16T12:15:13Z</updated>
<author>
<name>Akif Ejaz</name>
<email>akifejaz40@gmail.com</email>
</author>
<published>2026-02-16T12:15:13Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=757db54d6d10edc655eee9cfe02ecd4d93be5fed'/>
<id>urn:sha1:757db54d6d10edc655eee9cfe02ecd4d93be5fed</id>
<content type='text'>
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
      &amp; 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 &lt;akif.ejaz@10xengineers.ai&gt;
</content>
</entry>
</feed>
