Zapis do portu 0cf8h kończy się niepowodzeniem z segfault

Mam procesor AMD modelu e2-2000. To jest rodzina 0fh. Według rodziny 0fh BKDG mam ten kod do odczytu identyfikatora urządzenia i dostawcy:

ReadPCIConfiguration:
movq    $0x80000100, %rax
movq    $0x0cf8, %rdx
outl    %eax, %dx          # sigsegv caught here
movq    $0x0cfc, %rdx
inl     %dx, %eax
ret

O ile wiem algorytm odczytu / zapisu konfiguracji PCI wygląda następująco:

wpisz numer docelowej magistrali, numer funkcji numeru urządzenia i numer przesunięcia lub rejestru do portu adresu konfiguracjiwykonać 1-, 2- lub 4-bajtową operację r / w z / do portu danych konfiguracyjnych

Porty 0xcf8..0xcfb - port adresu konfiguracji (doubleword)

Znaczenie bitów:

31 - EnReg - włącz transakcję (R / W)24..31 - zarezerwowane (R / O)16..23 - BusNum (R / W)11..15 - DevNum (R / W)8..10 - FuncNum (R / W)2..7 - RegNum (R / W)0..1 - Zarezerwowane (R / O)

Więc piszę do autobusu - 0, dev - 0, func - 1, reg - 00

czy robię coś źle?

(Używam skompilowanej i połączonej aplikacji z przestrzeni użytkownika, GNU / Debian "Wheezy" Linux 3.11.6)

questionAnswers(1)

yourAnswerToTheQuestion