mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-08-30 05:38:38 +08:00
bsps/riscv: Fix riscv_get_hart_index_by_phandle()
Take a non-zero RISCV_BOOT_HARTID into account.
This commit is contained in:
@@ -46,7 +46,7 @@ void bsp_start_on_secondary_processor(Per_CPU_Control *cpu_self)
|
||||
|
||||
uint32_t _CPU_SMP_Initialize(void)
|
||||
{
|
||||
return riscv_hart_count - RISCV_BOOT_HARTID;
|
||||
return riscv_hart_count;
|
||||
}
|
||||
|
||||
bool _CPU_SMP_Start_processor(uint32_t cpu_index)
|
||||
|
||||
@@ -111,6 +111,14 @@ static void riscv_find_harts(void)
|
||||
|
||||
hart_index = fdt32_to_cpu(val[0]);
|
||||
|
||||
#if RISCV_BOOT_HARTID != 0
|
||||
if (hart_index < RISCV_BOOT_HARTID) {
|
||||
continue;
|
||||
}
|
||||
|
||||
hart_index -= RISCV_BOOT_HARTID;
|
||||
#endif
|
||||
|
||||
if (hart_index >= RTEMS_ARRAY_SIZE(riscv_hart_phandles)) {
|
||||
continue;
|
||||
}
|
||||
@@ -166,7 +174,7 @@ uint32_t riscv_get_hart_index_by_phandle(uint32_t phandle)
|
||||
|
||||
for (hart_index = 0; hart_index < riscv_hart_count; ++hart_index) {
|
||||
if (riscv_hart_phandles[hart_index] == phandle) {
|
||||
return hart_index;
|
||||
return hart_index + RISCV_BOOT_HARTID;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user