alex1305 (20.05.2005 02:04, просмотров: 1874)
GCC и IRQ Привет всем!
При попытке написать обработчик IRQ на CW как функцию с
__attibute__(( interrupt ("IRQ") ))
наблюдается следующее:
без оптимизации все OK;
включаешь оптимизацию - программа падает по исключению
После раскопок в интернете выяснилось, что в GCC по этому поводу есть bug и он в некоторых случаях неверно генерирует сохранение и извлечение регистров в стек.
После того, как я написал обработчик как __attibute__(( naked )) и руками загнал все регистры в стек все заработало на любом уровне оптимизации.
Сталкивался ли кто-нибудь с подобным?