diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h index 6642816d..648b953b 100644 --- a/include/sbi/sbi_platform.h +++ b/include/sbi/sbi_platform.h @@ -82,7 +82,7 @@ struct sbi_platform { int (*console_init)(void); /** Initialize the platform interrupt controller */ - int (*irqchip_init)(u32 hartid, bool cold_boot); + int (*irqchip_init)(bool cold_boot); /** Inject IPI to a target HART */ void (*ipi_inject)(u32 target_hart); @@ -308,16 +308,15 @@ static inline int sbi_platform_console_init(struct sbi_platform *plat) * Initialize the platform interrupt controller for given HART * * @param plat pointer to struct sbi_platform - * @param hartid HART ID * @param cold_boot whether cold boot (TRUE) or warm_boot (FALSE) * * @return 0 on success and negative error code on failure */ static inline int sbi_platform_irqchip_init(struct sbi_platform *plat, - u32 hartid, bool cold_boot) + bool cold_boot) { if (plat && plat->irqchip_init) - return plat->irqchip_init(hartid, cold_boot); + return plat->irqchip_init(cold_boot); return 0; } diff --git a/lib/sbi_init.c b/lib/sbi_init.c index ad1ae8a2..f7839927 100644 --- a/lib/sbi_init.c +++ b/lib/sbi_init.c @@ -45,7 +45,7 @@ static void __noreturn init_coldboot(struct sbi_scratch *scratch, u32 hartid) if (rc) sbi_hart_hang(); - rc = sbi_platform_irqchip_init(plat, hartid, TRUE); + rc = sbi_platform_irqchip_init(plat, TRUE); if (rc) sbi_hart_hang(); @@ -111,7 +111,7 @@ static void __noreturn init_warmboot(struct sbi_scratch *scratch, u32 hartid) if (rc) sbi_hart_hang(); - rc = sbi_platform_irqchip_init(plat, hartid, FALSE); + rc = sbi_platform_irqchip_init(plat, FALSE); if (rc) sbi_hart_hang(); diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c index 4eb1d997..55e8d909 100644 --- a/platform/kendryte/k210/platform.c +++ b/platform/kendryte/k210/platform.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -35,9 +36,10 @@ static char k210_console_getc(void) return uarths_getc(); } -static int k210_irqchip_init(u32 hartid, bool cold_boot) +static int k210_irqchip_init(bool cold_boot) { int rc; + u32 hartid = sbi_current_hartid(); if (cold_boot) { rc = plic_cold_irqchip_init(PLIC_BASE_ADDR, diff --git a/platform/qemu/sifive_u/platform.c b/platform/qemu/sifive_u/platform.c index a386765e..281b2656 100644 --- a/platform/qemu/sifive_u/platform.c +++ b/platform/qemu/sifive_u/platform.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -72,9 +73,10 @@ static int sifive_u_console_init(void) SIFIVE_U_PERIPH_CLK, 115200); } -static int sifive_u_irqchip_init(u32 hartid, bool cold_boot) +static int sifive_u_irqchip_init(bool cold_boot) { int rc; + u32 hartid = sbi_current_hartid(); if (cold_boot) { rc = plic_cold_irqchip_init(SIFIVE_U_PLIC_ADDR, diff --git a/platform/qemu/virt/platform.c b/platform/qemu/virt/platform.c index 31bff482..65b36a26 100644 --- a/platform/qemu/virt/platform.c +++ b/platform/qemu/virt/platform.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -73,9 +74,10 @@ static int virt_console_init(void) VIRT_UART_BAUDRATE, 0, 1); } -static int virt_irqchip_init(u32 hartid, bool cold_boot) +static int virt_irqchip_init(bool cold_boot) { int rc; + u32 hartid = sbi_current_hartid(); if (cold_boot) { rc = plic_cold_irqchip_init(VIRT_PLIC_ADDR, diff --git a/platform/sifive/fu540/platform.c b/platform/sifive/fu540/platform.c index c13be64e..c9bdf41e 100644 --- a/platform/sifive/fu540/platform.c +++ b/platform/sifive/fu540/platform.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -124,9 +125,10 @@ static int fu540_console_init(void) peri_in_freq, FU540_UART_BAUDRATE); } -static int fu540_irqchip_init(u32 hartid, bool cold_boot) +static int fu540_irqchip_init(bool cold_boot) { int rc; + u32 hartid = sbi_current_hartid(); if (cold_boot) { rc = plic_cold_irqchip_init(FU540_PLIC_ADDR,