1a5537811f
Previously, calling NVIC_SetPriority(IRQn_Type irqn, ....) with the NWP interrupt number of 171 caused a hard fault during a subsequent svc #0 instruction during _Swap(). GNU compiler is generating a bit extension instruction (sxtb) which converts a positive IRQ value argument to a negative value when casting to the CMSIS IRQn_Type enum parameter type. This generates a negative index, which then writes to an SCB control register instead of NVIC register, causing a hard fault later on. This issue only occurs when passing interrupt numbers > 0x80 (eg: 171 (0xab) for the NWP) to the CMSIS NVIC apis. The solution here is simply to redefine IRQn_Type to be an unsigned 32 bit integer, while redefining the CMSIS IRQn_Type enum definitions for interrupts less than zero. Jira: ZEP-1958 Signed-off-by: Gil Pitney <gil.pitney@linaro.org> |
||
---|---|---|
.. | ||
arc | ||
arm | ||
common | ||
nios2 | ||
riscv32 | ||
x86 | ||
xtensa | ||
Kconfig | ||
Makefile |