Сборка MIPS, чтобы определить, произошло ли аппаратное прерывание ввода-вывода? - PullRequest
4 голосов
/ 27 апреля 2010

В моем обработчике исключений MIPS32 я хочу определить, было ли исключение вызвано прерыванием ввода-вывода. Должны быть проверены биты регистра причины 2-6 включительно. Какой код сборки MIPS определяет это?

1 Ответ

2 голосов
/ 28 мая 2010

Вы должны маскировать каждый бит, чтобы проверить, откуда пришло прерывание. Процедура обработчика исключений показана здесь: ExcHandler http://i47.tinypic.com/5yt47c.png Вы можете увидеть руководство для вашего оборудования, в котором говорится, откуда пришло прерывание, и часто есть коды ошибок, которые вы можете загрузить в регистр и сравнить с регистром EPIE, чтобы увидеть, было ли исключение ловушкой или прерыванием, не забудьте сбросить EPIE регистр состояния ошибки) перед возвратом из ошибки и включением битов прерываний в регистре управления процессорами, чтобы аппаратные средства могли выполнять прерывания.

Это схема, которую я использовал при кодировании обработчика исключений для Nios II, процедура должна быть аналогичной для MIPS32.

Язык ассемблера MIPS , MIPS: прерывания и исключения, стр. 22 * ​​1010 *

...