ОБРАБОТКА СПЕЦИФИЧЕСКИХ ИСКЛЮЧЕНИЙ

         СБОЙ ШИНЫ (MC68010 )

    Последовательность этапов обработки исключения по сбою шины немного отличается от обработки исключений групп 1 и 2. В дополнение к четырем шагам, выполняемым при обработке любых других исключений, выполняется заненсение в стек 22 слов дополнительной информации. Эта информация отражает внутреннее состояние процессора во время сбоя шины и перегружается инструкцией RTE для продолжения инструкции, вызвавшей ошибку. Рис.6.8 показывает расположение информации в стеке.
   Сохраненное значение программного счетчика необязательно указывает на инструкцию, которая выполнялась в момент сбоя шины, но должно указывать на ячейку, смещенную пять слов. Это увеличение объясняется механизмом опережающей выборки MC68010, при котором всегда выбирается новое слово инструкции, если предыдущее выбранное слово использовано. Однако, в стек заносится достаточно информации для обработчика исключения по сбою шины с целью определения причин возникновения отказа шины. Эта информация содержит адрес, к которому производился доступ, коды функции для доступа, был ли этот доступ для записи или чтения и внутренний регистр, участвующий в передаче. Ошибочный адрес операционная система может использовать для определения участка виртуальной памяти, необходимого для перемещения требуемых данных в физическую память. Инструкция RTE используется для перезагрузки внутренних блоков процессора при возникновении ошибки. Затем перезапускается ошибочный шинный цикл, и завершается отложенная инструкция. Если был нарушен цикл "Чтение-Модификация-Запись", то перезапускается весь цикл независимо от того, возникла ошибка при операции чтения или записи.
    Альтернативный способ обработки сбоя шины заключается в программном завершении ошибки доступа. Использование этого метода требует специального слова состояния, буфера ввода инструкций, буфера ввода данных и образа буфера вывода данных. Формат специального слова состояния показан на рис.6.9. Если шинный цикл является циклом чтения, то данные по отказанному адресу должны быть записаны в отображение буфера входных данных, буфер входных инструкций или оба буфера согласно битам выборки данных (DF) и выборки инструкций (IF). (Если нарушение доступа произошло при байтовой операции, данные должны быть перемещены из или в наименее значимый байт образа буфера ввода или вывода данных, если не установлен бит передачи старшего байта (HB). Это наблюдается тогда, когда ошибка вызвана инструкцией MOVEP во время передачи битов 8-15 слова или длинного слова, или битов 24-31 длинного слова.)

         ОШИБКА АДРЕСА

   Исключение по ошибке адреса возникает, когда процессор пытается обратиться к операнду длиной слово, длинное слово или к инструкции по нечетному адресу. Ошибка адреса подобна внутренне генерируемому сбою шины. Шинный цикл прекращается, процессор прекращает текущую обработку и начинает обработку исключения. Последовательность обработки исключения та же, что и при исключении по сбою шины, включая информацию о стеке. Однако, номер вектора указывает на вектор ошибки адреса. Кроме того, когда ошибка адреса происходит во время обработки сбоя шины, ошибки адреса или сброса, процессор останавливается.
    В процессоре MC68010 при исключении по ошибке адреса в стеке сохраняется та же информация, что и при исключении по сбою шины. Поэтому инструкция RTE может быть использована для продолжения выполнения отложенной инструкции. Однако, если флаг RR не установлен, при повторении цикла применяется адрес ошибки, и возникает другое исключение по ошибке адреса. Значит, перед продолжением инструкции пользователь должен быть уверен в том, что внесены поправки в образ стека и регистры пользователя. Если необходимо, то при корректной программной поддержке обработчик исключения по ошибке адреса может эмулировать доступ к слову или длинному слову по нечетному адресу.