Поведение процессора при выполнении команды в зависимости от режима, в котором он находится, страница 3

6.2.1 Векторы исключений

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

Вектор исключения определяется по своему 8-битному номеру,  генерируемому при обработке исключения. Адрес вектора вычисляется как сумма базового регистра  векторов  исключений  и  смещения, равного номеру вектора, умноженному на 4. Кроме вектора сброса, расположенного в программном пространстве супервизора, все векторы исключений располагаются в пространстве данных  супервизора. В зависимости от причины, вызвавшей исключение, номер  вектора поступает извне или генерируется внутренним образом.  Таблица 6-2 описывает назначение векторов.

Таблица 6-2. Назначение векторов исключений

--------T------------------T----------------------------------¬

¦ номер ¦ смещение вектора ¦                                  ¦

¦вектора+--------T---------+          назначение              ¦

¦       ¦  HEX   ¦простран-¦                                  ¦

¦       ¦        ¦  ство   ¦                                  ¦

+-------+--------+---------+----------------------------------+

¦  0    ¦  000   ¦   SP    ¦    сброс: начальное значение ISP ¦

¦  1    ¦  004   ¦   SP    ¦    сброс: начальное значение PC  ¦

¦  2    ¦  008   ¦   SD    ¦    ошибка шины                   ¦

¦  3    ¦  00C   ¦   SD    ¦    ошибка адреса                 ¦

¦  4    ¦  010   ¦   SD    ¦    запрещенная команда           ¦

¦  5    ¦  014   ¦   SD    ¦    деление на нуль               ¦

¦  6    ¦  018   ¦   SD    ¦    команды CHK,CHK2              ¦

¦  7    ¦  01C   ¦   SD    ¦    команды cpTRAPcc,TRAPcc,TRAPV ¦

¦  8    ¦  020   ¦   SD    ¦    нарушение привилегированности ¦

¦  9    ¦  024   ¦   SD    ¦    трассировка                   ¦

¦ 10    ¦  028   ¦   SD    ¦    эмулятор кода  1010           ¦

¦ 11    ¦  02C   ¦   SD    ¦    эмулятор кода  1111           ¦

¦ 12    ¦  030   ¦   SD    ¦    (неопределено,зарезервировано)¦

¦ 13    ¦  034   ¦   SD    ¦    нарушение протокола           ¦

¦       ¦        ¦         ¦      сопроцессора                ¦

¦ 14    ¦  038   ¦   SD    ¦    ошибка формата                ¦

¦ 15    ¦  03C   ¦   SD    ¦    неинициализированное прерыван.¦

¦ 16    ¦  040   ¦   SD    ¦    |  (неопределено,             ¦

¦ ...   ¦        ¦         ¦    |   зарезервировано)          ¦

¦ 23    ¦  05C   ¦   SD    ¦    |                             ¦

¦ 24    ¦  060   ¦   SD    ¦    ложное прерывание             ¦

¦ 25    ¦  064   ¦   SD    ¦    автовектор прерыв. 1 уровня   ¦

¦ 26    ¦  068   ¦   SD    ¦    автовектор прерыв. 2 уровня   ¦

¦ 27    ¦  06C   ¦   SD    ¦    автовектор прерыв. 3 уровня   ¦

¦ 28    ¦  070   ¦   SD    ¦    автовектор прерыв. 4 уровня   ¦

¦ 29    ¦  074   ¦   SD    ¦    автовектор прерыв. 5 уровня   ¦

¦ 30    ¦  078   ¦   SD    ¦    автовектор прерыв. 6 уровня   ¦

¦ 31    ¦  07C   ¦   SD    ¦    автовектор прерыв. 7 уровня   ¦

¦ 32    ¦  080   ¦   SD    ¦    |  векторы                    ¦

¦ ...   ¦        ¦         ¦    |  команд TRAP #0-15          ¦

¦ 47    ¦  0BC   ¦   SD    ¦    |                             ¦

¦ 48    ¦  0C0   ¦   SD    ¦    FPCP переход или установка    ¦

¦       ¦        ¦         ¦      по неопределенности         ¦

¦ 49    ¦  0C4   ¦   SD    ¦    FPCP неточный результат       ¦

¦ 50    ¦  0C8   ¦   SD    ¦    FPCP деление на нуль          ¦

¦ 51    ¦  0CC   ¦   SD    ¦    FPCP исчезновение порядка     ¦

¦ 52    ¦  0D0   ¦   SD    ¦    FPCP ошибка операнда          ¦

¦ 53    ¦  0D4   ¦   SD    ¦    FPCP переполнение             ¦

¦ 54    ¦  0D8   ¦   SD    ¦    FPCP сигнальное NAN (не-число)¦

¦ 55    ¦  0DC   ¦   SD    ¦    (неопределено,зарезервировано)¦

¦ 56    ¦  0E0   ¦   SD    ¦    PMMU конфигурация             ¦

¦ 57    ¦  0E4   ¦   SD    ¦    PMMU запрещенная операция     ¦

¦ 58    ¦  0E8   ¦   SD    ¦    PMMU нарушение уровня доступа ¦

¦ 59    ¦  0EC   ¦   SD    ¦    |   (неопределено,            ¦

¦ ...   ¦        ¦         ¦    |     зарезервировано)        ¦

¦ 63    ¦  0FC   ¦   SD    ¦    |                             ¦

¦       ¦        ¦         ¦                                  ¦

¦ 64    ¦  100   ¦   SD    ¦    |    определяются             ¦

¦ ...   ¦        ¦         ¦    |      пользователем (192)    ¦

¦ 255   ¦  3FC   ¦   SD    ¦    |                             ¦

L-------+--------+---------+----------------------------------SP = программное пространство супервизора

SD = пространство данных супервизора

FPCP = сопроцессор вещественной арифметики

PMMU = устройство управления страничной памятью

Как показано в таблице 6-2, 192 вектора зарезервировано для определения пользователем и  64  отведены для  процессора. Однако первые 64 вектора не защищены, поэтому по усмотрению  разработчика системы внешние устройства могут использовать векторы, зарезервированные для внутренних целей.

6.2.2 Стековое окно исключения

При обработке исключения наиболее подверженная изменениям часть текущего контекста процессора сохраняется в вершине  стека  супервизора. Этот контекст  объединяют  в  структуру,  называемую

"стековым окном исключения". В нее обязательно включаются  значения регистра состояния и программного счетчика, а также  смещение вектора текущего  исключения.  Процессор  маркирует  окно спецификатором его формата. Поле формата окна позволяет команде

RTE определить, какая информация находится в  стеке,  правильно восстановить контекст и освободить место в стеке. Рис. 6-1  иллюстрирует общий формат стекового окна исключения. Полный  список форматов приведен в 6.5 ФОРМАТЫ  СТЕКОВЫХ  ОКОН  ИСКЛЮЧЕНИЙ

MC68020.

Рис. 6-1. Стековое окно исключения

15        12                                     0

-------------------------------------------------¬

SP --->¦                регистр состояния               ¦

+------------------------------------------------+