summaryrefslogtreecommitdiff
path: root/lib/utils
diff options
context:
space:
mode:
authorSamuel Holland <[email protected]>2025-02-20 10:42:30 -0800
committerAnup Patel <[email protected]>2025-03-24 17:57:20 +0530
commit949c83a799e91cb57903932a84ec63fd14de5dc6 (patch)
tree189090d89cf1be9bec3f277c7d50e267d8d4d415 /lib/utils
parent757f7acafdd25e0ff71a444bbe9f670bc33a3b7f (diff)
lib: sbi: Use sbi_hart_count() and sbi_for_each_hartindex()
Simplify the code and improve consistency by using the new macros where possible. sbi_hart_count() obsoletes sbi_scratch_last_hartindex(). Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
Diffstat (limited to 'lib/utils')
-rw-r--r--lib/utils/irqchip/fdt_irqchip_plic.c5
-rw-r--r--lib/utils/irqchip/plic.c8
-rw-r--r--lib/utils/reset/fdt_reset_atcwdt200.c5
3 files changed, 6 insertions, 12 deletions
diff --git a/lib/utils/irqchip/fdt_irqchip_plic.c b/lib/utils/irqchip/fdt_irqchip_plic.c
index 494358d8..65a9de15 100644
--- a/lib/utils/irqchip/fdt_irqchip_plic.c
+++ b/lib/utils/irqchip/fdt_irqchip_plic.c
@@ -12,7 +12,6 @@
#include <sbi/riscv_io.h>
#include <sbi/sbi_error.h>
#include <sbi/sbi_heap.h>
-#include <sbi/sbi_platform.h>
#include <sbi/sbi_scratch.h>
#include <sbi_utils/fdt/fdt_helper.h>
#include <sbi_utils/irqchip/fdt_irqchip.h>
@@ -66,12 +65,10 @@ static int irqchip_plic_update_context_map(const void *fdt, int nodeoff,
static int irqchip_plic_cold_init(const void *fdt, int nodeoff,
const struct fdt_match *match)
{
- struct sbi_scratch *scratch = sbi_scratch_thishart_ptr();
- const struct sbi_platform *plat = sbi_platform_ptr(scratch);
int rc;
struct plic_data *pd;
- pd = sbi_zalloc(PLIC_DATA_SIZE(plat->hart_count));
+ pd = sbi_zalloc(PLIC_DATA_SIZE(sbi_hart_count()));
if (!pd)
return SBI_ENOMEM;
diff --git a/lib/utils/irqchip/plic.c b/lib/utils/irqchip/plic.c
index 8b2190f8..581a41bb 100644
--- a/lib/utils/irqchip/plic.c
+++ b/lib/utils/irqchip/plic.c
@@ -135,7 +135,7 @@ void plic_suspend(void)
if (!data_word)
return;
- for (u32 h = 0; h <= sbi_scratch_last_hartindex(); h++) {
+ sbi_for_each_hartindex(h) {
u32 context_id = plic->context_map[h][PLIC_S_CONTEXT];
if (context_id < 0)
@@ -166,7 +166,7 @@ void plic_resume(void)
if (!data_word)
return;
- for (u32 h = 0; h <= sbi_scratch_last_hartindex(); h++) {
+ sbi_for_each_hartindex(h) {
u32 context_id = plic->context_map[h][PLIC_S_CONTEXT];
if (context_id < 0)
@@ -236,7 +236,7 @@ int plic_cold_irqchip_init(struct plic_data *plic)
if (plic->flags & PLIC_FLAG_ENABLE_PM) {
unsigned long data_size = 0;
- for (u32 i = 0; i <= sbi_scratch_last_hartindex(); i++) {
+ sbi_for_each_hartindex(i) {
if (plic->context_map[i][PLIC_S_CONTEXT] < 0)
continue;
@@ -270,7 +270,7 @@ int plic_cold_irqchip_init(struct plic_data *plic)
if (ret)
return ret;
- for (u32 i = 0; i <= sbi_scratch_last_hartindex(); i++) {
+ sbi_for_each_hartindex(i) {
if (plic->context_map[i][PLIC_M_CONTEXT] < 0 &&
plic->context_map[i][PLIC_S_CONTEXT] < 0)
continue;
diff --git a/lib/utils/reset/fdt_reset_atcwdt200.c b/lib/utils/reset/fdt_reset_atcwdt200.c
index 97ec7431..2304582a 100644
--- a/lib/utils/reset/fdt_reset_atcwdt200.c
+++ b/lib/utils/reset/fdt_reset_atcwdt200.c
@@ -12,7 +12,6 @@
#include <sbi/sbi_ecall_interface.h>
#include <sbi/sbi_error.h>
#include <sbi/sbi_hart.h>
-#include <sbi/sbi_platform.h>
#include <sbi/sbi_system.h>
#include <sbi_utils/fdt/fdt_driver.h>
#include <sbi_utils/fdt/fdt_helper.h>
@@ -59,9 +58,7 @@ static int ae350_system_reset_check(u32 type, u32 reason)
static void ae350_system_reset(u32 type, u32 reason)
{
- const struct sbi_platform *plat = sbi_platform_thishart_ptr();
-
- for (int i = 0; i < sbi_platform_hart_count(plat); i++)
+ sbi_for_each_hartindex(i)
if (smu_set_reset_vector(&smu, FLASH_BASE, i))
goto fail;