FIQ interrupts on LP23xx

Hi! I’d like to ask a techincal a question. I’m using a Philips LPC2378 microcontroller, which has a separate register set for handling FIQ interrupts. Does it mean, that this makes context saving upon entry unnecessary, so I needn’t (and shouldn’t) use portSAVE_CONTEXT(), and portRESTORE_CONTEXT() upon entry, and exit from the interrupt handler? Or are there parts of the context that still need to be saved? Is it safe to call FreeRTOS functions from such a ‘plain’ FIQ interrupt? Btw, what’s the difference between the portSAVE/RESTORE combo and using GCC’s builtin __attribute("IRQ"/"FIQ")__  function attributes?

FIQ interrupts on LP23xx

Best not to call API function from the FIQ, and use the standard GCC method of entering the function, not the portSAVE/RESTORE_CONTEXT macros. You might like to check the implementation of the portENTER_CRITICAL() and portEXIT_CRITICAL() macros to ensure they don’t disable and enable FIQ interrupts – unless you want them to. The __attribute__ method does not save the entire context, often contains bugs (depending on the GCC version) and does not save the context in the form expected by the kernel. Regards.