PCI BIOS. Функции PCI BIOS используются только для поиска и конфигурирования уст­ройств PCI —

Функции PCI BIOS используются только для поиска и конфигурирования уст­ройств PCI — процедур, требующих доступа к их конфигурационному простран­ству (см. п. 8.2). Регулярная работа с этими устройствами выполняется через об­ращения к регистрам устройств по адресам, полученным при конфигурировании, и обработке известных номеров прерываний от этих устройств. Для 16-битного интерфейса реального режима, V86 и 16-битного реального режима, функции PCI BIOS вызываются через прерывание Int lAh; номер функции задается при вызо­ве в регистре АХ. Возможна и программная имитация прерывания дальним вызо-


496 Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

вом по физическому адресу OOOFFE6EH (стандартная точка входа в обработчик Int lAh PCI BIOS. Функции PCI BIOS используются только для поиска и конфигурирования уст­ройств PCI —) с предварительным занесением в стек регистра флагов.

Признаком нормального выполнения является CF=0 и АН=0; при CF-1 АН содер­жит код ошибки:

♦ 81h — неподдерживаемая функция;

♦ 83h — неправильный идентификатор производителя;

♦ 86h — устройство не найдено;

♦ 87h — неправильный номер регистра PCI.

Вызовы требуют глубокого стека (до 1024 байт). Для 32-разрядных вызовов защи­щенного режима все эти же функции вызываются через точку входа, найденную через каталог 32-разрядных сервисов (см. выше), при этом назначение входных и выходных регистров и флага CF сохраняется. До использования 32-разрядного интерфейса следует сначала найти его каталог и убедиться в наличии сервисов PCI. Функции PCI BIOS перечислены ниже:

♦ АХ - В101Н — проверка PCI BIOS. Функции PCI BIOS используются только для поиска и конфигурирования уст­ройств PCI — присутствия PCI BIOS. При наличии PCI BIOSвоз­вращает CF=0, АН=0 и EDX=20494350h (строка символов "PCI "); проверяться должны все три признака. При этом в AL находится описатель аппаратного механизма доступа к конфигурационному пространству и генерации специаль­ных циклов PCI:

• Бит 0 — поддержка механизма №1 для доступа к конфигурационному про­странству;

• Бит 1 — поддержка механизма №2 для доступа к конфигурационному пространству;

• Биты 2:3=00 (резерв);

• Бит 4 — поддержка генерации специального цикла по механизму №1;

• Бит 5 — поддержка генерации специального цикла по механизму №2;

• Биты 6:7=00 (резерв).

В регистрах ВН и BL возвращается старший и младший номер версии (BCD-циф­ры), в CL — максимальный номер шины PCI, присутствующий в системе (число шин +1, поскольку они PCI BIOS. Функции PCI BIOS используются только для поиска и конфигурирования уст­ройств PCI — нумеруются с нуля последовательно). В регистре EDI может возвращаться линейный адрес точки входа 32-разрядных сервисов BIOS. Этот адрес возвращается не всеми версиями BIOS (некоторые не изменяют EDI); для проверки можно при вызове обнулять EDI и проверять на нуль возвращенное значение.

♦ АХ = В102Н — поиск устройства по идентификатору. При вызове в СХ указыва­ется идентификатор устройства, в DX — идентификатор производителя, в SI —индекс (порядковый номер) устройства. При успешном возврате в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции. Для нахожде­ния всех устройств с указанными идентификаторами вызовы выполняют, по­следовательно инкрементируя SI от 0 до получения кода PCI BIOS. Функции PCI BIOS используются только для поиска и конфигурирования уст­ройств PCI — возврата 86h.


12.9. Расширения ROM BIOS__________________________________________ 497

♦ AX = B103h — поиск устройства по коду класса. При вызове в ЕСХ[23:16] указы­вается код класса, в ЕСХ[15:8] — подкласса, в ЕСХ[7:0] — интерфейс, в SI — ин­декс устройства (аналогично предыдущему). При успешном возврате в ВН —номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции.



♦ АХ - B106h — генерация специального цикла PCI. При вызове в BL указывается номер шины, в EDX — данные специального цикла.

♦ АХ = В108h — чтение байта конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh). При успешном возврате в CL — счи PCI BIOS. Функции PCI BIOS используются только для поиска и конфигурирования уст­ройств PCI —­танный байт.

♦ АХ = B109h — чтение слова конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh, четный). При успешном возврате в СХ — считанное слово.

♦ АХ = В10Ah — чтение двойного слова конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh, кратный 4). При ус­пешном возврате в ЕСХ — считанное двойное слово.

♦ АХ = В 10Bh — запись байта конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер PCI BIOS. Функции PCI BIOS используются только для поиска и конфигурирования уст­ройств PCI — функции, в DI — номер регистра (О-FFh), в CL — записываемый байт.

♦ АХ = В10СН — запись слова конфигурацгЛрнного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh, четный), в СХ — записываемое слово.

♦ АХ = BWAh — запись двойного слова конфигурационного пространства устрой­ства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh, кратный 4), в ЕСХ — записываемое двойное слово.


documentamqmcxl.html
documentamqmkht.html
documentamqmrsb.html
documentamqmzcj.html
documentamqngmr.html
Документ PCI BIOS. Функции PCI BIOS используются только для поиска и конфигурирования уст­ройств PCI —