// gcc -O -o read-cfgreg-with-ioport read-cfgreg-with-ioport.c #include #include typedef unsigned long u32; int main(){ int i; int dat; iopl(3); u32 bus = 4, dev = 9; u32 adr = (bus << 16) | (dev << 11); dat = 0; for(i=0; i < 4; i++) { outl(adr|0x80000000 + i * 4, 0xcf8); dat |= ((inl(0xcfc) >> 2 & 3) << (i * 2)); } printf("%02X\n", dat); outl(0x00000000, 0xcf8); iopl(0); return 0; }