Поддержка механизма модульности. Уровни доступа. Слова расширения. Использование команд CAS/CAS2 в системных программах, страница 4

D.2.3.2.1 Регистр текущего уровня доступа (CAL).  Этот  регистр содержит код доступа пользовательского модуля, выполняемого   в настоящий момент. Размер регистра составляет 8 бит; используются  только 3 старших бита - остальные считываются как нулевые и игнорируются при записи. Регистр автоматически загружается  при выполнении команд CALLM и RTM процессора MC68020.

D.2.3.2.2  Регистр  предшествующего  уровня доступа (VAL). Этот регистр содержит код доступа модуля, вызвавшего посредством команды CALLM модуль, выполняемый в настоящий момент . Размер регистра составляет 8 бит; используются только 3 старших  бита  остальные  считываются  как  нулевые и игнорируются при записи.

Регистр автоматически загружается содержимым регистра  CAL  при выполнении команды CALLM процессором MC68020.

D.2.3.2.3  Регистр  управления сменой стека (SCC). 8-битный регистр SCC инициализируется операционной системой. Его  содержимое  определяет дисциплину смены стека при операциях вызова модуля. Если текущий уровень доступа имеет значение n и процессором MC68020 вызывается более привилегированный модуль с уровнем доступа m, где m < n, то производится анализ  регистра  SCC.  В

случае,  если какой-либо бит регистра в позициях с n по m включительно окажется равным единице, процессору MC68020 высылается требование сменить стек.

D.2.3.3 Интерфейсные регистры управления доступом устройства MC68851

D.2.3.3.1 Регистр текущего уровня (CL). Обращение  центрального процессора  к этому 8-битному регистру возможно только с запросом на считывание. При этом в битах 7-5 считывается  содержимое регистра  CAL, а в битах 3-1 - содержимое регистра VAL. Регистр используется командой CALLM процессора MC68020.

D.2.3.3.2 Регистр статуса доступа (AS). Обращение  центрального процессора  к этому 8-битному регистру возможно только с запросом на считывание. Регистр содержит код статуса  запрашиваемого процессором MC68020 нового значения уровня доступа, т.е. оценку этого  уровня, данную устройством MC68851: отличен ли он от текущего,  допустимо  ли предполагаемое изменение уровня доступа, есть ли необходимость  в  смене  стека.  Выработка кода статуса производится на основании кодов  в  регистрах  текущего  уровня доступа (CAL) и управления сменой стека (SCC), а также либо кода  в  регистре повышения уровня доступа (IAL), либо кода в регистре понижения уровня доступа (DAL).

D.2.3.3.3 Регистр повышения  уровня  доступа  (IAL).  Обращение центрального  процессора  к  этому  8-битному регистру возможно только с запросом на запись. При выполнении команды CALLM, если значение старших трех битов регистра IAL окажется  меньшим  или равным  значению соответствующих битов регистра CAL (т.е. вызывается  более или столь же привилегированный модуль), то запрос считается допустимым и  устройством  осуществляется  последовательное перемещение содержимого регистров CAL в VAL, IAL в CAL;

в  противном случае в регистре статуса доступа будет установлен код ошибки формата.

D.2.3.3.4  Регистр  понижения  уровня  доступа (DAL). Обращение центрального процессора к  этому  8-битному  регистру  возможно только  с  запросом на запись. При выполнении команды RTM, если значение старших трех битов регистра DAL окажется  большим  или равным  значению  соответствующих битов регистра CAL (т.е. осуществляется возврат в менее или столь же привилегированный  модуль),  то  запрос считается допустимым и биты 7-5 регистра DAL

помещаются устройством в биты 7-5 регистра CAL, а биты 3-1 -  в биты  7-5  регистра  VAL; в противном случае в регистре статуса доступа будет установлен код ошибки формата.

D.2.3.3.5 Регистры адреса дескриптора. Это 32-битные регистры в устройстве MC68851, в которые процессор MC68020 помещает  адрес дескриптора модуля при выполняемом командой CALLM вызове модуля типа $01. Запись адреса производится в регистр, соответствующий тому адресному пространству, в котором располагается дескриптор

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

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

D.3 СЛОВА РАСШИРЕНИЯ

При написании программ, которые были бы переносимы с одной  модели  семейства процессоров М68000 на другую, следует учитывать ряд ограничений. Прежде всего, архитектура каждой новой  модели семейства  представляет  собой некоторое расширение архитектуры предыдущих моделей, так что новая модель всегда  совместима  по машинному коду с более ранними по принципу "снизу вверх". Таким образом, прикладные программы непосредственно переносятся с более  ранней  модели на более новую без всяких изменений. Далее, каждое из 65536 формально возможных операционных слов полностью декодируется всеми процессорами и в том случае, когда  встречается  код  операции, не реализованный в данном процессоре, возбуждается исключение. Следовательно, если программа, написанная для новой модели семейства, будет выполняться на более  ранней, то  команды нового процессора, не реализованные в старом, будут перехвачены и могут быть программно эмулированы в рамках старой системы. Следует, однако, учесть, что на корректность  проверяется лишь первое слово команды; в случае, если этим словом предусматривается  наличие  дополнительных слов, те предполагаются корректными и проверке не подвергаются.

На слова расширения следует обращать особое  внимание  при  использовании  некоторых способов адресации MC68020. В частности, косвенные способы адресации через адресный регистр и через  память  с  индексированием  и  косвенные  способы адресации через программный счетчик с индексированием представляют собой расширения  соответствующих  способов  адресации  MC68000,  MC68008,

MC68010  и  MC68012.  Слова  расширения, используемые при таких способах задания исполнительных адресов, показаны  на  Рис.D-5.

Как  видно  из  этого рисунка, кодировка косвенной адресации по адресному регистру  с  индексированием  на  MC68020 с единичным масштабным  множителем  (Масштаб=00)   эквивалентна   кодировке