Спасибо за ответ aaarrr, но, к сожалению, не могу признать, что Ваши безапелляционные суждения прояснили суть вопроса.
Цитата(aaarrr @ Dec 27 2009, 01:02)

Отца русской демократии спасет чтение документации
Вообще-то я документацию не читаю (читают детективы перед сном). Я ее изучаю, причем стараюсь как можно тщательней.
Цитата(aaarrr @ Dec 27 2009, 01:02)

и отказ от идиотских функций AT91F_.
Не собираюсь вступать в дебаты по этому поводу. Могу сказать только, что в данном конкретном случае это ничего не изменит, поскольку для вызова
Код
AT91F_RSTSoftReset( AT91C_BASE_RSTC, AT91C_RSTC_PROCRST |
AT91C_RSTC_PERRST )
и
Код
AT91C_BASE_RSTC->RSTC_RCR = (0xa5UL << 24) | \
AT91C_RSTC_PROCRST | AT91C_RSTC_PERRST;
GCC генерирует
совершенно одинаковый код.
Цитата(aaarrr @ Dec 27 2009, 01:02)

Вы сбрасываете только процессор, вся периферия (в том числе и контроллер прерываний) продолжает как ни в чем не бывало работать.
Ну и что? В чем здесь криминал? Работающая периферия что ли приводит к тому, что возникает исключение "Undefined instruction" на команде безусловного перехода? А сброс периферии и внешний сброс я делаю один раз уже при запуске прошивки. Так удобнее при работе в отладчике.
Цитата(aaarrr @ Dec 27 2009, 01:02)

Сбрасывайте все полностью:
Спасибо, я воспользуюсь Вашим кодом. Сам как-то не догадался поместить сброс внутрь цикла. Да, абстрактно это будет несколько понадежней, чем у меня. Но вот поможет ли?