forked from Mirrors/opensbi
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 <samuel.holland@sifive.com> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:

committed by
Anup Patel

parent
757f7acafd
commit
949c83a799
@@ -326,7 +326,7 @@ static inline u32 sbi_platform_tlb_fifo_num_entries(const struct sbi_platform *p
|
||||
{
|
||||
if (plat && sbi_platform_ops(plat)->get_tlb_num_entries)
|
||||
return sbi_platform_ops(plat)->get_tlb_num_entries();
|
||||
return sbi_scratch_last_hartindex() + 1;
|
||||
return sbi_hart_count();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -220,9 +220,6 @@ extern u32 sbi_scratch_hart_count;
|
||||
#define sbi_for_each_hartindex(__var) \
|
||||
for (u32 __var = 0; __var < sbi_hart_count(); ++__var)
|
||||
|
||||
/** Get last HART index having a sbi_scratch pointer */
|
||||
#define sbi_scratch_last_hartindex() (sbi_hart_count() - 1)
|
||||
|
||||
/** Check whether a particular HART index is valid or not */
|
||||
#define sbi_hartindex_valid(__hartindex) ((__hartindex) < sbi_hart_count())
|
||||
|
||||
|
@@ -770,11 +770,9 @@ int sbi_domain_finalize(struct sbi_scratch *scratch)
|
||||
|
||||
int sbi_domain_init(struct sbi_scratch *scratch, u32 cold_hartid)
|
||||
{
|
||||
u32 i;
|
||||
int rc;
|
||||
struct sbi_hartmask *root_hmask;
|
||||
struct sbi_domain_memregion *root_memregs;
|
||||
const struct sbi_platform *plat = sbi_platform_ptr(scratch);
|
||||
|
||||
SBI_INIT_LIST_HEAD(&domain_list);
|
||||
|
||||
@@ -855,7 +853,7 @@ int sbi_domain_init(struct sbi_scratch *scratch, u32 cold_hartid)
|
||||
root.next_mode = scratch->next_mode;
|
||||
|
||||
/* Root domain possible and assigned HARTs */
|
||||
for (i = 0; i < plat->hart_count; i++)
|
||||
sbi_for_each_hartindex(i)
|
||||
sbi_hartmask_set_hartindex(i, root_hmask);
|
||||
|
||||
/* Finally register the root domain */
|
||||
|
@@ -238,7 +238,6 @@ static void hsm_device_hart_resume(void)
|
||||
|
||||
int sbi_hsm_init(struct sbi_scratch *scratch, bool cold_boot)
|
||||
{
|
||||
u32 i;
|
||||
struct sbi_scratch *rscratch;
|
||||
struct sbi_hsm_data *hdata;
|
||||
|
||||
@@ -248,7 +247,7 @@ int sbi_hsm_init(struct sbi_scratch *scratch, bool cold_boot)
|
||||
return SBI_ENOMEM;
|
||||
|
||||
/* Initialize hart state data for every hart */
|
||||
for (i = 0; i <= sbi_scratch_last_hartindex(); i++) {
|
||||
sbi_for_each_hartindex(i) {
|
||||
rscratch = sbi_hartindex_to_scratch(i);
|
||||
if (!rscratch)
|
||||
continue;
|
||||
|
@@ -54,7 +54,6 @@ int sbi_scratch_init(struct sbi_scratch *scratch)
|
||||
|
||||
unsigned long sbi_scratch_alloc_offset(unsigned long size)
|
||||
{
|
||||
u32 i;
|
||||
void *ptr;
|
||||
unsigned long ret = 0;
|
||||
struct sbi_scratch *rscratch;
|
||||
@@ -86,7 +85,7 @@ done:
|
||||
spin_unlock(&extra_lock);
|
||||
|
||||
if (ret) {
|
||||
for (i = 0; i <= sbi_scratch_last_hartindex(); i++) {
|
||||
sbi_for_each_hartindex(i) {
|
||||
rscratch = sbi_hartindex_to_scratch(i);
|
||||
if (!rscratch)
|
||||
continue;
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -367,7 +367,7 @@ static u32 generic_tlb_num_entries(void)
|
||||
{
|
||||
if (generic_plat && generic_plat->tlb_num_entries)
|
||||
return generic_plat->tlb_num_entries(generic_plat_match);
|
||||
return sbi_scratch_last_hartindex() + 1;
|
||||
return sbi_hart_count();
|
||||
}
|
||||
|
||||
static int generic_pmu_init(void)
|
||||
|
Reference in New Issue
Block a user