implements halt using WFI if hartid!=0 and multicore

This commit is contained in:
2025-12-14 17:12:42 +01:00
parent be32d2467c
commit 925f08e0b9
2 changed files with 8 additions and 2 deletions

5
env/riscv_vp/init.c vendored
View File

@@ -103,7 +103,10 @@ void __attribute__((weak)) _init() {
while(i < NUM_INTERRUPTS) {
localISR[i++] = default_handler;
}
#endif
#if defined(NUM_HARTS) && NUM_HARTS > 1
for(int i = 1; i < NUM_HARTS; ++i)
set_aclint_msip(aclint, i, 1);
#endif
}

5
env/start.S vendored
View File

@@ -30,11 +30,14 @@ _start:
2:
la t0, trap_entry
csrw mtvec, t0
#ifdef HARTX_WAIT4WFI
#if defined(NUM_HARTS) && NUM_HARTS>1
/* block other cores until hart 0 has finished initialization */
csrr t0, mhartid
beqz t0, hart0_init
/* enable MSI locally */
csrwi mie, 0x8
wfi
csrw mie, zero
j hartx_start
hart0_init:
#endif