Cygnal: RETI from non-ISR ok?

adarkar9 wrote on Wednesday, July 12, 2006:

Hi guys,

The Cygnal port contains a RETI instruction at the end of the "portRESTORE_CONTEXT()" macro.  This is great if you are executing the real-time tick ISR when you call "portRESTORE_CONTEXT()", but what if you are not in an ISR?  This would be the case any time you call "taskYIELD()".  I suppose the Cygnal part does not care if you RETI from non-ISR code, but is that documented?  I cannot find it anywhere.  The effect on the stack for both RET and RETI is the same, but RETI also effects the interrupt control logic.

Is RETI safe for non-ISR use or do we need a separate version of "portRESTORE_CONTEXT()"?

Thanks in advance.

nobody wrote on Thursday, July 13, 2006:

The Yield normally sets up the system to look just like an interrupt has occurred, so the same code can be used from both.