diff --git a/include/arch/riscv/arch/smp/ipi.h b/include/arch/riscv/arch/smp/ipi.h index 42392ffd9..eb30f6f11 100644 --- a/include/arch/riscv/arch/smp/ipi.h +++ b/include/arch/riscv/arch/smp/ipi.h @@ -25,17 +25,6 @@ typedef enum { void ipi_send_target(irq_t irq, word_t cpuTargetList); irq_t ipi_get_irq(void); void ipi_clear_irq(irq_t irq); - -#else -static inline irq_t ipi_get_irq(void) -{ - return irqInvalid; -} - -static inline void ipi_clear_irq(irq_t irq) -{ - return; -} #endif #endif /* __ARCH_SMP_IPI_H */ diff --git a/src/arch/riscv/machine/hardware.c b/src/arch/riscv/machine/hardware.c index 02519eb8d..5bddc2af3 100644 --- a/src/arch/riscv/machine/hardware.c +++ b/src/arch/riscv/machine/hardware.c @@ -128,9 +128,11 @@ static irq_t getNewActiveIRQ(void) /* Interrupt priority (high to low ): external -> software -> timer */ if (sip & BIT(SEXTERNAL_IP)) { return plic_get_claim(); +#ifdef ENABLE_SMP_SUPPORT } else if (sip & BIT(SIPI_IP)) { sbi_clear_ipi(); return ipi_get_irq(); +#endif } else if (sip & BIT(STIMER_IP)) { return INTERRUPT_CORE_TIMER; }