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

M в слове состояния был установлен, то он сбрасывается и в вершине стека прерываний формируется  временное  окно  исключения.

Это второе окно содержит те же значения программного счетчика и смещения вектора исключения, что и окно в  основном  стеке,  но имеет номер формата $1 вместо $0 или $9. Значение регистра состояния будет таким же, как и то, что помещено в основной  стек, но с установленными в единицу битами M и S. В программный счетчик загружается вектор исключения с ранее сформированным  номером, после чего, уже в процедуре обслуживания  прерывания,  возобновляется обычное выполнение команд.

Особый случай  составляет  седьмой  уровень  приоритета.  Маска уровня прерываний не позволяет  запретить  прерывания  седьмого уровня, чем обуславливается возможность немаскируемых  прерываний. Запрос прерывания генерируется всякий раз,  когда  уровень запроса изменяется с меньшего до седьмого уровня.Следует  обратить внимание на то, что прерывание уровня  7  может  возникать при сравнении уровней, если уровень запроса и маска уровня равны 7, а маска приоритета изменяется на меньший уровень  (например, в результате команды MOVE to SR или RTE).

Большинство периферийных устройств семейства M68000 обеспечивает возможность использования программируемых  номеров  векторов прерываний в механизме запроса/подтверждения  прерываний.  Если этот номер не инициализирован после сброса, а устройство должно подтвердить запрос прерывания, то оно возвращает номер  вектора для неинициализированного вектора прерывания, $0F.

6.3.11 Возврат из исключения

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

Средством такого восстановления для любых исключений служит команда RTE.

При выполнении команды RTE процессор анализирует окно в вершине активного стека супервизора с тем, чтобы определить,  имеет  ли оно допустимый формат и какого  рода  восстановление  контекста должно быть выполнено.  Действия,  предпринимаемые  процессором для каждого типа стекового окна, описаны ниже. Форматы окон см.

в 6.5 ФОРМАТЫ СТЕКОВЫХ ОКОН ИСКЛЮЧЕНИЙ MC68020.

В случае обычного четырехсловного окна процессор восстанавливает значения программного счетчика и регистра состояния из  стека, увеличивает указатель стека на 8 и возобновляет обычное выполнение команд.

В случае временного четырехсловного  стекового  окна  процессор считывает значение регистра состояния из окна, увеличивает указатель активного стека на 8, загружает считанное значение в регистр состояния и вновь начинает выполнение  команды  RTE.  Это означает, что процессор считывает новое слово формата из окна в вершине активного стека (который может быть, а может и не  быть тем же стеком, что и в предыдущей операции) и выполняет  действия, предусмотренные для данного типа  формата.  В  большинстве случаев временное окно создается в стеке прерываний и  при  его разборке будут установлены биты S и M. В этом случае в  вершине основного стека находится обычное четырехсловное окно или десятисловное окно внутрикомандного исключения сопроцессора.  Впрочем, второе окно может иметь любой формат  (в  том  числе  быть временным) и располагаться в любом из трех системных стеков.

В случае шестисловного стекового окна регистр состояния и программный счетчик восстанавливаются из стека, указатель активного стека супервизора увеличивается на 12 и возобновляется  обычное выполнение команд.

В случае стекового окна внутрикомандного исключения сопроцессора из стека извлекаются и помещаются в соответствующие внутренние регистры значения: регистра состояния, программного счетчика, адреса команды, внутренних регистров и вычисленные исполнительные адреса. Указатель стека увеличивается на 20. Затем процессор считывает регистр ответа сопроцессора, породившего  исключение, с тем, чтобы определить, какая  операция  должна  быть выполнена следующей.

В случае и длинного, и короткого окна исключения по ошибке шины прежде всего проверяется допустимость кода формата. Кроме того, в случае длинного окна, проверяется соответствие номера  версии процессора, осуществляющего попытку считывания этого окна,  номеру версии, хранящемуся в стеке. Номер располагается в длинном стековом окне, в старшем полубайте (биты с 15 по  12)  слова  с адресом SP+54. Эта проверка корректности используется для того, чтобы в двухпроцессорных системах обеспечить правильную интерпретацию данных командой RTE. Если окно будет расценено как  недействительное или как недоступное, то будет возбуждено  исключение по ошибке формата или по ошибке шины,  соответственно.  В

противном случае процессор считывает целиком данные из стекового окна, помещает их в соответствующие внутренние регистры, освобождает соответствующий стек и возобновляет обычное  выполнение команд. Возникновение ошибки шины после того, как процессор приступит к считыванию окна, крайне нежелательно, ибо оно  повлечет переход процессора в режим тяжелого останова. Более  подробная информация о поведении процессора после считывания  окна во внутренние регистры приведена в разделе  6.4  ВОССТАНОВЛЕНИЕ

ПОСЛЕ ОШИБКИ ШИНЫ.

Если во время выполнения команды RTE (обусловленной исключением либо по одной из вышеописанных ошибок,  либо  по  недопустимому коду формата), возникнет новая ошибка шины или формата, то процессор создаст окно исключения по ошибке шины или обычное четырехсловное окно поверх окна, которое он  пытался  использовать.

При этом ошибочное окно останется неизменным и может быть проанализировано и откорректировано процедурой обслуживания  исключения по ошибке шины или формата,  либо,  в  мультипроцессорной системе, использовано другим процессором иного типа  (например,

MC68010, MC68012 или будущими членами семейства M68000).

6.4 ВОССТАНОВЛЕНИЕ ПОСЛЕ ОШИБКИ ШИНЫ

В проблеме восстановления после ошибки шины есть  два  аспекта: