nuttx/arch/risc-v
Justin Hammond fc488eef01 arch/risc-v/eic7700x: Enter on any hart and run all four.
The port ran on whichever hart the firmware handed over on, with a single
idle stack.  The firmware does not pick the same hart every boot, so
nothing may assume one.

The hart that arrives first records which it was, indexes its idle stack
by its own ID, and restarts on hart 0; NuttX runs CPU0 there because that
is the only hart riscv_set_inital_sp() gives a whole idle stack to.  The
first hart in owns the one time setup, and that guard lives in .data
because it is read before the BSS is cleared.

CONFIG_SMP_NCPUS below four is refused in chip.h: the hart the firmware
picked would have no slot and would stop in __start before it could
restart, which fails on some resets and not others.

Secondary harts are released through the common SBI helper rather than a
private copy of the same call.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Justin Hammond <justin@dynam.ac>
2026-08-19 01:40:57 +08:00
..
include risc-v/gd32vw55x: add GigaDevice GD32VW553 port (Wi-Fi 6) 2026-07-16 10:03:16 -03:00
src arch/risc-v/eic7700x: Enter on any hart and run all four. 2026-08-19 01:40:57 +08:00
CMakeLists.txt arch/risk-v: migrate to SPDX identifier 2024-12-02 17:23:25 +08:00
Kconfig risc-v/gd32vw55x: add GigaDevice GD32VW553 port (Wi-Fi 6) 2026-07-16 10:03:16 -03:00