summaryrefslogtreecommitdiff
path: root/src/FreeRTOS/port_cmsis.c
diff options
context:
space:
mode:
authorJean-François Milants <jf@codingfield.com>2021-02-14 13:42:30 (GMT)
committerJean-François Milants <jf@codingfield.com>2021-02-14 13:42:30 (GMT)
commit01e194426d51ffb1a6e9e3162567f29c2a84154d (patch)
tree5ea6eec5bebf4c9245c5c901c205d3c4e12e562c /src/FreeRTOS/port_cmsis.c
parent6420885abb96735e085f3c60b123b0c671a7afb8 (diff)
Fix IRQ management in FreeRTOS to avoid crash and deadlock in BLE stack.
Diffstat (limited to 'src/FreeRTOS/port_cmsis.c')
-rw-r--r--src/FreeRTOS/port_cmsis.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/FreeRTOS/port_cmsis.c b/src/FreeRTOS/port_cmsis.c
index 2fbec43..d8850b5 100644
--- a/src/FreeRTOS/port_cmsis.c
+++ b/src/FreeRTOS/port_cmsis.c
@@ -354,4 +354,24 @@ static void vPortEnableVFP( void )
configASSERT( NVIC_GetPriorityGrouping() <= ulMaxPRIGROUPValue );
}
+uint32_t ulSetInterruptMaskFromISR( void )
+{
+ __asm volatile (
+ " mrs r0, PRIMASK \n"
+ " cpsid i \n"
+ " bx lr "
+ ::: "memory"
+ );
+}
+/*-----------------------------------------------------------*/
+
+void vClearInterruptMaskFromISR( __attribute__( ( unused ) ) uint32_t ulMask )
+{
+ __asm volatile (
+ " msr PRIMASK, r0 \n"
+ " bx lr "
+ ::: "memory"
+ );
+}
+
#endif /* configASSERT_DEFINED */