Цитата
Вопрос в том насколько легко подцепить туда любую другую функцию после этого - тобиш вопрос поддержки проекта и расширения функционала.
Ответ - подцепить нелегко. Но в данном конкретном месте проекта вопрос про "любые другие функции" не стоял. Там была задача достичь максимального быстродействия этого, конкретного, специфического куска кода. Грубо говоря, написать его на ассемблере. Что позволило с меги128 вытянуть пол-мегабитный проприетарный протокол, вместо 128кБит, когда "обеспечивается универсальность и хорошая переносимость кода".
Цитата
Гораздо проще объявить __interrupt без __raw, и без ручных пролога и эпилога,
Разумеется. Это и делается в 99% случаев.
Цитата
тогда он сохранит все регистры из-за используемого внутри косвенного вызова,
Да, именно так. Причем сохранять будет в памяти, используя обычный "сишный" стек. А мой "ручной" пролог-эпилог использует команды MOVW, копирования слов (пар регистров), это самый быстрый способ сохранения-восстановления регистров в системе команд AVR.
Цитата
а саму, вызываемую косвенно, функцию обьявить с __raw.
А это зачем?

Рав нужен только для прерываний. Вот, выдержка из мануала:
"This keyword prevents saving used registers in interrupt functions.
Interrupt functions preserve the contents of all used processor registers at function
entrance and restore them at exit. However, for some very special applications, it can be
desirable to prevent the registers from being saved at function entrance. This can be
accomplished by the use of the keyword __raw."
Вот у меня как раз пример был из "very special applications".
Цитата
Бывают и другие цели, для их достижения приходится жертвовать гибкостью, - в этом случае лучше просто использовать по максимуму возможности конкретной архитектуры и используемого инструментария.
Совершенно верно! Что я и сделал.
Цитата
В контексте IAR под AVR это - вообще не вызывать никаких функций из обработчика прерываний, и иметь всегда строго один обработчик на одно прерывание.
Не пойдет. Не бывает универсальных правильных решений. Тогда мне бы пришлось семафорить, развешивать флажки, статусы и пр. В итоге - раздутость кода и потеря производительности и потребительских свойств проектируемой железки.