Цитата(Sergey1212 @ May 2 2013, 15:50)

Чего тут еще не нужно делать?
вот r0 нужно сохранять-возвращать?
может и вместо bx что-то посоветуете чтобы lr не приходилось менять перед bx чтобы и его не сохранять?
а может чего-то нехватает?
Начнем с того, что нужно сделать, но не сделано: следует сохранить регистры r0-r3 и r12. См. пример FIQ_Handler из сообщения
jcxz.
Весь приведенный фрагмент кода можно благополучно заменить одной командой ldr pc, [pc, #-0xf20],
расположенной по адресу вектора FIQ (0x1c). Только C-обработчик нужно будет снабдить модификатором,
который укажет компилятору на то, что это обработчик FIQ-прерывания (__fiq, __attribute__ ((interrupt( fiq ))) и т.п.,
в зависимости от используемого компилятора). Результат будет тот же, зато в стек не будет записано лишнего.