diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/riscv/Kconfig | 3 | ||||
-rw-r--r-- | src/arch/riscv/smp.c | 9 | ||||
-rw-r--r-- | src/soc/sifive/fu540/Kconfig | 2 |
3 files changed, 7 insertions, 7 deletions
diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig index ae83be855b..9fa43bc9f2 100644 --- a/src/arch/riscv/Kconfig +++ b/src/arch/riscv/Kconfig @@ -33,8 +33,5 @@ config RISCV_USE_ARCH_TIMER bool default n -config RISCV_HART_NUM - int - config RISCV_WORKING_HARTID int diff --git a/src/arch/riscv/smp.c b/src/arch/riscv/smp.c index 8d07d39ded..8942ec5b93 100644 --- a/src/arch/riscv/smp.c +++ b/src/arch/riscv/smp.c @@ -55,7 +55,7 @@ void smp_pause(int working_hartid) /* waiting for other Hart to enter the halt */ do { barrier(); - } while (SYNCB + 1 < CONFIG_RISCV_HART_NUM); + } while (SYNCB + 1 < CONFIG_MAX_CPUS); /* initialize for the next call */ SYNCA = 0; @@ -72,14 +72,17 @@ void smp_resume(void (*fn)(void *), void *arg) if (fn == NULL) die("must pass a non-null function pointer\n"); - for (int i = 0; i < CONFIG_RISCV_HART_NUM; i++) { + for (int i = 0; i < CONFIG_MAX_CPUS; i++) { OTHER_HLS(i)->entry.fn = fn; OTHER_HLS(i)->entry.arg = arg; } - for (int i = 0; i < CONFIG_RISCV_HART_NUM; i++) + for (int i = 0; i < CONFIG_MAX_CPUS; i++) if (i != hartid) set_msip(i, 1); + if (HLS()->entry.fn == NULL) + die("entry fn not set\n"); + HLS()->entry.fn(HLS()->entry.arg); } diff --git a/src/soc/sifive/fu540/Kconfig b/src/soc/sifive/fu540/Kconfig index 72305d67a9..795f51b4d6 100644 --- a/src/soc/sifive/fu540/Kconfig +++ b/src/soc/sifive/fu540/Kconfig @@ -39,7 +39,7 @@ config RISCV_CODEMODEL string default "medany" -config RISCV_HART_NUM +config MAX_CPUS int default 5 |