Насколько я помню такое невозможно сделать в компиляторах, которые не знают что такое стек. Это было актуально для микроконтроллеров PIC16/18(компилятор HI-TECH) в которых стек возврата сделан аппаратно и локальные переменные не располагались на нем. Никаких особых ограничений на этот счет в других компиляторах нет, если не забывать о понятии thread safe функции которое актуально как для вызова функций из прерывания и основной программы так и для вызова функции из разных потоков при использовании операционной системы. Основное правило при этом: не использовать в функции глобальных(статических) объектов, которые могут быть изменены из разных мест, либо запрещать прерывания внутри таких функций для обеспечения ароматности работы с такими объектами. Никаких дополнительных накладных расходов при вызове функции из прерывания нет.