Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






PCI BIOS






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


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

вом по физическому адресу OOOFFE6EH (стандартная точка входа в обработчик Int lAh) с предварительным занесением в стек регистра флагов.

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

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

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

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

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

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

♦ АХ - В101Нпроверка присутствия 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, поскольку они нумеруются с нуля последовательно). В регистре EDI может возвращаться линейный адрес точки входа 32-разрядных сервисов BIOS. Этот адрес возвращается не всеми версиями BIOS (некоторые не изменяют EDI); для проверки можно при вызове обнулять EDI и проверять на нуль возвращенное значение.

АХ = В102Н — поиск устройства по идентификатору. При вызове в СХ указыва­ется идентификатор устройства, в DX — идентификатор производителя, в SI —индекс (порядковый номер) устройства. При успешном возврате в ВН — номер шины, в BL[7: 3] — номер устройства, BL[2: 0] — номер функции. Для нахожде­ния всех устройств с указанными идентификаторами вызовы выполняют, по­следовательно инкрементируя SI от 0 до получения кода возврата 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 — счи­танный байт.

♦ АХ = 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] — номер функции, в DI — номер регистра (О-FFh), в CL — записываемый байт.

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

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.