Недавно столкнулся с проблемой, что ARMGCC 4.1.1 неправильно генерит пролог/эпилог для процедур, объявленных как обработчики прерываний. Начал рыться в форумах и наткнулся на такую рекомендацию: писать свой обработчик на асме, чтобы не связываться с глюками компилятора. Собственно, так и поступил. Если нужен пример - могу скинуть