ARM-режим микропроцессора ARM7TDMI, страница 4

Механизм аварийного прекращения работы может выполняться при подкачке страниц по требованию диспетчера виртуальной памяти. Когда данные по адресу недоступны, диспетчер памяти (MMU) сообщает об аварийном прекращении работы. Обработчик аварийного прекращения работы определяет причину аварийного прекращения работы, устраняет ее и повторять прерванную команду.

После обнаружения причины аварийного прекращения работы, обработчик выполняет ряд действий, независимо от состояния, в котором он находится:

SUBS PC, R14_abt, #4 для аварийного прекращения работы выбора команды.

SUBS PC, R14_abt, #8 для аварийного прекращения работы с данными.

Это восстанавливает и PC и CPSR, и повторяет прерванную команду.

Программные прерывания.

Инструкция программного прерывания (SWI) используется для входа в режим суперпользователя. Обработчик после обработки команды SWI должен вернутся, для выполнения следующей команды (независимо от текущего состояния процессора):

MOV PC, R14_svc

Происходит восстановление PC и CPSR, и возвращается к команде после SWI.

Неопределенные команды.

Когда ARM7TDMI встречает команду, которую он не может обработать, используется ловушка для обработки неопределенной команды. Этот использоваться, для того, чтобы расширить систему команд в THUMB или ARM режиме (т.е. программная эмуляция).

После эмуляции неудавшейся команде, обработчик возвращает управление следующей команде:

MOVS PC, R14_und

Происходит  восстановление CPSR и возврат к команде, следующее после неопределенной.

Таблица адресов векторов исключений.

Приоритеты исключений.

Приоритеты исключений по убыванию.

1. Reset (Сброс).

2. Data abort (Аварийное прекращение работы c данными).

3. FIQ (Быстрые прерывания).

4. IRQ (Прерывания).

5. Prefetch abort Lowest priority (Аварийное прекращение работы при выборе команды). 6. Undefined Instruction, Software interrupt. (Неопределенные команды, программные прерывания).

Не все исключения могут происходить одновременно:

Неопределенные команды (Undefined Instruction) и программное прерывание (Software interrupt) являются взаимоисключающими.

Если аварийное прекращение работы данных происходит в то же самое время, когда  и FIQ, и FIQs (когда флаг F CPSR известен), ARM7TDMI передает управление обработчику аварийного прекращения работы данных и затем продолжается выполнение FIQ.

Сброс.

Когда сигнал nRESET имеет низкий уровень, ARM7TDMI отказывается от команды выполнения и затем продолжает выбирать команды от увеличивающихся адресов слова.

Когда nRESET имеет высокий уровень, ARM7TDMI:

1. Копируя текущие значения PC и CPSR в R14_svc и SPSR_svc, после этого значения PC и SPSR могут быть любыми.

2. Разряды М[4:0] заменяются значениями 10011 (для режима суперпользователя),  устанавливают биты I и F  в CPSR, и очищается бит T CPSR.

3. PC выбирает следующую команду от адреса 0x00.

4. Выполнение продолжается в состоянии ARM.

Формат системы команд.

Таблица. Форматы системы команд ARM.

Поле Условия (Cond)

В состоянии ARM, все команды – являются условными, зависят от состояния CPSR, кодов состояния и поля состояния команды. Это поле (биты 31:28) определяет условия, при которых команда должна быть выполнена. Если состояния флагов C, N, Z, V известны и могу выть рассмотрены как поле условие, то команда будет выполнена, иначе она игнорируется.

Существует 16 условий, но используется только 15, 16 – ое (1111) зарезервировано, и не используется.