summaryrefslogtreecommitdiff
path: root/common_modules/module_lib/src
diff options
context:
space:
mode:
authorWei-Chen Lai <[email protected]>2026-05-26 04:43:24 +0800
committerGitHub <[email protected]>2026-05-25 16:43:24 -0400
commite031a3d506fdbc589fc6032eba618918e0c6719a (patch)
treefd4583413b5a549f08b8b6d4dbb7a526dabd738a /common_modules/module_lib/src
parent5b1b740a6610ae3434da9fc2cd55f390f7619429 (diff)
Implemented lazy FPU, GP relaxation, and QEMU automation for GNU port in arch/risc-v32 (#513)
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 [email protected] Co-authored-by: Frédéric Desbiens [email protected] Co-authored-by: Copilot [email protected]
Diffstat (limited to 'common_modules/module_lib/src')
0 files changed, 0 insertions, 0 deletions