diff --git a/core/arch/riscv/riscv.mk b/core/arch/riscv/riscv.mk index db879e59a08..0d478c597b9 100644 --- a/core/arch/riscv/riscv.mk +++ b/core/arch/riscv/riscv.mk @@ -70,6 +70,10 @@ ifeq ($(CFG_RISCV_WITH_M_MODE_SM),y) $(call force,CFG_RISCV_SBI,y) endif +ifeq ($(CFG_RISCV_PLIC)-$(call cfg-one-enabled,CFG_RISCV_APLIC CFG_RISCV_APLIC_MSI CFG_RISCV_IMSIC),y-y) +$(error PLIC is incompatible with AIA) +endif + # Disable unsupported and other arch-specific flags $(call force,CFG_CORE_FFA,n) $(call force,CFG_SECURE_PARTITION,n) diff --git a/core/drivers/aplic_direct.c b/core/drivers/aplic_direct.c index 7dc511556c1..b07179be27d 100644 --- a/core/drivers/aplic_direct.c +++ b/core/drivers/aplic_direct.c @@ -192,7 +192,7 @@ void aplic_dump_state(void) { } -void* get_aplic_data(void) +struct aplic_data *get_aplic_data(void) { return NULL; } diff --git a/core/drivers/aplic_msi.c b/core/drivers/aplic_msi.c index 61e0fc8199c..0189fd59f49 100644 --- a/core/drivers/aplic_msi.c +++ b/core/drivers/aplic_msi.c @@ -157,7 +157,7 @@ void aplic_dump_state(void) { } -struct aplic_data* get_aplic_data(void) +struct aplic_data *get_aplic_data(void) { return &aplic_data; -} \ No newline at end of file +} diff --git a/core/drivers/imsic.c b/core/drivers/imsic.c index 9618e8be668..638e2a0766f 100644 --- a/core/drivers/imsic.c +++ b/core/drivers/imsic.c @@ -286,8 +286,8 @@ TEE_Result fdt_parse_imsic_node(const void *fdt, int nodeoff, if (val && len > 0) imsic->hart_index_bits = fdt32_to_cpu(*val); else - imsic->hart_index_bits = 32 - - __builtin_clz(CFG_TEE_CORE_NB_CORE - 1); + imsic->hart_index_bits = + 32 - __builtin_clz(CFG_TEE_CORE_NB_CORE - 1); val = fdt_getprop(fdt, nodeoff, "riscv,group-index-bits", &len); if (val && len > 0) @@ -352,7 +352,7 @@ void imsic_it_handle(void) if (id == IMSIC_IPI_ID) DMSG("Interprocessor interrupt"); - if (id > 1 && id <= imsic->num_ids) + if (id > IMSIC_IPI_ID && id <= imsic->num_ids) interrupt_call_handlers(&imsic->chip, id); else DMSG("ignoring interrupt %" PRIu32, id); @@ -388,3 +388,7 @@ void imsic_init(paddr_t imsic_base_pa) interrupt_main_init(&imsic->chip); } + +void imsic_dump_state(void) +{ +} diff --git a/core/include/drivers/aplic_priv.h b/core/include/drivers/aplic_priv.h index 294edea3ad8..8b986498f6b 100644 --- a/core/include/drivers/aplic_priv.h +++ b/core/include/drivers/aplic_priv.h @@ -104,6 +104,6 @@ TEE_Result aplic_init_from_device_tree(struct aplic_data *aplic); TEE_Result aplic_set_source_mode(struct aplic_data *aplic, uint32_t source, uint32_t type); -struct aplic_data* get_aplic_data(void); +struct aplic_data *get_aplic_data(void); #endif /* __DRIVERS_APLIC_PRIV_H */ diff --git a/core/include/drivers/imsic.h b/core/include/drivers/imsic.h index 47c9a285047..67bbaebed0b 100644 --- a/core/include/drivers/imsic.h +++ b/core/include/drivers/imsic.h @@ -26,7 +26,7 @@ struct imsic_data { uint32_t hart_index_bits; uint32_t group_index_bits; uint32_t group_index_shift; - struct aplic_data* aplic; + struct aplic_data *aplic; struct itr_chip chip; };