Уточнение по формату адресного регистра контроллера PCI
В ряде чипсетов (в частности, это VIA-шные Apollo VPX и KT133) младшие два бита значения смещения "не устанавливаются" (всегда равны 0).
Это отражено в даташитах:
Цитата:
Port CFB-CF8 - Configuration Address ......................... RW
31 Configuration Space Enable
0 Disabled .................................................default
1 Convert configuration data port writes to
configuration cycles on the PCI bus
30-24 Reserved ........................................ always reads 0
23-16 PCI Bus Number
Used to choose a specific PCI bus in the system
15-11 Device Number
Used to choose a specific device in the system
10-8 Function Number
Used to choose a specific function if the selected
device supports multiple functions
7-2 Register Number
Used to select a specific DWORD in the device’s
configuration space
1-0 Fixed ........................................ always reads 0
Таким образом можно установить только смещения, кратные 4-м.
Для 8- и 16-битных операций с регистрами, смещение которых не кратно 4, биосы используют прямое обращение к портам CFC-CFF.
Так, для чтения регистра 63 надо установить смещение 60 и прочитать из порта CFE.
Уточнение по формату адресного регистра контроллера PCI
В ряде чипсетов (в частности, это VIA-шные Apollo VPX и KT133) младшие два бита значения смещения "не устанавливаются" (всегда равны 0).
Это отражено в даташитах:
Таким образом можно установить только смещения, кратные 4-м.
Для 8- и 16-битных операций с регистрами, смещение которых не кратно 4, биосы используют прямое обращение к портам CFC-CFF.
Так, для чтения регистра 63 надо установить смещение 60 и прочитать из порта CFE.