mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-25 15:51:41 +01:00
lib: utils/irqchip: Look up IMSIC data by hart index
This avoids needing to map a hartid to a hart index. 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
d73a4c741c
commit
7f5fa9f9a4
@@ -37,9 +37,9 @@ struct imsic_data {
|
|||||||
|
|
||||||
int imsic_map_hartid_to_data(u32 hartid, struct imsic_data *imsic, int file);
|
int imsic_map_hartid_to_data(u32 hartid, struct imsic_data *imsic, int file);
|
||||||
|
|
||||||
struct imsic_data *imsic_get_data(u32 hartid);
|
struct imsic_data *imsic_get_data(u32 hartindex);
|
||||||
|
|
||||||
int imsic_get_target_file(u32 hartid);
|
int imsic_get_target_file(u32 hartindex);
|
||||||
|
|
||||||
void imsic_local_irqchip_init(void);
|
void imsic_local_irqchip_init(void);
|
||||||
|
|
||||||
|
@@ -119,28 +119,28 @@ int imsic_map_hartid_to_data(u32 hartid, struct imsic_data *imsic, int file)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct imsic_data *imsic_get_data(u32 hartid)
|
struct imsic_data *imsic_get_data(u32 hartindex)
|
||||||
{
|
{
|
||||||
struct sbi_scratch *scratch;
|
struct sbi_scratch *scratch;
|
||||||
|
|
||||||
if (!imsic_ptr_offset)
|
if (!imsic_ptr_offset)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
scratch = sbi_hartid_to_scratch(hartid);
|
scratch = sbi_hartindex_to_scratch(hartindex);
|
||||||
if (!scratch)
|
if (!scratch)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return imsic_get_hart_data_ptr(scratch);
|
return imsic_get_hart_data_ptr(scratch);
|
||||||
}
|
}
|
||||||
|
|
||||||
int imsic_get_target_file(u32 hartid)
|
int imsic_get_target_file(u32 hartindex)
|
||||||
{
|
{
|
||||||
struct sbi_scratch *scratch;
|
struct sbi_scratch *scratch;
|
||||||
|
|
||||||
if (!imsic_file_offset)
|
if (!imsic_file_offset)
|
||||||
return SBI_ENOENT;
|
return SBI_ENOENT;
|
||||||
|
|
||||||
scratch = sbi_hartid_to_scratch(hartid);
|
scratch = sbi_hartindex_to_scratch(hartindex);
|
||||||
if (!scratch)
|
if (!scratch)
|
||||||
return SBI_ENOENT;
|
return SBI_ENOENT;
|
||||||
|
|
||||||
@@ -257,7 +257,7 @@ void imsic_local_irqchip_init(void)
|
|||||||
|
|
||||||
int imsic_warm_irqchip_init(void)
|
int imsic_warm_irqchip_init(void)
|
||||||
{
|
{
|
||||||
struct imsic_data *imsic = imsic_get_data(current_hartid());
|
struct imsic_data *imsic = imsic_get_data(current_hartindex());
|
||||||
|
|
||||||
/* Sanity checks */
|
/* Sanity checks */
|
||||||
if (!imsic || !imsic->targets_mmode)
|
if (!imsic || !imsic->targets_mmode)
|
||||||
|
Reference in New Issue
Block a user