17.2.2 Interrupt Pragma

Note: The interrupt pragma is provided only for compatibility when porting code from other compilers. The interrupt function attribute is the preferred and more common way to write an interrupt service routine.
# pragma interrupt function-name IPLn[AUTO|SOFT|SRS] [vector [@]vector-number [, vector-number-list]]
# pragma interrupt function-name  single [vector [@] 0 

Where n is in the range of 0..7, inclusive.

The IPLn[AUTO|SOFT|SRS] IPL specifier may be all uppercase or all lowercase.

The function definition for a handler function indicated by an interrupt pragma must follow in the same translation unit as the pragma itself.

The interrupt attribute will also indicate that a function definition is an interrupt handler. It is functionally equivalent to the interrupt pragma.

For example, the definitions of foo below both indicate that it is an interrupt handler function for an interrupt of priority 4 that uses software context saving.

#pragma interrupt foo IPL4SOFT
void foo (void)

is functionally equivalent to

void __attribute__ ((interrupt(IPL4SOFT))) foo (void)