diff --git a/arch/mips/src/common/up_internal.h b/arch/mips/src/common/up_internal.h index 4fa8eacbf4a..6ba82f415f9 100644 --- a/arch/mips/src/common/up_internal.h +++ b/arch/mips/src/common/up_internal.h @@ -237,6 +237,7 @@ void up_sigdeliver(void); bool up_pending_irq(int irq); void up_clrpend_irq(int irq); +void up_clrpend_sw0(void); /* DMA */ diff --git a/arch/mips/src/mips32/up_swint0.c b/arch/mips/src/mips32/up_swint0.c index 600dbad2adb..35e65f63fe6 100644 --- a/arch/mips/src/mips32/up_swint0.c +++ b/arch/mips/src/mips32/up_swint0.c @@ -299,15 +299,9 @@ int up_swint0(int irq, FAR void *context, FAR void *arg) } #endif - /* Clear the pending software interrupt 0 in the PIC32 interrupt block. - * REVISIT: Does this PIC32 logic really have to be in the MIPS32 code? - */ + /* Clear the pending software interrupt 0 */ -#if defined(CONFIG_ARCH_CHIP_PIC32MX) - up_clrpend_irq(PIC32MX_IRQSRC_CS0); -#elif defined(CONFIG_ARCH_CHIP_PIC32MZ) - up_clrpend_irq(PIC32MZ_IRQ_CS0); -#endif + up_clrpend_sw0(); /* And reset the software interrupt bit in the MIPS CAUSE register */ diff --git a/arch/mips/src/pic32mx/pic32mx-irq.c b/arch/mips/src/pic32mx/pic32mx-irq.c index 434369b62af..96f044f98f8 100644 --- a/arch/mips/src/pic32mx/pic32mx-irq.c +++ b/arch/mips/src/pic32mx/pic32mx-irq.c @@ -412,6 +412,19 @@ void up_clrpend_irq(int irq) } } +/**************************************************************************** + * Name: up_clrpend_sw0 + * + * Description: + * Clear a pending Software Interrupt. + * + ****************************************************************************/ + +void up_clrpend_sw0(void) +{ + up_clrpend_irq(PIC32MX_IRQSRC_CS0); +} + /**************************************************************************** * Name: up_prioritize_irq * diff --git a/arch/mips/src/pic32mz/pic32mz-irq.c b/arch/mips/src/pic32mz/pic32mz-irq.c index 124029a9ed8..80b0bdbf297 100644 --- a/arch/mips/src/pic32mz/pic32mz-irq.c +++ b/arch/mips/src/pic32mz/pic32mz-irq.c @@ -399,6 +399,19 @@ void up_clrpend_irq(int irq) } } +/**************************************************************************** + * Name: up_clrpend_sw0 + * + * Description: + * Clear a pending Software Interrupt. + * + ****************************************************************************/ + +void up_clrpend_sw0(void) +{ + up_clrpend_irq(PIC32MZ_IRQ_CS0); +} + /**************************************************************************** * Name: up_prioritize_irq *