3.6.1.2 Call-isr-prologues Option

The -mcall-isr-prologues option changes how interrupt functions save registers on entry and how those registers are restored when the interrupt routine terminates. It works in a similar way to the -mcall-prologues option, but only affects interrupt functions (ISRs).

If this option is not specified, the registers that need to be preserved by ISRs will be saved and restored by code inside those functions. When an ISR calls another function, there will be a large number of registers that need to be preserved. If the -mcall-isr-prologues option is used, this preservation code is extracted as subroutines that are called at the appropriate points in the ISR.

Use of this option can reduce code size if there is more than one interrupt function that contains a call to another function, but it can increase the code’s execution time.