arch/arm/rp23xx: Set priority for svcall exception

Fixes https://github.com/apache/nuttx/issues/15503.

Signed-off-by: Ian Douglas Scott <ian@iandouglasscott.com>
This commit is contained in:
Ian Douglas Scott 2025-01-12 20:18:55 -08:00 committed by Xiang Xiao
parent 5f4a15b690
commit 351db57e35

View file

@ -181,6 +181,27 @@ static int rp23xx_reserved(int irq, void *context, void *arg)
} }
#endif #endif
/****************************************************************************
* Name: rp23xx_prioritize_syscall
*
* Description:
* Set the priority of an exception. This function may be needed
* internally even if support for prioritized interrupts is not enabled.
*
****************************************************************************/
static inline void rp23xx_prioritize_syscall(int priority)
{
uint32_t regval;
/* SVCALL is system handler 11 */
regval = getreg32(NVIC_SYSH8_11_PRIORITY);
regval &= ~NVIC_SYSH_PRIORITY_PR11_MASK;
regval |= (priority << NVIC_SYSH_PRIORITY_PR11_SHIFT);
putreg32(regval, NVIC_SYSH8_11_PRIORITY);
}
/**************************************************************************** /****************************************************************************
* Name: rp23xx_clrpend * Name: rp23xx_clrpend
* *
@ -276,6 +297,8 @@ void up_irqinitialize(void)
irq_attach(RP23XX_IRQ_SVCALL, arm_svcall, NULL); irq_attach(RP23XX_IRQ_SVCALL, arm_svcall, NULL);
irq_attach(RP23XX_IRQ_HARDFAULT, arm_hardfault, NULL); irq_attach(RP23XX_IRQ_HARDFAULT, arm_hardfault, NULL);
rp23xx_prioritize_syscall(NVIC_SYSH_SVCALL_PRIORITY);
/* Attach all other processor exceptions (except reset and sys tick) */ /* Attach all other processor exceptions (except reset and sys tick) */
#ifdef CONFIG_DEBUG_FEATURES #ifdef CONFIG_DEBUG_FEATURES