Цитата(lsvmo @ Feb 8 2012, 16:30)

В командном регистре, который в конфигурационном пространстве PCI по смещению 0x04, стоит Memory Space Enable.
Собственно, зачем дался? Разрабатываем PCI-E плату, хочу понять, как этот механизм работает, как вот этот самый код, который выполняется до передачи управления ОС, сочетается с дальнейшим использованием регистра XROMBAR.
Под BIOS'ом читаю через регистры 0xCFC, 0xCF8. Конфигурационное пространство PCI устройств доступно. Да и вообще для этого также существует механизм прерывания 1Ah.
Все верно, в PCI Cfg вы залезаете через указанные вами два смещения. Но смещение в регистре XROMBAR - лежит уже в адресном пространстве PCI Memory! Вы должны сначала узнать с какого адреса в адресах процессора меппится PCI Memory, и потом уже к этому значению добавить свой XROMBAR. Если я правильно вас понял
p.s.
CODE
The PC-compatible specific set of steps for the system POST code when handling each
expansion ROM are:
1. Map and enable the expansion ROM to an unoccupied area of the memory address
space.
2. Find the proper image in the ROM and copy it from ROM into the compatibility area
of RAM (typically 0C0000h to 0E0000h) using the number of bytes specified by
Initialization Size.
3. Disable the Expansion ROM Base Address register.
4. Leave the RAM area writable and call the INIT function.
5. Use the byte at offset 02h (which
В общем, вам нужно узнать куда меппится PCI Memory(или самому настроить окно), самому прописать EXROMBAR(через pci-cfg) и только потом уже делать дамп.
p.p.s. это всё также означает, что EXROMBAR_Ena не обязательно опускать. Если ОС считает, что зарезервированная в PCI MEm область (под EXROM) никому не мешает, то EXROMBAR_Ena можно и не гасить.