Purpose of SSI and SWI ?

simointe wrote on Thursday, November 17, 2016:

In the doc, it is said: « FreeRTOS requires exclusive use of RTI channel 0, SWI instructions, and System Software Interrupt (SSI) 0 ».
I understand for the RTI of course, but what is the purpose of SWI and SSI ?

edwards3 wrote on Thursday, November 17, 2016:

Greping for SWI I see #pragma SWI_ALIAS( vPortYield, 0 ) so SWI is used for yield.

Greping for SSI I see #define portYIELD_WITHIN_API() { portSYS_SSIR1_REG = portSYS_SSIR1_SSKEY; asm( " DSB " ); asm( " ISB " ); } and #define portYIELD_FROM_ISR( x ) if( x != pdFALSE ){ portSYS_SSIR1_REG = portSYS_SSIR1_SSKEY; ( void ) portSYS_SSIR1_REG; } so this is also used for yielding. So it looks like an application yield is using SWI and RTOS yield is using SSI.