Сделал обработку исключений переполнения регистрового окна. Вложенные вызовы заработали. Сейчас тестирую.
Попутно заставил работать штатные malloc/free, strcpy/sprintf. Пришлось дописать некоторые вещи (__getreent, _sbrk, _sbrk_r), потому что часть стандартных библиотек этого компилятора ориентированы на RTOS (многозадачность) и для BareMetal не годятся.